Skip to content
Troubleshooting

reCAPTCHA v3 returns low score — pushing it above 0.7

Your reCAPTCHA v3 verify call returns scores in the 0.1–0.3 band — well below the 0.5–0.7 threshold most backends enforce. Real users on the same site land in the 0.7–0.9 band.

Cause

reCAPTCHA v3 scores the page environment continuously. A scraper that doesn't move the mouse, navigates faster than humans, or runs from a flagged IP range produces consistently low scores. v3 doesn't challenge — it just downgrades.

Fix

Replace your in-session grecaptcha.execute call with a Sonic-issued v3 token. Sonic scores the page from a clean fingerprint pool that consistently lands in the 0.7–0.9 band. Pass the page action string so the token matches the backend's verify call.

Runnable example
from captchasonic import CaptchaSonic
import requests

sonic = CaptchaSonic('YOUR_API_KEY')
result = sonic.solve(
    type='RecaptchaV3TaskProxyless',
    website_url='https://example.com/checkout',
    website_key='6Lc-...',
    page_action='checkout',
    min_score=0.7,
)
print('score:', result.score)  # typically 0.79

requests.post(
    'https://example.com/api/submit',
    data={'g-recaptcha-response': result.gRecaptchaResponse, 'amount': 100},
)

Frequently asked questions

reCAPTCHA v3 considers IP reputation, fingerprint freshness, and concurrent traffic. Sonic's pool rotates fingerprints so the trailing-30-day average score stays around 0.79.

Don't — fraud rings target sites with low thresholds. Keep the threshold at 0.7+ for genuine signal, and use a real-score solver for legitimate automation.

Indirectly — Google scores the (token, action) tuple. A mismatch causes verify to reject the token regardless of score, so always pass the action the page declared.

Related guides