Skip to main content

reCAPTCHA V3 Enterprise

reCAPTCHA v3 Enterprise is Google's advanced, score-based bot detection system that evaluates user interactions in the background using adaptive risk analysis and behavioral signals — without visible challenges. CaptchaAI handles token generation and score validation for enterprise-grade workflows.

Overview

reCAPTCHA V3 Enterprise differs from standard V3 in that it:

  • Uses enterprise-level ML models with more detailed risk signals
  • Returns a score-based token — no visual challenge for users
  • Requires the solver's User-Agent when submitting the token
  • Loaded via enterprise.js instead of the standard api.js
  • Score ranges from 0.1 (bot) to 0.9 (human)
reCAPTCHA V3 Enterprise Example

Example: reCAPTCHA V3 Enterprise verification

Always use json=1

With reCAPTCHA V3 Enterprise, always use json=1 when polling the result. The response includes the solver's User-Agent which must be used with the token when submitting to the target website.

How to Solve reCAPTCHA V3 Enterprise

Step 1: Identify the Enterprise Parameters

Confirm the page uses reCAPTCHA V3 Enterprise:

  1. Look for enterprise.js being loaded: https://www.google.com/recaptcha/enterprise.js?render=SITEKEY
  2. Find the sitekey as the render= parameter value or in grecaptcha.enterprise.execute()
  3. Find the action in the grecaptcha.enterprise.execute() call:
    grecaptcha.enterprise.execute('6LdxxXXx...', {action: 'login'})

Step 2: Submit the Task to CaptchaAI

Send a POST request to https://ocr.captchaai.com/in.php with version=v3 and enterprise=1:

import requests

response = requests.post("https://ocr.captchaai.com/in.php", data={
'key': 'YOUR_API_KEY',
'method': 'userrecaptcha',
'version': 'v3',
'googlekey': '6LdxxXXxAAAAAAcXxxXxxX91xxxxxxxx8xxOx7A',
'pageurl': 'https://example.com/login',
'enterprise': 1,
'action': 'login', # from grecaptcha.enterprise.execute() call
'min_score': 0.7, # optional: target score threshold (default: 0.3)
'json': 1
})

task_id = response.json()['request']
print(f"Task ID: {task_id}")

Step 3: Retrieve the Solution

Wait 15–20 seconds, then poll with json=1 to receive both the token and the solver's User-Agent:

import time

time.sleep(20)

while True:
result = requests.get("https://ocr.captchaai.com/res.php", params={
'key': 'YOUR_API_KEY',
'action': 'get',
'id': task_id,
'json': 1
}).json()

if result['status'] == 1:
token = result['result']
user_agent = result['user_agent']
print(f"Token: {token}")
print(f"User-Agent: {user_agent}")
break

time.sleep(5)

Step 4: Submit the Token

Use the token as g-recaptcha-response (or g-recaptcha-response-100000) in your POST request to the target website, using the solver's User-Agent in your request headers:

import requests

session = requests.Session()
session.headers.update({'User-Agent': user_agent})

session.post("https://example.com/submit", data={
'g-recaptcha-response': token,
# ... other form fields
})
Use the solver's User-Agent

Always submit the token to the target website using the same User-Agent returned in the response. Mismatched User-Agents will cause token validation to fail with reCAPTCHA V3 Enterprise.

Score Notes

  • Score ranges from 0.1 (bot) to 0.9 (human)
  • Most sites use thresholds between 0.3 and 0.7
  • CaptchaAI can reliably target scores up to 0.7 — higher scores are significantly rarer
  • If a score above 0.7 is required, retry the solve request