Skip to content
../products
reCAPTCHA v2ReCaptchaV2TaskProxyLess

reCAPTCHA v2 Solver, solved in 15.0s.

Solve Google reCAPTCHA v2 checkbox and image challenges automatically. Supports both standard and invisible variants.

$2.00per 1,000
~15.0savg solve
99%+success
4/mthroughput
websiteKey: 6Le-wvkSAAAAAPBMRTvw0Q4Muexq…0.00s
POST/createTask type=ReCaptchaV2TaskProxyLess
taskId tsk_ma0hvqbv
POLL/getTaskResult status=processing
status ready
token 0xdfa7be6ac24e3...
type: ReCaptchaV2TaskProxyLess● running on production solvers

What is reCAPTCHA v2?

reCAPTCHA v2 presents a checkbox ('I'm not a robot') that users must click. If Google's risk engine is suspicious, it shows image grid challenges ('Select all images with traffic lights'). The invisible variant skips the checkbox and triggers programmatically. reCAPTCHA v2 is still widely used on login forms, registration pages, and anywhere Google's free captcha is deployed.

How it works

1

Send Task

POST your ReCaptchaV2TaskProxyLess with the target URL and sitekey to our API. We'll queue it instantly.

2

We Solve

Capzy's proprietary solver returns valid reCAPTCHA v2 tokens for authorized testing and automation. Both checkbox and invisible modes are supported.

3

Get Token

Poll getTaskResult — when status is 'ready', the solution contains the token to inject into the target page.

Quick integration

solve.py
import requests, time

API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"

# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
        "type": "ReCaptchaV2TaskProxyLess",
        "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
        "websiteURL": "https://example.com/signup"
    }
}).json()

task_id = task["taskId"]
print(f"Task created: {task_id}")

# Step 2: Poll for result
while True:
    result = requests.post(f"{API}/getTaskResult", json={
        "clientKey": KEY,
        "taskId": task_id
    }).json()

    if result["status"] == "ready":
        print("Solved!", result["solution"])
        break
    elif result["status"] == "failed":
        print("Failed:", result.get("errorDescription"))
        break

    time.sleep(1)

# Step 3: Use the result — paste the token into g-recaptcha-response
token = result["solution"]["gRecaptchaResponse"]
# Browser side: document.querySelector('textarea[name="g-recaptcha-response"]').value = token
# Or include it in your form POST:
resp = requests.post("https://target.example.com/login", data={
    "username": "...",
    "password": "...",
    "g-recaptcha-response": token,
})
print(resp.status_code)

Using your own proxy

Use ReCaptchaV2Task instead of ReCaptchaV2TaskProxyLess to route the solve through your own proxy. This is useful when the target site checks the IP that solved the captcha matches the IP submitting the form.

solve_proxy.py
import requests, time

API = "https://api.capzy.ai"
KEY = "capzy_your_key_here"

# Step 1: Create task
task = requests.post(f"{API}/createTask", json={
    "clientKey": KEY,
    "task": {
        "type": "ReCaptchaV2Task",
        "proxyPort": "8080",
        "proxyType": "http",
        "proxyLogin": "user",
        "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
        "websiteURL": "https://example.com/signup",
        "proxyAddress": "123.45.67.89",
        "proxyPassword": "pass"
    }
}).json()

task_id = task["taskId"]
print(f"Task created: {task_id}")

# Step 2: Poll for result
while True:
    result = requests.post(f"{API}/getTaskResult", json={
        "clientKey": KEY,
        "taskId": task_id
    }).json()

    if result["status"] == "ready":
        print("Solved!", result["solution"])
        break
    elif result["status"] == "failed":
        print("Failed:", result.get("errorDescription"))
        break

    time.sleep(1)

# Step 3: Use the result — paste the token into g-recaptcha-response
token = result["solution"]["gRecaptchaResponse"]
# Browser side: document.querySelector('textarea[name="g-recaptcha-response"]').value = token
# Or include it in your form POST:
resp = requests.post("https://target.example.com/login", data={
    "username": "...",
    "password": "...",
    "g-recaptcha-response": token,
})
print(resp.status_code)

additional proxy parameters

proxyTypetypestringreqyesProxy protocol: http or https
proxyAddresstypestringreqyesProxy IP address or hostname
proxyPorttypenumberreqyesProxy port number
proxyLogintypestringreqnoProxy username (if auth required)
proxyPasswordtypestringreqnoProxy password (if auth required)
userAgenttypestringreqnoUser-Agent string to use. Must match the UA you use when submitting the token

Task parameters

typetypestringreqyesReCaptchaV2TaskProxyLess or ReCaptchaV2Task
websiteURLtypestringreqyesThe page URL where reCAPTCHA is loaded
websiteKeytypestringreqyesThe sitekey (starts with 6L...). Found in data-sitekey or the JS render call
isInvisibletypebooleanreqnoSet true for invisible reCAPTCHA (no checkbox, auto-triggered)
isEnterprisetypebooleanreqnoSet true if the site uses reCAPTCHA Enterprise

Solution response

gRecaptchaResponsetypestringThe solved token. Submit in g-recaptcha-response textarea

Example response

Full getTaskResult response shape. The fields in the table above describe what's inside solution — the outer envelope (errorId, status) is identical for every captcha type.

{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "gRecaptchaResponse": "03AGdBq25...<long opaque token>..."
  }
}

Error response

Failures use the same envelope with errorId: 1 plus errorCode + errorDescription. See the error-code reference for the full list.

{
  "errorId": 1,
  "errorCode": "ERROR_CAPTCHA_UNSOLVABLE",
  "errorDescription": "Solver gave up — automatically refunded."
}

Pending response

While the solver is still working, getTaskResult returns status: "processing". Poll every 1–2 seconds until ready or failed.

{
  "errorId": 0,
  "status": "processing"
}

Features

Checkbox + image challenge solving
Invisible variant support (isInvisible: true)
Enterprise reCAPTCHA support
Capzy proprietary models handle every challenge type — no human workers
Capzy proprietary infrastructure — natural request signals
~8 second average solve time

task types

proxyless: ReCaptchaV2TaskProxyLess

with proxy: ReCaptchaV2Task

Frequently asked questions

start solving recaptcha v2.

$0.10 in free credits — no card. ~250 free solves to test before you spend.