Troubleshooting

reCAPTCHA v3 Score Always 0.1: Root Causes and Fixes

A score of 0.1 means Google considers the interaction highly likely to be a bot. Here's why this happens and how to fix it with CaptchaAI.


How reCAPTCHA v3 Scoring Works

Score Meaning
0.9 Very likely human
0.7 Probably human
0.5 Uncertain
0.3 Probably bot
0.1 Very likely bot

Sites set their own threshold. Common thresholds:

  • Login forms: 0.5+
  • Registration: 0.7+
  • Checkout: 0.3+ (more lenient)

Root Cause 1: Wrong Action Parameter

The action parameter must match exactly what the site uses.

# WRONG — generic or missing action
data = {
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITEKEY",
    "pageurl": "https://example.com/login",
    "version": "v3",
    # No action specified — defaults to generic
    "json": 1,
}

# CORRECT — matching site's action
data = {
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "googlekey": "SITEKEY",
    "pageurl": "https://example.com/login",
    "version": "v3",
    "action": "login",  # Must match site's grecaptcha.execute action
    "json": 1,
}

How to Find the Correct Action

  1. Open target page → DevTools → Sources tab
  2. Search for grecaptcha.execute
  3. Find: grecaptcha.execute('sitekey', {action: 'submit'})
  4. Use that exact action value
import re
import requests


def extract_v3_action(page_url):
    """Extract reCAPTCHA v3 action from page source."""
    resp = requests.get(page_url, timeout=15)

    # Pattern: grecaptcha.execute('key', {action: 'value'})
    match = re.search(
        r"grecaptcha\.execute\([^,]+,\s*\{[^}]*action:\s*['\"]([^'\"]+)",
        resp.text,
    )
    if match:
        return match.group(1)

    return None


action = extract_v3_action("https://example.com/login")
print(f"Action: {action}")  # e.g., "login", "submit", "homepage"

Root Cause 2: Missing version=v3

Without the version parameter, CaptchaAI may treat it as v2:

# WRONG — treated as v2, returns checkbox token
data = {
    "method": "userrecaptcha",
    "googlekey": "V3_SITEKEY",
    "pageurl": "https://example.com",
    "json": 1,
}

# CORRECT — explicitly v3
data = {
    "method": "userrecaptcha",
    "googlekey": "V3_SITEKEY",
    "pageurl": "https://example.com",
    "version": "v3",
    "json": 1,
}

Root Cause 3: Using v2 Sitekey for v3

v2 and v3 use different sitekeys. Using the wrong one produces low scores.

def detect_recaptcha_version(page_url):
    """Detect whether page uses v2 or v3."""
    resp = requests.get(page_url, timeout=15)
    html = resp.text

    # v3 indicators
    if "recaptcha/api.js?render=" in html and "render=explicit" not in html:
        return "v3"
    if "grecaptcha.execute(" in html:
        return "v3"

    # v2 indicators
    if 'data-sitekey="' in html:
        return "v2"
    if "grecaptcha.render(" in html:
        return "v2"

    return "unknown"

Root Cause 4: Using min_score Incorrectly

min_score tells CaptchaAI the minimum acceptable score. If the achieved score is lower, CaptchaAI reports an error instead of returning a low-score token.

# Request score of 0.9 — may take longer or fail
data = {
    "method": "userrecaptcha",
    "version": "v3",
    "min_score": "0.9",  # Very strict
    # ...
}

# Request score of 0.3 — faster, more reliable
data = {
    "method": "userrecaptcha",
    "version": "v3",
    "min_score": "0.3",  # More lenient
    # ...
}

Recommended approach: Start with the site's threshold and increase if needed.


Complete Correct v3 Submission

import requests
import time


def solve_v3(api_key, sitekey, pageurl, action="submit", min_score="0.7"):
    """Solve reCAPTCHA v3 with correct parameters."""
    resp = requests.post("https://ocr.captchaai.com/in.php", data={
        "key": api_key,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": pageurl,
        "version": "v3",
        "action": action,
        "min_score": min_score,
        "json": 1,
    }, timeout=30)
    result = resp.json()

    if result.get("status") != 1:
        raise RuntimeError(f"Submit error: {result.get('request')}")

    task_id = result["request"]

    # Poll
    time.sleep(10)
    for _ in range(16):
        resp = requests.get("https://ocr.captchaai.com/res.php", params={
            "key": api_key, "action": "get",
            "id": task_id, "json": 1,
        }, timeout=15)
        data = resp.json()

        if data.get("status") == 1:
            return data["request"]
        if data["request"] != "CAPCHA_NOT_READY":
            raise RuntimeError(f"Solve error: {data['request']}")
        time.sleep(5)

    raise TimeoutError("v3 solve timeout")


# Usage
token = solve_v3(
    api_key="YOUR_API_KEY",
    sitekey="V3_SITEKEY",
    pageurl="https://example.com/login",
    action="login",
    min_score="0.7",
)

Troubleshooting

Issue Cause Fix
Score always 0.1 Wrong action parameter Extract correct action from page
Token works but site rejects Score below site threshold Increase min_score
v3 returns v2-style token Missing version=v3 Add version parameter
Score varies randomly Google's scoring algorithm Normal — use min_score filter

FAQ

Can CaptchaAI guarantee a specific score?

CaptchaAI aims for the minimum score you request via min_score. Typical results are 0.7-0.9. A score of exactly 0.9 is not guaranteed on every attempt.

What happens if the score is below min_score?

CaptchaAI returns an error instead of a low-score token. Your code should retry with a fresh request.

Does the action parameter affect the score?

Yes. Using the wrong action typically results in lower scores. Google validates that the action matches what the site expects.



Get high v3 scores — solve with CaptchaAI.

Discussions (0)

No comments yet.

Related Posts

Reference CAPTCHA Token Injection Methods Reference
Complete reference for injecting solved CAPTCHA tokens into web pages.

Complete reference for injecting solved CAPTCHA tokens into web pages. Covers re CAPTCHA, Turnstile, and Cloud...

Automation Python reCAPTCHA v2
Apr 08, 2026
API Tutorials CaptchaAI API Latency Optimization: Faster Solves
Reduce CAPTCHA solve latency with Captcha AI by optimizing poll intervals, connection pooling, prefetching, and proxy selection.

Reduce CAPTCHA solve latency with Captcha AI by optimizing poll intervals, connection pooling, prefetching, an...

Automation Python reCAPTCHA v2
Feb 27, 2026
Use Cases Multi-Step Checkout Automation with CAPTCHA Solving
Automate multi-step e-commerce checkout flows that include CAPTCHA challenges at cart, payment, or confirmation stages using Captcha AI.

Automate multi-step e-commerce checkout flows that include CAPTCHA challenges at cart, payment, or confirmatio...

Automation Python reCAPTCHA v2
Mar 21, 2026
Comparisons Headless vs Headed Chrome for CAPTCHA Solving
Compare headless and headed Chrome for CAPTCHA automation — detection differences, performance trade-offs, and when to use each mode with Captcha AI.

Compare headless and headed Chrome for CAPTCHA automation — detection differences, performance trade-offs, and...

Automation Python reCAPTCHA v2
Mar 09, 2026
Use Cases CAPTCHA Solving in Ticket Purchase Automation
How to handle CAPTCHAs on ticketing platforms Ticketmaster, AXS, and event sites using Captcha AI for automated purchasing workflows.

How to handle CAPTCHAs on ticketing platforms Ticketmaster, AXS, and event sites using Captcha AI for automate...

Automation Python reCAPTCHA v2
Feb 25, 2026
Tutorials Solving reCAPTCHA v2 with Python Requests and CaptchaAI
Step-by-step guide to solving re CAPTCHA v 2 using Python's requests library and Captcha AI API.

Step-by-step guide to solving re CAPTCHA v 2 using Python's requests library and Captcha AI API. Includes comp...

Automation Python reCAPTCHA v3
Feb 24, 2026
Reference Browser Session Persistence for CAPTCHA Workflows
Manage browser sessions, cookies, and storage across CAPTCHA-solving runs to reduce repeat challenges and maintain authenticated state.

Manage browser sessions, cookies, and storage across CAPTCHA-solving runs to reduce repeat challenges and main...

Automation Python reCAPTCHA v2
Feb 24, 2026
Tutorials Caching CAPTCHA Tokens for Reuse
Cache and reuse CAPTCHA tokens with Captcha AI to reduce API calls and costs.

Cache and reuse CAPTCHA tokens with Captcha AI to reduce API calls and costs. Covers token lifetimes, cache st...

Automation Python reCAPTCHA v2
Feb 15, 2026
Use Cases CAPTCHA Handling for Sneaker Bot Automation
How sneaker bots handle CAPTCHAs on Nike, Adidas, Footlocker, and other release sites using Captcha AI for fast checkout.

How sneaker bots handle CAPTCHAs on Nike, Adidas, Footlocker, and other release sites using Captcha AI for fas...

Automation Python reCAPTCHA v2
Feb 04, 2026
API Tutorials Building a Python Wrapper Library for CaptchaAI API
Build a reusable Python wrapper library for the Captcha AI API with type hints, retry logic, context managers, and support for CAPTCHA types.

Build a reusable Python wrapper library for the Captcha AI API with type hints, retry logic, context managers,...

Automation Python reCAPTCHA v2
Jan 31, 2026
Troubleshooting Turnstile Token Invalid After Solving: Diagnosis and Fixes
Fix Cloudflare Turnstile tokens that come back invalid after solving with Captcha AI.

Fix Cloudflare Turnstile tokens that come back invalid after solving with Captcha AI. Covers token expiry, sit...

Python Cloudflare Turnstile Web Scraping
Apr 08, 2026
Troubleshooting GeeTest v3 Error Codes: Complete Troubleshooting Reference
Complete reference for Gee Test v 3 error codes — from registration failures to validation errors — with causes, fixes, and Captcha AI-specific troubleshooting.

Complete reference for Gee Test v 3 error codes — from registration failures to validation errors — with cause...

Automation Testing GeeTest v3
Apr 08, 2026