Was this helpful?
How to bypass reCAPTCHA v3
Introduction
reCAPTCHA v3 is not a classic image-based CAPTCHA but a scoring system that evaluates user behavior in the browser and returns a numeric value (score) ranging from 0.1 to 0.9. Unlike previous versions, it does not require explicit user interaction but imposes strict requirements on token quality.
In this guide, we will cover:
- How to identify reCAPTCHA v3 on a page
- Which parameters are required to submit a task
- How to properly configure
minScoreandaction - How to use the reporting system to improve solution quality
- Python and PHP code examples
Important: Solving reCAPTCHA v3 is a complex task because it imposes strict requirements on the score value. Success depends on a combination of factors: correct parameters, proxy quality, browser digital fingerprints, and session behavior.
How to Identify reCAPTCHA v3 on a page
| Version | Indicators |
|---|---|
| reCAPTCHA v2 | Contains an "I'm not a robot" checkbox |
| reCAPTCHA v2 Invisible | No checkbox, but image selection sometimes appears upon form submission |
| reCAPTCHA v3 | No checkbox, reCAPTCHA logo in the corner, image selection never appears upon form submission |
Quick check via DevTools
- Open Developer Console (
F12→ Network tab) - Perform an action that triggers the CAPTCHA
- Look for requests to
google.com/recaptcha/api2/orrecaptcha.net/recaptcha/api2/ - If there is a request to
reloadbut no request touserverify— this is reCAPTCHA v3
Required parameters for solving
Main fields for RecaptchaV3TaskProxyless
| Property | Type | Required | Description |
|---|---|---|---|
| type | String | Yes | RecaptchaV3TaskProxyless |
| websiteURL | String | Yes | Full URL of the page containing the CAPTCHA |
| websiteKey | String | Yes | Sitekey from the data-sitekey attribute or k parameter in requests |
| minScore | Float | Yes | Required score: from 0.1 to 0.9 |
| pageAction | String | No | action value if used on the website |
| isEnterprise | Boolean | No | true for Enterprise version (enterprise.js) |
| apiDomain | String | No | Loading domain: google.com (default) or recaptcha.net |
How to find websiteKey and action
websiteKey:
- Open the page with the CAPTCHA
- Find the iframe with
src="https://www.google.com/recaptcha/api2/anchor" - The sitekey is located in the
kparameter of this URL
action (if used):
- In the browser console, search for
grecaptcha.execute - The value of the
actionparameter in the function call should be passed in your request
javascript
// Example call on the page
grecaptcha.execute('6LfB5_IbAAAA...', { action: 'login' });
// ↑ the value 'login' is the action
Step by Step Instructions: submitting a task via API
Step 1: Create a task
Endpoint: https://api.2captcha.com/createTask
Method: POST
Content-Type: application/json
json
{
"clientKey": "YOUR_API_KEY",
"task": {
"type": "RecaptchaV3TaskProxyless",
"websiteURL": "https://example.com/login",
"websiteKey": "6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu",
"minScore": 0.9,
"pageAction": "login",
"isEnterprise": false
}
}
Step 2: Receive taskId
The response will contain:
json
{
"errorId": 0,
"taskId": "1234567890"
}
Step 3: Poll for results
Endpoint: https://api.2captcha.com/getTaskResult
json
{
"clientKey": "YOUR_API_KEY",
"taskId": "1234567890"
}
Successful response:
json
{
"errorId": 0,
"status": "ready",
"solution": {
"gRecaptchaResponse": "03AGdBq269xwqd...5pZ_2DMHqUjg",
"token": "03AGdBq269xwqd...5pZ_2DMHqUjg"
}
}
Step 4: Using the token
Add the received token to the form field g-recaptcha-response or pass it to the corresponding parameter in your POST request to the target website.
Token lifespan: 120 seconds from generation. Use it immediately.
Critically important recommendations for score and action
Sensitivity to Score
reCAPTCHA v3 is highly sensitive to the score value. Even a token with a declared minScore: 0.9 may be rejected if the website applies additional verification checks.
What to do:
-
Send multiple requests with different
minScorevalues:Try sequentially: 0.3 → 0.7 → 0.9 -
Experiment with the
actionparameter:- Try adding
actionif it is not specified - Try removing
actionif it is present - Ensure the
actionvalue exactly matches what the website expects
- Try adding
-
Test on a demo page before integration:
https://rucaptcha.com/demo/recaptcha-v3
Important: Our workers solve a large number of CAPTCHAs daily, which may affect the quality of the obtained score. Some websites have extremely high requirements, and bypassing them may be technically impossible.
Reporting system: how to save money and improve Quality
Using the feedback system is a mandatory step for stable operation with reCAPTCHA v3. This allows you to:
- Improve recognition quality
- Receive refunds for unsuccessful solutions
When to send reportCorrect
The token was accepted by the target website (form submitted successfully, no CAPTCHA error)
Endpoint: https://api.2captcha.com/reportCorrect
json
{
"clientKey": "YOUR_API_KEY",
"taskId": 1234567890
}
When to send reportIncorrect
The token was rejected by the website ("Invalid CAPTCHA" error, blocking)
Endpoint: https://api.2captcha.com/reportIncorrect
json
{
"clientKey": "YOUR_API_KEY",
"taskId": 1234567890
}
Code examples
Python (using official library)
python
# pip install 2captcha-python
from twocaptcha import TwoCaptcha
solver = TwoCaptcha('YOUR_API_KEY')
try:
result = solver.recaptcha(
sitekey='6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu',
url='https://example.com/login',
version='v3',
action='login',
score=0.9
)
token = result['code']
print(f'Token: {token}')
# Send report after using the token
# solver.report_correct(task_id) or solver.report_incorrect(task_id)
except Exception as e:
print(f'Error: {e}')
PHP
php
<?php
require __DIR__ . '/vendor/autoload.php';
$solver = new TwoCaptcha\TwoCaptcha('YOUR_API_KEY');
try {
$result = $solver->recaptcha([
'sitekey' => '6LfB5_IbAAAAAMCtsjEHEHKqcB9iQocwwxTiihJu',
'url' => 'https://example.com/login',
'version' => 'v3',
'action' => 'login',
'score' => 0.3
]);
echo "Token: " . $result->code;
} catch (Exception $e) {
echo "Error: " . $e->getMessage();
}
?>
Common errors and solutions
| Error | Cause | Solution |
|---|---|---|
| ERROR_WRONG_USER_KEY | Invalid API key | Verify the key in your account dashboard |
| ERROR_ZERO_BALANCE | Insufficient funds | Top up your account balance |
| ERROR_CAPTCHA_UNSOLVABLE | CAPTCHA was not solved | Try a different minScore, verify action, change proxy |
| Token not accepted by website | Mismatched action or userAgent |
Ensure parameters exactly match the real browser |
Request frequency recommendations
- Polling
getTaskResult: every 5-10 seconds (no more frequently!) - Between creating new tasks: pause for 2-5 seconds
- After receiving 3+ consecutive errors: change proxy or pause for 15-30 minutes
Useful Links
- reCAPTCHA v3 Demo Page
- Full API Documentation
- Developer Libraries (GitHub)
- reportCorrect Method
- reportIncorrect Method
Conclusion
Bypassing reCAPTCHA v3 is not a one-time setup but an iterative optimization process. The key to success:
- Accurate identification of all parameters (
sitekey,action,minScore) - Experimentation with different score and action values
- Mandatory use of the reporting system
- Monitoring solution quality and rapid adaptation to website changes
We hope these recommendations help you improve your results. If you encounter difficulties — test your solution on the demo page, check your request logs, and do not hesitate to contact support with examples of your requests and responses.