How to Solve reCAPTCHA v3 with an API (2026 Guide)

Step-by-step guide to bypassing reCAPTCHA v3 programmatically. Python, Node.js, and cURL examples with guaranteed 0.7+ score.

March 16, 2026 · 5 min read

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:

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

Ocilar guarantees a reCAPTCHA v3 score of 0.7 or higher. If the score is below 0.7, you are not charged and the request is retried automatically.

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.

ServicereCAPTCHA v3 / 1KScore guarantee
2Captcha$2.99No
CapSolver$0.80No
Anti-Captcha$0.95No
Ocilar$0.180.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.

Try Ocilar free

1,000 free solves. No credit card required.

Get API Key