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 full Cloudflare Turnstile coverage and reCAPTCHA v3 support with a consistent 0.3 default score.
# 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.
Solves the full modern CAPTCHA stack
The wall you hit at scale
2Captcha gets you started. Volume is where it strains.
2Captcha is one of the oldest solving services and a fine place to begin. But as pipelines grow, three things tend to bite: human-worker queues during peak hours, variable reCAPTCHA v3 score quality, and gaps on the newer Cloudflare challenge types. Here's what changes when you move to an AI-first solver.
Why teams move
Five reasons developers switch
1. Consistent speed under load
AI solving doesn't queue, break, or slow down at peak hours. Solve times stay stable on night shifts, weekends, and demand spikes — when human-worker pools thin out.
2. Consistent reCAPTCHA v3 scoring
Pass your action and get a token back with a
consistent 0.3 default score that's accepted by most sites — instead of
the variable values a human-worker pool returns.
3. Full Cloudflare coverage
Turnstile, plus Cloudflare Challenge and JS Challenge pages — the parts of the Cloudflare stack that older solvers added late or skipped entirely.
4. BLS & government portals
BLS CAPTCHA support for visa-appointment and government automation workflows — a type 2Captcha doesn't offer.
5. Drop-in API compatibility
2Captcha-compatible in.php / res.php
format. Switching is an endpoint and key change — your error handling and status codes
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.comand drop in your CaptchaAI key. - Verify by running both services in parallel, then cut over.
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
A consistent v3 default score
Send the page action (and version / enterprise when
needed). The returned v3 token carries a consistent 0.3 default score —
accepted by most sites — rather than the variable values you get from a human-worker pool.
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. Solve metrics are benchmarked — see the evidence note.
| Feature | CaptchaAI | 2Captcha |
|---|---|---|
| reCAPTCHA v2 | ||
| reCAPTCHA v3 (consistent 0.3 default score) | Varies | |
| reCAPTCHA Enterprise | ||
| Cloudflare Turnstile | Partial | |
| Cloudflare Challenge / JS Challenge | ||
| GeeTest v3 | ||
| BLS CAPTCHA | ||
| hCaptcha | Not yet | |
| FunCaptcha (Arkose) | Not yet | |
| Image / OCR types | 27,500+ | Yes |
| API format | in.php / res.php | in.php / res.php |
| 2Captcha-compatible drop-in | — | |
| Billing model | Per thread (unlimited solves) | Per solve |
Where 2Captcha is strong: it's one of the longest-running services with a large human-worker pool that can handle unusual one-off image types. For high-volume, latency-sensitive pipelines, an AI-first solver 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 — human-worker solver
After — CaptchaAI (AI-first)
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.
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 | ~$30 | BASIC (5 threads) | $15 | ~50% |
| 100,000 solves | ~$299 | BASIC (5 threads) | $15 | ~95% |
| 1,000,000 solves | ~$2,990 | ADVANCE (50 threads) | $90 | ~97% |
| 10,000,000 solves | ~$29,900 | ENTERPRISE (200 threads) | $300 | ~99% |
Illustrative. 2Captcha column uses its published reCAPTCHA v2 rate (~$2.99 / 1,000 solves, 2captcha.com/pricing, accessed May 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, status checks, and error handling 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 gets a 3-day free trial with 5 threads — claim it here. 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. CaptchaAI returns the same status codes and error formats (including CAPCHA_NOT_READY while polling), so your existing handling carries over.
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.
Claim a 3-day free 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 public docs. Solve-time figures in “What changes day to day” are an illustrative mid-volume example, 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. Update the benchmark date below whenever you re-verify before publishing.
Last verified: 2026-05-30.