2Captcha-compatible API

Switch from 2Captcha to CaptchaAI by changing one URL.

Keep your existing code, methods, and response handling. Point your solver at CaptchaAI's drop-in endpoint and move to thread-based pricing with unlimited solves per thread — plus BLS, a type 2Captcha doesn't list, and a Cloudflare Challenge task that returns the cf_clearance cookie by API.

No code logic changes 3-day trial Keep your 2Captcha balance
solver.py
# Only the endpoint changes — same params, same response.
- ENDPOINT = "https://2captcha.com"
+ ENDPOINT = "https://ocr.captchaai.com"

import requests
resp = requests.post(f"{ENDPOINT}/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": SITE_KEY,
    "pageurl": PAGE_URL,
    "json": 1,
})

Same in.php / res.php flow you already use.

Supported CAPTCHA types

reCAPTCHA v2 reCAPTCHA v3 reCAPTCHA Enterprise Invisible reCAPTCHA Cloudflare Turnstile Cloudflare Challenge GeeTest v3 Grid Image BLS Image / OCR (27,500+ types)

The wall you hit at scale

2Captcha gets you started. Volume is where per-solve pricing adds up.

2Captcha covers a very wide range of CAPTCHA types and is a fine place to begin. But as pipelines grow, you pay for every solve, and each CAPTCHA type has its own price per 1,000. Here's what changes when you move to thread-based pricing.

Why teams move

Five reasons developers switch

1. Concurrency you control

You buy concurrent threads, so your capacity is set by your plan rather than a per-solve balance. Each thread frees up the moment its CAPTCHA finishes, ready for the next one.

2. reCAPTCHA v3 included

Pass your action and get a v3 token back. Every v3 solve runs on your threads at no extra cost — 2Captcha prices v3 by the score you request ($1.45 per 1,000 up to 0.3, $2.99 above).

3. Cloudflare Challenge by API

Turnstile, plus Cloudflare Challenge and JS Challenge pages, with the cf_clearance cookie returned by the API — 2Captcha documents challenge pages through a Turnstile token you apply in your own browser.

4. BLS & government portals

BLS CAPTCHA support for visa-appointment and government automation workflows — a type 2Captcha doesn't list.

5. Drop-in API compatibility

2Captcha-compatible in.php / res.php format. Switching is an endpoint and key change — your submit-and-poll flow and CAPCHA_NOT_READY handling keep working.

Predictable thread-based cost

Pay per concurrent thread, not per solve. Unlimited solves per thread each month — no per-CAPTCHA fees and no type surcharges to forecast.

Migration

A drop-in change, not a rewrite

CaptchaAI mirrors the 2Captcha request/response format. Update two values — the endpoint and your API key — and your existing solve logic runs unchanged. Keep your remaining 2Captcha balance and cut projects over as credits run out.

  • Map your current endpoint, method, and poll loop.
  • Swap the base URL to ocr.captchaai.com and drop in your CaptchaAI key.
  • Verify by running both services in parallel, then cut over.
Read the API docs
solve_recaptcha.py
import requests, time

# Only these two lines change when moving from 2Captcha:
API_KEY = "YOUR_CAPTCHAAI_KEY"
API_URL = "https://ocr.captchaai.com"

def solve_recaptcha(sitekey, pageurl):
    # Submit the challenge
    r = requests.post(f"{API_URL}/in.php", data={
        "key": API_KEY,
        "method": "userrecaptcha",
        "googlekey": sitekey,
        "pageurl": pageurl,
        "json": 1,
    })
    task_id = r.json()["request"]

    # Poll for the token (same as 2Captcha)
    for _ in range(60):
        time.sleep(5)
        res = requests.get(f"{API_URL}/res.php", params={
            "key": API_KEY, "action": "get",
            "id": task_id, "json": 1,
        }).json()
        if res["request"] != "CAPCHA_NOT_READY":
            return res["request"]
    raise TimeoutError("Solve timeout")

# Create your account at captchaai.com/register to get your API key

reCAPTCHA v3

Send the page's v3 action

Send the page action (and version / enterprise when needed). Google scores the returned token and the site's own threshold decides, so check acceptance on your real targets. There is no min_score parameter: drop it when you switch.

recaptcha_v3.py
import requests
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": "YOUR_API_KEY",
    "method": "userrecaptcha",
    "version": "v3",
    "googlekey": "SITE_KEY",
    "pageurl": "https://example.com",
    "action": "login",
    "enterprise": 1,
    "json": 1,
})

Side by side

CaptchaAI vs 2Captcha

Capability coverage, from each service's own documentation — see the evidence note.

Feature CaptchaAI 2Captcha
reCAPTCHA v2
reCAPTCHA v3
reCAPTCHA Enterprise
Cloudflare Turnstile
Cloudflare Challenge / JS Challengecf_clearance via APITurnstile token (your browser)
GeeTest v3
BLS CAPTCHA
hCaptchaNot in its API docs
FunCaptcha (Arkose)
Image / OCR types27,500+Yes
API formatin.php / res.phpin.php / res.php
2Captcha-compatible drop-in—
Billing modelPer thread (unlimited solves)Per solve

Where 2Captcha is strong: it covers many types CaptchaAI doesn't solve (GeeTest v4, FunCaptcha, DataDome, Amazon captcha and more), with human workers as a backup for unusual tasks. For high-volume pipelines where cost should follow concurrency rather than solve count, thread-based pricing is the more predictable fit.

Illustrative pipeline

What changes day to day

Representative example for a mid-volume scraping pipeline. Your numbers depend on target sites and proxy quality.

Before — 2Captcha (per-solve)

1M reCAPTCHA v2 solves/mo$1,000–$2,990
ScalingGrows with every solve
BillingPer solve

After — CaptchaAI (thread-based)

reCAPTCHA v2 solve timeTypically under 2 min
1M reCAPTCHA v2 solves/mo$90 (ADVANCE)
ScalingFlat per thread
BillingPer thread, unlimited solves

Pricing

Pay per thread. Unlimited solves.

A thread is one in-flight CAPTCHA. It frees up the moment it finishes — so you size by concurrency, not by solve count. No per-CAPTCHA fees, no type surcharges.

BASIC
$15/mo
5 threads
Unlimited solves / thread
All supported CAPTCHA types
2Captcha-compatible API
ADVANCE
$90/mo
50 threads
Unlimited solves / thread
High-volume pipelines
2Captcha-compatible API
PREMIUM
$170/mo
100 threads
Unlimited solves / thread
Concurrency for scale
2Captcha-compatible API

Larger plans — CORPORATE ($240/mo, 150 threads), ENTERPRISE ($300/mo, 200 threads), and VIP tiers up to 5,000 threads. See full pricing →

Where the gap widens at scale

Monthly reCAPTCHA v2 volume 2Captcha (per-solve) CaptchaAI plan CaptchaAI cost You save
10,000 solves$10–$30BASIC (5 threads)$15Up to ~50% 2Captcha cheaper at $1.00
100,000 solves$100–$299BASIC (5 threads)$15~85–95%
1,000,000 solves$1,000–$2,990ADVANCE (50 threads)$90~91–97%
10,000,000 solves$10,000–$29,9002× ENTERPRISE (400 threads)$600~94–98%

Illustrative. 2Captcha column uses its published reCAPTCHA v2 price range ($1.00–$2.99 / 1,000 solves, 2captcha.com/pricing, accessed September 2026); CaptchaAI plans are sized to peak concurrency, not total volume. Size threads to your peak in-flight solves — once paid for, extra solves run through them at no marginal cost. Confirm live numbers on captchaai.com/#pricing-plans.

FAQ

Frequently Asked Questions

No. CaptchaAI uses the same in.php / res.php request and response format. You change the endpoint URL and your API key — the rest of your solve logic and status checks keep working.

For API users it's usually a few minutes — swap the base URL and key. Wrapper-library users typically need no logic changes because the compatible format means the same method names and parameters.

Use it up. Point new projects at CaptchaAI and migrate existing ones as your 2Captcha credits run down. There's no forced cut-over.

Yes. Every new account can start a 3-day trial with 5 threads — start it here (then $15/month via PayPal unless you cancel) — or claim a free thread for 30 days. Run CaptchaAI and 2Captcha in parallel on the same workload, compare solve times and success on your real targets, then cut over when you're satisfied — your remaining 2Captcha balance stays usable.

No, but check two codes. CaptchaAI uses the same response format, including CAPCHA_NOT_READY while polling. A blank or malformed sitekey returns ERROR_WRONG_SITEKEY here (2Captcha returns ERROR_GOOGLEKEY, or ERROR_WRONG_GOOGLEKEY when the parameter is missing), and ERROR_ZERO_BALANCE can also mean you are at your thread limit, so back off and retry instead of stopping.

You pay for concurrent threads, and each thread does unlimited solves per month. For steady high-volume workloads that makes monthly cost predictable, since it scales with concurrency rather than total solve count. Compare your current monthly solve count against a thread tier on the pricing.

Need more help? Check CaptchaAI Help Center

Ready to switch? It starts with one URL.

Start a 3-day trial, change your endpoint to ocr.captchaai.com, and run a real solve. Keep 2Captcha alongside until you're confident.

Evidence & method. Capability rows reflect CaptchaAI's published supported types (api-docs) and 2Captcha's own API docs (2captcha.com/api-docs), which list neither BLS nor hCaptcha and cover Cloudflare Challenge pages with a Turnstile token. The reCAPTCHA v2 solve time in “What changes day to day” comes from our own synthetic canary, which runs test solves on 14 CAPTCHA types every day. It is not a guarantee — real results vary by target site, CAPTCHA type, and proxy quality. Pricing reflects published CaptchaAI plans (captchaai.com/#pricing-plans) and 2Captcha's public per-solve model.

Last verified: 2026-09-29.

We value your privacy

Necessary cookies keep the site working. Analytics, marketing and support cookies are optional and stay off until you allow them. Cookie Policy.

channel avatar
CaptchaAI
online

Welcome 👋

Contact Us On Telegram!

Contact Team
Telegram