Documentation menu

RecaptchaV2TaskProxyless: bypass Google Recaptcha automatically without proxies

This type of task solves Google Recaptcha V2 without proxy. The task is executed using our own proxy servers and/or workers' IP addresses.

At the moment, Recaptcha does not have protection from situations where a puzzle is solved on one IP address and the form with the g-response is submitted from another. Google's API does not provide the IP address of the person who solved their Recaptcha. If this changes, you may always use our standard type of task for that - RecaptchaV2Task.

Recaptcha V2 example

Task object

Property Type Required Purpose
type String Yes RecaptchaV2TaskProxyless
Previous name of task type: NoCaptchaTaskProxyless. It will be supported forever, no need to update your code.
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.
recaptchaDataSValue String No Value of 'data-s' parameter. Applies only to Recaptchas on Google web sites.
isInvisible Boolean No Specify whether or not Recaptcha is invisible. This will render an appropriate widget for our workers.

Request example

          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{

//git clone


$api = new RecaptchaV2Proxyless();

//your account key

//target website address

//recaptcha key from target website

//optional custom parameter which Google made for their search page Recaptcha v2
//$api->setDataSValue("'data-s' token from Google Search");

//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";

          #pip3 install anticaptchaofficial

from anticaptchaofficial.recaptchav2proxyless import *

solver = recaptchaV2Proxyless()
#set optional custom parameter which Google made for their search page Recaptcha v2
#solver.set_data_s('"data-s" token from Google Search results "protection"')

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 -i @antiadmin/anticaptchaofficial

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

//set API key

//set optional custom parameter which Google made for their search page Recaptcha v2
//ac.settings.recaptchaDataSValue = '"data-s" token from Google Search results "protection"'

ac.solveRecaptchaV2Proxyless('http://DOMAIN.COM', 'WEBSITE_KEY')
    .then(gresponse => {
        console.log('g-response: '+gresponse);
        console.log('google cookies:');
    .catch(error => console.log('test received error '+error));
          //git clone

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 RecaptchaV2Proxyless
                ClientKey = "YOUR_API_KEY_HERE",
                WebsiteUrl = new Uri(""),
                WebsiteKey = "6LfI9IsUAAAAAKuvopU0hfY8pWADfR_mogXokIIZ"

            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

package com.anti_captcha;

import com.anti_captcha.Api.RecaptchaV2Proxyless;
import com.anti_captcha.Helper.DebugHelper;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.Iterator;
import java.util.concurrent.ThreadLocalRandom;

public class Main {

    public static void main(String[] args) throws InterruptedException, MalformedURLException, JSONException {


        RecaptchaV2Proxyless api = new RecaptchaV2Proxyless();
        api.setWebsiteUrl(new URL(""));

        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.
cookies Array Optional array of cookies used for solving Recaptchas. Applies only for domains and subdomains.

Response example

JSON with no errors