Migration guide
Switching from CapSolver
A like-for-like comparison on the types you actually send: price per 1,000, p50, p95 and accepted rate, with the migration diff underneath.
API compatibilityThin adapter — same concepts, different names
What they do well
- The best price on the modern Cloudflare stack by a wide margin, and it is worth being blunt about it: Turnstile and the full Cloudflare Challenge interstitial are both $1.20 per 1,000. We charge $2.18 and $4.49 for those two. Anti-Captcha does not sell the interstitial at all.
- Recognition tasks return the answer synchronously from createTask — no taskId, no polling loop, no second round trip. Nobody else on this list does that, and for OCR-heavy workloads it halves your request count and cuts p99 meaningfully.
- ImageToText and reCAPTCHA image classification at $0.40 per 1,000 is the cheapest image work of any vendor here except CapMonster's ComplexImage. Ours is $0.75.
- VisionEngine is a real differentiator: a general-purpose vision endpoint for arbitrary click and identify challenges that do not have a named task type yet, priced at $1.50 per 1,000.
- The widest first-party tooling of anyone here — browser extension with a developer plan, Puppeteer, Playwright and Selenium integrations, explicit proxy and cookie documentation, an SDK, agent tools and an MCP service for LLM-driven automation, which no competitor on this list ships.
- Their DataDome documentation is unusually candid. It tells you how to read t=bv in captchaUrl as a sign your IP is already banned, insists the userAgent match byte for byte, and explains why sticky proxies beat rotating ones. That is real operational honesty in a category that mostly writes marketing copy.
Where they fall short
- Fourteen priced task types, total. That is the entire published table, against our 33 and 2Captcha's 48 rows.
- No hCaptcha. It is absent from their published task list and absent from their price table, whatever third-party comparison articles still claim. If your target runs hCaptcha you cannot use CapSolver for it.
- No FunCaptcha / Arkose Labs either, also missing from both the task list and the price table.
- No KeyCaptcha, Capy, Lemin, CyberSiARA, Cutcaptcha, Friendly Captcha, atbCAPTCHA, Tencent, Prosopo, Altcha, Imperva, Alibaba, or any Chinese-market captcha at all.
- No callbackUrl is documented for the core API, so token tasks must be polled. At scale that is a real cost, and in serverless architectures it is a genuine architectural annoyance.
- MtCaptcha at $3.00 and ReCaptchaV3Enterprise at $3.00 are the two most expensive rows in their own table and well above market for those types — we charge $2.18 for both.
- Billing friction is the dominant complaint theme: Trustpilot 3.0 out of 5 across 122 reviews with a 21% one-star tail, mostly deposits that were deducted while credits never appeared, plus a strict no-refund policy that unhappy reviewers cite repeatedly. In fairness, CapSolver replies to roughly 91% of critical reviews, and almost none of the complaints are about solve quality.
[ 02 ]Side by side
Side by side
| CapSolver | NexCaptcha | |
|---|---|---|
| Published pricing | 14 rows. Turnstile and Cloudflare Challenge $1.20, ImageToText $0.40, MtCaptcha $3.00. | 33 rows. Turnstile $2.18, Cloudflare Challenge $4.49, image-to-text $0.75, MTCaptcha $2.18. |
| Published latency | 1 to 10 s documented for token tasks. Recognition tasks answer inline from createTask. | p50 and p95 published per type. Overall p50 4.8s, p95 11.2s. Every task is polled. |
| Published success rate | Not published. | Published per type, 99.4% overall, counted on tokens the target accepted. |
| What counts as a solve | A returned token. Their DataDome docs note a returned cookie can still come back 403. | The target site accepting the token. We bill on that, not on returning one. |
| Failed-solve billing | A miss returns status: failed. Deposit refunds are not offered per their stated policy. | Rejected, failed and timed-out solves are refunded automatically within the hour. |
| API compatibility | Same envelope, own type names: AntiTurnstileTaskProxyLess, DatadomeSliderTask, VisionEngine. | Standard Anti-Captcha type names. Four or five string constants change, nothing else. |
| Support response | Replies to about 91% of critical Trustpilot reviews. No published response target. | 24/7 engineers. Median first response 7 minutes on Telegram. |
[ 03 ]The code change
The code change
CapSolver uses the Anti-Captcha envelope with its own vocabulary inside it. The transport is identical to ours — JSON POST to /createTask and /getTaskResult, clientKey in the body, {errorId, taskId} out and {errorId, status, solution} back — so your HTTP layer, your error handling and your result parsing are all unchanged. What is not identical is the task type strings: CapSolver writes ProxyLess with a capital L, ReCaptcha with a capital C, and uses Anti-prefixed names like AntiTurnstileTaskProxyLess plus one-off names like DatadomeSliderTask. Four or five string constants move, and the second thing to check is the synchronous recognition path, which has no equivalent here. The base URL is still the only line in the request that changes; the strings in your task-type constants change with it.
How to migrate
- 01Point your existing client at https://api.nexcaptcha.net/createTask and swap the clientKey value; drop appId, which has no equivalent here.
- 02Rename the task types CapSolver spells its own way: AntiTurnstileTaskProxyLess becomes TurnstileTaskProxyless, ReCaptchaV2TaskProxyLess becomes RecaptchaV2TaskProxyless, ReCaptchaV3TaskProxyLess becomes RecaptchaV3TaskProxyless, DatadomeSliderTask becomes DataDomeTask, AntiAwsWafTask becomes AmazonTaskProxyless and AntiCloudflareTask becomes our Cloudflare Challenge task. Both the capital L in ProxyLess and the capital C in ReCaptcha move.
- 03Add a polling loop for recognition work. ImageToTextTask, ReCaptchaV2Classification and AwsWafClassification return the answer inline from createTask on CapSolver; every task here goes through getTaskResult, so code that reads solution straight off the create response will get nothing and fail quietly.
- 04Convert the proxy and cookie parameters. CapSolver passes proxy as a single string and cookies as a name=value; string, while the Anti-Captcha convention we follow uses structured proxyType, proxyAddress, proxyPort, proxyLogin and proxyPassword fields. It is a ten-line function; write it once.
- 05Run a traffic split for a week and compare accepted rate per type, not headline rates. Cloudflare Challenge is the row where we are clearly more expensive, $4.49 against their $1.20, so decide that one on measured acceptance and nothing else.
[ 04 ]Questions about this one
Questions about this one
Four or five string constants in most codebases, because CapSolver's envelope is already the one we use. AntiTurnstileTaskProxyLess to TurnstileTaskProxyless, ReCaptchaV2TaskProxyLess to RecaptchaV2TaskProxyless, ReCaptchaV3TaskProxyLess to RecaptchaV3TaskProxyless, DatadomeSliderTask to DataDomeTask, AntiAwsWafTask to AmazonTaskProxyless. If those strings are inlined at every call site rather than held in one module, that is the actual cost of the migration and it is worth hoisting them first.
That code path, silently. CapSolver returns the solution inline from createTask for ImageToTextTask, ReCaptchaV2Classification and AwsWafClassification; here every task goes through getTaskResult, so the create response carries a taskId and no solution and your parser will read undefined rather than throw. Add the polling loop before you cut over, not after. Image-to-text runs p50 1.9s and p95 3.6s here, so the loop is short.
Not on the types they price. Turnstile is $1.20 there and $2.18 here, Cloudflare Challenge $1.20 against $4.49, image work $0.40 against $0.75. What the difference buys is billing you can audit — a solve counts only when the target site accepted the token, and rejected, failed and timed-out solves are refunded automatically within the hour rather than argued about — plus published p50 and p95 per type, and 33 types instead of 14, including the hCaptcha and Arkose traffic CapSolver cannot take at all.
That is the recommended way in, given the rename. Point the hCaptcha and Arkose traffic here first, because CapSolver does not sell those types and there is nothing to compare. Then move whichever type has been costing you retries, keep Turnstile and Cloudflare Challenge there while you measure, and decide those two on accepted rate per dollar rather than on the rate alone.
Solve your first thousand on us.
Create a key, paste it into the sample above, and watch a real token come back. No card, no sales call.
