reCAPTCHA v3 is one of the most common CAPTCHAs on the web — and one of the trickiest to automate. Unlike v2, it runs silently in the background and assigns a score from 0.0 to 1.0 to every user. A score below 0.5 gets blocked. This guide shows you how to solve it programmatically using an API.
What is reCAPTCHA v3?
reCAPTCHA v3 doesn't show a challenge to the user. Instead, it monitors behavior (mouse movements, scroll, time on page) and returns a score. Your automation needs to return a valid token with a score of at least 0.7 to pass most implementations.
The key parameters you need:
- sitekey — found in the page source, looks like
6Le... - url — the page URL where the CAPTCHA is embedded
- action — the reCAPTCHA action name (e.g.
submit,login)
Finding the sitekey and action
Open DevTools → Network tab → filter by recaptcha. Look for a request containing render= followed by the sitekey. The action appears in the page JavaScript as grecaptcha.execute('KEY', {action: 'ACTION'}).
Solving reCAPTCHA v3 with Ocilar
cURL
curl -X POST https://api.ocilar.com/api/v1/solve/recaptcha \
-H "X-API-Key: sk-your_key" \
-H "Content-Type: application/json" \
-d '{
"version": "v3",
"sitekey": "6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI",
"url": "https://example.com/login",
"action": "login"
}'
# Response
{"token":"03AGdBq25...","score":0.9,"latency_ms":3200,"credits_used":1} Python
from ocilar import OcilarClient
client = OcilarClient(api_key="sk-your_key")
result = client.solve_recaptcha(
version="v3",
sitekey="6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI",
url="https://example.com/login",
action="login"
)
print(result.token) # "03AGdBq25..."
print(result.score) # 0.9 Node.js
import { OcilarClient } from '@ocilar/sdk'
const client = new OcilarClient({ apiKey: 'sk-your_key' })
const { token, score } = await client.solveRecaptchaV3({
sitekey: '6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI',
url: 'https://example.com/login',
action: 'login'
})
console.log(token, score) // "03AGdBq25..." 0.9 Submitting the token
Once you have the token, inject it into the form before submitting. With Playwright:
await page.evaluate((token) => {
document.querySelector('[name="g-recaptcha-response"]').value = token
document.querySelector('[name="g-recaptcha-response-v2"]').value = token
}, token)
await page.click('#submit-btn') With Selenium (Python):
driver.execute_script(
f'document.getElementById("g-recaptcha-response").innerHTML="{token}";'
)
driver.find_element(By.ID, "submit").click() Score guarantee
Pricing
reCAPTCHA v3 costs $0.18 per 1,000 solves on PAYG. That's 16× cheaper than 2Captcha ($2.99/1k) and over 4× cheaper than CapSolver.
| Service | reCAPTCHA v3 / 1K | Score guarantee |
|---|---|---|
| 2Captcha | $2.99 | No |
| CapSolver | $0.80 | No |
| Anti-Captcha | $0.95 | No |
| Ocilar | $0.18 | 0.7+ guaranteed |
FAQ
How long does it take to solve reCAPTCHA v3?
Average latency is 2–5 seconds. The token is valid for 120 seconds from the moment it's issued, so submit it quickly after receiving it.
Does reCAPTCHA v3 detect API-based solving?
When solved via a legitimate browser context (which Ocilar uses), the token is indistinguishable from a real user's. The score returned reflects real browser signals.
What if the token expires?
Request a new token. Ocilar's API is stateless — each request returns a fresh token.
Can I solve reCAPTCHA v2 too?
Yes. Use "version": "v2" in the request body. Pricing is $0.12/1K. See the full API docs.