Home Documentation Tutorials Sign In
Supported task types
API methods
Documentation menu

Bypass Recaptcha V3

This type of task object is required to solve Google Recaptcha V3 on a worker's computer. This task is executed by our service using our own proxy servers and/or workers' IP addresses.

Please note that there's a difference between Recaptcha V2-invisible and Recaptcha V3. They look the same, and it might be confusing. There's a quick way to determine the correct type: try solving it with our API as V2-invisible and V3. In one of your attempts, you'll get an error, and in the other you won't.

We test our workers for their recaptcha "score" and put them in 3 groups (queues): 0.3, 0.7 and 0.9. Each might have slightly different pricing due to the number of idle workers. By passing property minScore you define which queue your task goes into. Most of our available workers have score 0.3, and the minority have 0.9.

More information about Recaptcha V3 can be found in this FAQ section.

An example of Recaptcha v3. There's usually a logo badge is in the bottom-right corner of the page. But website owners can easily remove it with Javascript.

Task object

Property Type Required Purpose
type String Yes RecaptchaV3TaskProxyless
websiteURL String Yes Address of a target web page. Can be located anywhere on the web site, even in a member area. Our workers don't navigate there but simulate the visit instead.
websiteKey String Yes Recaptcha website key. Learn how to find it in this article.
minScore Double Yes Filters workers with a particular score. It can have one of the following values:
pageAction String No
Recaptcha's "action" value. Website owners use this parameter to define what users are doing on the page.

grecaptcha.execute('site_key', {action:'login_test'})
isEnterprise Boolean No Set this flag to "true" if you need this V3 solved with Enterprise API. Default value is "false" and Recaptcha is solved with non-enterprise API. Can be determined by a javascript call like in the following example:

grecaptcha.enterprise.execute('site_key', {..})
apiDomain String No Use this parameter to send the domain name from which the Recaptcha script should be served. Can have only one of two values: "www.google.com" or "www.recaptcha.net". Do not use this parameter unless you understand what you are doing.

Request example

          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
            "minScore": 0.3,
            "pageAction": "myverify",
            "isEnterprise": false
    "softId": 0
}' https://api.anti-captcha.com/createTask

//git clone git@github.com:AdminAnticaptcha/anticaptcha-php.git


$api = new RecaptchaV3();

//your anti-captcha.com account key

//target website address

//recaptcha key from target website

//parameters for V3
//score you would like to have
//optional page action

//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter

//create task in API
if (!$api->createTask()) {
    $api->debout("API v2 send failed - ".$api->getErrorMessage(), "red");
    return false;

$taskId = $api->getTaskId();

//wait in a loop for max 300 seconds till task is solved
if (!$api->waitForResult(300)) {
    echo "could not solve captcha\n";
    echo $api->getErrorMessage()."\n";
} else {

    $gResponse    =   $api->getTaskSolution();
    echo "\n";
    echo "your recaptcha token: $gResponse\n\n";

    //check result, then:

          #pip3 install anticaptchaofficial

from anticaptchaofficial.recaptchav3proxyless import *

solver = recaptchaV3Proxyless()

# Specify softId to earn 10% commission with your app.
# Get your softId here: https://anti-captcha.com/clients/tools/devcenter

g_response = solver.solve_and_return_solution()
if g_response != 0:
    print "g-response: "+g_response
    print "task finished with error "+solver.error_code
          //npm install @antiadmin/anticaptchaofficial

const ac = require("@antiadmin/anticaptchaofficial");


//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter

    0.3, //minimum score required: 0.3, 0.7 or 0.9
    .then(gresponse => {
        console.log('g-response: '+gresponse);
    .catch(error => console.log('test received error '+error));

          //git clone git@github.com:AdminAnticaptcha/anticaptcha-csharp

using System;
using Anticaptcha_example.Api;
using Anticaptcha_example.Helper;
using Newtonsoft.Json.Linq;

namespace Anticaptcha_example
    internal class Program
        private static void Main() {

            DebugHelper.VerboseMode = true;

            var api = new RecaptchaV3Proxyless
                ClientKey = "YOUR_API_KEY_HERE",
                WebsiteUrl = new Uri("http://makeawebsitehub.com/recaptcha/test.php"),
                WebsiteKey = "6LfI9IsUAAAAAKuvopU0hfY8pWADfR_mogXokIIZ",
                PageAction = "login_or_register",
                IsEnterprise = false,

                // Specify softId to earn 10% commission with your app.
                // Get your softId here:
                // https://anti-captcha.com/clients/tools/devcenter
                SoftId = 0

            if (!api.CreateTask())
                DebugHelper.Out("API v2 send failed. " + api.ErrorMessage, DebugHelper.Type.Error);
            else if (!api.WaitForResult())
                DebugHelper.Out("Could not solve the captcha.", DebugHelper.Type.Error);
                DebugHelper.Out("Result: " + api.GetTaskSolution().GRecaptchaResponse, DebugHelper.Type.Success);


          //git clone git@github.com:AdminAnticaptcha/anticaptcha-java.git


RecaptchaV3Proxyless api = new RecaptchaV3Proxyless();
api.setWebsiteUrl(new URL("http://getcaptchajob.com/"));

//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter

if (!api.createTask()) {
            "API v2 send failed. " + api.getErrorMessage(),
} else if (!api.waitForResult()) {
    DebugHelper.out("Could not solve the captcha.", DebugHelper.Type.ERROR);
} else {
    DebugHelper.out("Result: " + api.getTaskSolution().getGRecaptchaResponse(), DebugHelper.Type.SUCCESS);

Response example

JSON with no errors
    "errorId": 0,
    "taskId": 7654321
JSON with an error
    "errorId": 1,
    "errorCode": "ERROR_KEY_DOES_NOT_EXIST",
    "errorDescription": "Account authorization key not found in the system"

Retrieve the solution

Use method getTaskResult to request the solution. Give the worker about 5 seconds before making your first request. If the worker is still busy, retry in 3 seconds.

Task solution object

Property Type Purpose
gRecaptchaResponse String Token string required for interacting with the submit form on the target website.

Response example

JSON with no errors