undetected-chromedriver auto-downloaded a ChromeDriver that does not match your installed Chrome major version. Pass your Chrome's major version explicitly: uc.Chrome(version_main=114) (replace 114 with yours, from Chrome menu -> Help -> About Google Chrome). It then downloads the matching driver and the session starts.
The error
SessionNotCreatedException: This version of ChromeDriver only supports Chrome version 114
Fix it
- Find your installed Chrome's major version
Open Chrome menu -> Help -> About Google Chrome, or run:
google-chrome --version
Expected: something like Google Chrome 138.0.7204.101. The major version is 138.
- Pin the driver to it
import undetected_chromedriver as uc
driver = uc.Chrome(version_main=138) # your major version from step 1
Expected: the session starts with no SessionNotCreatedException.
- Alternative: update Chrome itself
If you would rather move Chrome forward than pin the driver, update Chrome to the latest and call uc.Chrome() with no arguments. Expected: auto-downloaded driver and fresh Chrome agree.
When this applies
- the error names two different Chrome versions (supported vs current)
- Chrome auto-updated overnight and the scraper broke
- undetected-chromedriver downloaded the driver itself (you never placed one manually)
When it does NOT apply
cannot find Chrome binary means Chrome is not installed at all'chromedriver' executable needs to be in PATH is plain selenium without undetected-chromedriver
Compatibility
undetected-chromedriver 3.x with any Chrome. The version_main parameter exists across 3.x releases.
Variant phrasings
selenium.common.exceptions.SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version N
The same mismatch as wrapped by newer selenium. Same fix.
Why it happens
Chrome and ChromeDriver must share a major version. undetected-chromedriver downloads whatever driver is current at first run and caches it; when Chrome later updates (or the cache was built for a different Chrome), the cached driver refuses the session. version_main forces a download matching the Chrome you actually have.
Edge cases
- The driver cache lives in a user folder. Deleting the cached driver and re-running also forces a fresh download, but
version_main is the deterministic fix. - In CI, pin both: install a fixed Chrome version AND pass the same version_main, so neither side drifts.
- Brave and other Chromium forks report their own versions. Use the fork's major version the same way.