Skip to content
NexCaptcha

Migration guide

Switching from Death By Captcha

hCaptcha and Arkose are not on their price list, everything else is $2.89 per 1,000, and their own compatibility endpoints make the switch one base URL.

API compatibilityDrop-in — change the base URL

What they do well

  • Three documented compatibility layers — 2Captcha, Antigate/Anti-Captcha and DeCaptcher — so almost any legacy integration can point at them without touching client code. Nobody else in this category built that on purpose.
  • A raw socket API on TCP 8123–8130 that genuinely beats HTTP polling for high-volume image work. If you are still doing bulk OCR, that is a real engineering advantage and not a legacy artifact.
  • Client libraries for C, C++ and Perl alongside the usual nine languages. Old desktop-automation and bot-framework users are served here and almost nowhere else.
  • Flat $2.89 per 1,000 across nearly every token type. No bid-rate ranges, no score tiers, no open-ended Arkose ceiling, so the number you budget is the number you pay.
  • Audio captcha at $0.59 per 1,000 is cheaper than our $0.75, and image captcha starts at $0.99.
  • Deposit bonuses of 25–30% through certain payment processors, which materially cuts the effective rate if you prepay.

Where they fall short

  • `username` + `password` in every API request is still the first-class path in their docs and SDKs. Account credentials end up in application config, in logs and in every proxy along the way. The authtoken alternative exists but is the secondary option.
  • The socket API needs outbound TCP on ports 8123–8130. Locked-down egress, serverless runtimes and most corporate networks cannot reach it.
  • $2.89 per 1,000 flat is high for the types pure ML already solves: 2.4x CapSolver's $1.20 Turnstile rate and 2.2x CapMonster's $1.30 for the identical token.
  • Images are capped at 180 KB raw and 120 KB base64, so high-DPI captcha screenshots have to be downscaled client-side before upload.
  • Token captchas are layered onto an image-first architecture and several are still labelled BETA in their own documentation.
  • hCaptcha and FunCaptcha/Arkose are not on the published price list at all, and a reviewer reports Arkose failing on the Microsoft and Amazon deployments specifically.
  • Unanswered email and permanently offline live chat come up in reviews dated 2018, 2019, 2023 and 2024. There are only seven reviews in total, so the ratio means little — the six-year span is the part worth reading.

[ 02 ]Side by side

Side by side

Side by side
DeathByCaptchaNexCaptcha
Published pricing$2.89/1,000 flat for most token types. hCaptcha and Arkose are not priced at all.33 types, $0.75 to $4.49 per 1,000, one USD price list for every visitor.
Published latencyNot published. The docs only ask you not to poll more than once every two seconds.p50 and p95 per type. Overall p50 4.8s, p95 11.2s.
Published success rateNot published for any type.Published per type. 99.4% overall, on the accepted-token definition.
What counts as a solveAn answer returned by the API. The rejected-token case is not addressed.The target site accepting the token. Returning one is not enough.
Failed-solve billingNot stated on the pricing page.Rejected, failed and timed-out solves are refunded automatically within the hour.
API compatibilityMultipart upload plus a socket protocol, with 2Captcha and Antigate shims on top.createTask / getTaskResult, clientKey in the body, standard task type names.
Support responseUnanswered email and offline live chat reported in 2018, 2019, 2023 and 2024.24/7 from engineers. Median first response 7 minutes on Telegram.

[ 03 ]The code change

The code change

DeathByCaptcha's own API is image-first: a multipart/form-data POST to /api/captcha, GET polling on /api/captcha/<id>, `username` and `password` (or an authtoken) in every request, plus a raw socket protocol on TCP 8123–8130. On top of that they deliberately publish compatibility endpoints — a 2Captcha-shaped pair at /2captcha/in.php and /2captcha/res.php, an Antigate-shaped one at api.dbcapi.me/in.php — so other vendors' customers could migrate in without editing client code. Most integrations sit on those shims, which is why migrating out is a base URL constant for almost everyone; the native and socket callers are the only real port, and the steps below cover them.

Before
const client = new Solver({
apiKey: process.env.SOLVER_KEY,
baseURL: "http://api.deathbycaptcha.com/2captcha",
});
const token = await client.recaptchaV2(sitekey, pageUrl);
After
const client = new Solver({
apiKey: process.env.SOLVER_KEY,
baseURL: "https://api.nexcaptcha.net",
});
const token = await client.recaptchaV2(sitekey, pageUrl);

How to migrate

  1. 01Point your existing client at api.nexcaptcha.net and swap the API key — if you are on their 2Captcha or Antigate compatibility endpoint, that base URL constant is the whole migration.
  2. 02Check that your HTTP client is not pinned to http://. Their compatibility endpoints are served over plain HTTP and ours are HTTPS only.
  3. 03If you call the native API, replace the multipart image upload with a JSON createTask carrying the image as base64 in task.body, and replace GET /api/captcha/<id> with a POST to /getTaskResult that reads status: processing | ready instead of checking whether the text field is still empty.
  4. 04Rotate the DeathByCaptcha account password once you are off it. It has travelled in the body of every request you ever sent, so treat it as exposed.
  5. 05If you are on the socket API, move to HTTPS on 443 and delete the firewall exception for TCP 8123–8130. The 180 KB image cap and the client-side downscaling go away at the same time.

[ 04 ]Questions about this one

Questions about this one

Yes, and it is the right way to do it. Leave the DeathByCaptcha client in place, send a share of traffic to api.nexcaptcha.net, and compare accepted rate and solve time on your own targets before you move the rest. Nothing here requires an exclusive integration, and for shim users the cutover itself is an afternoon.

Not if you are on their 2Captcha or Antigate compatibility endpoint — those parameter names carry over unchanged. If you are on the native image API there is exactly one mapping to make: the multipart upload becomes an ImageToTextTask with the image base64-encoded in task.body.

We cannot move it. Run it down on the existing integration while you traffic-split, and close the account once the balance is near zero. That is the main argument for cutting over gradually rather than in one step.

On most types yes, on some no. reCAPTCHA v2 is $1.50 here against their $2.89, Turnstile $2.18 against $2.89, DataDome and AWS WAF $2.18 against $2.89. But GeeTest v3 and v4 are $4.49 here against their $2.89, Tencent and Capy are also $4.49, and audio captcha is $0.75 here against $0.59 there. The rate is not really the argument: we publish p50, p95 and accepted rate per type and refund rejected tokens automatically, and they publish neither number.

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.