SurSolver

How to solve reCAPTCHA v3

reCAPTCHA v3 has no checkbox: it scores each action and the site decides what to do with the score. Here is how to find the key and the action, and how to use the token.

Updated

Charged when a task is accepted

On this page

What is reCAPTCHA v3 and how to recognise it

reCAPTCHA v3 is Google's invisible, score-based check. There is no checkbox and no image grid. A script observes the visit and, for each protected action, returns a score from 0.0 (very likely a bot) to 1.0 (very likely a human). The site's own server decides what each score means — v3 does not block anyone by itself — and a common pattern is to fall back to a v2 challenge when the score is low.

Kaggle's login form with the small reCAPTCHA v3 badge in the corner and no checkbox (an enterprise.js render)

A page that uses v3 usually loads api.js?render= followed by the site key, and calls grecaptcha.execute with an action name when the visitor submits. The Enterprise edition works the same way but loads enterprise.js and calls grecaptcha.enterprise.execute; its requests go to /enterprise/anchor instead of /api2/anchor.

The solve returns a token as gRecaptchaResponse. It is single-use and valid for about two minutes — reportedly a shorter window than a v2 token — and the action it was made for is embedded in it.

Extension, API or automation?

There is no browser extension: SurSolver is an HTTP API that you call from your own code with createTask and getTaskResult.

For v3 nothing is visible on the page, so a plain HTTP client is often enough: request the token, then send it as the g-recaptcha-response field of the request the page would have made. A Playwright, Puppeteer or Selenium script is only needed when the page itself must run a callback.

How to find the reCAPTCHA v3 parameters

The site key is in the page's script URL (api.js?render=KEY), in the first argument of grecaptcha.execute('KEY', ...), in a data-sitekey attribute, or as the k parameter of the anchor request in the Network tab.

Global search in DevTools for grecaptcha.execute: the matched line shows the site key and the page's own action

The action is the part that people miss. Open DevTools, press Ctrl+Shift+F and search for grecaptcha.execute: the value of action in the second argument (login, submit, register and so on) is your pageAction. If the call is buried in minified code, wrap window.grecaptcha.execute in the console before you trigger the protected action and log its arguments: the logged action is the one to send. Guessing the action is the main reason v3 solves fail, so find it first.

On an Enterprise page, search the inline scripts for grecaptcha.enterprise.render: extra fields such as s go in enterprisePayload and expire quickly, so copy them right before creating the task. The page URL is the full address of the page that runs the check.

Where the token goes

Send the token where the page would send its own: usually the g-recaptcha-response field of the form or the POST body of the protected request. Some pages use a suffixed field name, such as g-recaptcha-response-100000, so submit the form manually once with DevTools open and copy the exact field name from the Network tab. Other pages read the token from the hidden g-recaptcha-response textarea or pass it to a callback function.

The page's own verification request in the Network panel; its payload view lists the action and the token

Use the user agent from the solution for the submission when one is reported. The token is single-use and short-lived, so submit it as soon as it arrives. The site then verifies the token with Google and reads the score, the action and the hostname from the verification response.

Common mistakes

The biggest one is an action mismatch. pageAction must equal what the page passes to grecaptcha.execute, character for character; a token made for a different action is rejected even if its score is high. The second is the site's own score threshold: the site decides what score is good enough, and a token that falls short is rejected even though it verifies with Google.

IP reputation is reported to affect scores — datacenter and VPN addresses tend to score lower — which matters when you choose the proxy variant. If you use your own proxy and it authenticates by IP address, that IP has to be whitelisted with your proxy provider first. The proxyless task name is the default and is usually enough.

The remaining mistakes are about the page. A token that is older than about two minutes or already used is rejected as timeout-or-duplicate. A stale enterprisePayload.s fails the solve. And an invisible v2 widget looks almost identical to v3, so confirm which one the page runs: userverify requests with the key appear only for invisible v2.

Solve it with SurSolver

Send the page URL, the site key and the action as pageAction to createTask with the task type ReCaptchaV3TaskProxyLess (or ReCaptchaV3Task to solve through your own proxy). For Enterprise pages use ReCaptchaV3EnterpriseTaskProxyLess or ReCaptchaV3EnterpriseTask. Poll getTaskResult until the status is ready; the solution carries gRecaptchaResponse and, when the solver reports one, the userAgent. The accepted names and parameters are listed by the public catalog (GET /v1/task-types).

FAQ

How do I solve reCAPTCHA v3 automatically?

Send the page URL, the site key and the page action in a createTask call with the task type ReCaptchaV3TaskProxyLess, then poll getTaskResult. Submit the returned gRecaptchaResponse with the request that the page protects. The token is single-use, so solve right before you need it.

Where do I find the reCAPTCHA v3 action?

Search the page source in DevTools (Ctrl+Shift+F) for grecaptcha.execute. The action is the value of the action field in its second argument, for example login or submit. Send it as pageAction exactly as written.

Do I need a proxy for reCAPTCHA v3?

Usually not: send the proxyless task name. IP reputation is reported to affect v3 scores, so if the site keeps rejecting tokens, retry with the proxy variant and a clean residential address.

Why is my reCAPTCHA v3 token rejected?

Most often the action differs from the one the page passes to grecaptcha.execute, or the site applies a score threshold the token does not meet. Other causes are a token that is older than about two minutes or was used twice, and a page that actually runs invisible v2 or Enterprise.

Is reCAPTCHA v3 the same as invisible reCAPTCHA v2?

No. Both are invisible, but v3 returns a score for an action while invisible v2 shows a challenge when triggered. In the Network tab, a userverify request with your key appears only for invisible v2, so check before choosing the task type.

From the blog

No posts yet — read the blog for new guides and release notes.