It reads the ones people can barely read.

“Select everything that breaks when dropped.” “Things that would cost more than the item shown.” Send a site key to one REST endpoint and get a token back before your request times out.

Solved / 24h
Success rate
Captcha types
image_label_binary3.60s

Choose animals that live in similar places as the sample animal

0.02
0.86
0.14
0.02
0.89
0.04
0.04
0.04
0.13
200 OK2 of 9 selected

P1_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9…

Real challenges. The selected tiles are the answers this solver submitted and the challenge provider accepted. Timings are representative.

Live from production

Not a demo. This is the last 24 hours.

Every figure on this page comes from the same API you would be calling. Nothing here is illustrative.

refreshing every 30s

Throughput by hour

UTC
516010319154792063801:0007:0013:0019:00
SolvedFailedtap or hover an hour

Solved

73,155

Success rate

98.3%

By captcha type

24h
PopularCaptcha· proxyless99.3%
59,859 tasks408 failed
PopularCaptcha· proxied94%
14,150 tasks848 failed
PopularCaptchaEnterprise· proxyless94.3%
263 tasks15 failed
PopularCaptchaInvisible· proxied100%
138 tasks
PopularCaptchaEnterprise· proxied93.8%
16 tasks1 failed
PopularCaptchaInvisible· proxyless100%
1 tasks

Integration

One endpoint. About nine lines.

No SDK to install, no session to manage, no polling loop to write. POST the task, get the token in the response.

import requests

r = requests.post(
    "https://api.scarnox.com/api/tasks/create",
    headers={"Authorization": "Bearer scarnox_***"},
    json={
        "captcha_type": "PopularCaptchaTaskProxyless",
        "site_key": "10000000-ffff-ffff-ffff-000000000001",
        "site_url": "https://target.example.com",
    },
)

token = r.json()["solution"]["token"]
200application/json
{
  "errorId": 0,
  "status": "ready",
  "solution": {
    "token": "P1_eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9...",
    "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)..."
  },
  "cost": 0.00075,
  "solveTime": 7.82
}

Failed solves return a non-zero errorId and are never charged.

What you get

Claims you can check.

Every number on this page comes from the same public endpoint your integration would call. Nothing here is a figure we typed in.

Solved right now

0tasks in flight

Live count of tasks the solver is working on this second, across every captcha type. If it reads zero, it is genuinely quiet — the number is not smoothed.

Success rate, trailing 24h

98.3% of tasks returned a token

Counted over every task in the window, not a sampled subset. Failures excluded from billing are still counted here.

The whole surface

6 types
Endpoint
One POST. No SDK, no session handshake, no polling loop.
Proxy
Send your own, or none. Both first-class on the same endpoint.
Billing
Per successful solve, to five decimal places. Failures cost nothing.
Minimum
None. No seat licences and no monthly floor to clear.
Failure
Non-zero errorId in the same response shape. Never charged.
Under load
Bursts queue rather than reject, so a spike slows instead of dropping.

Who it's for

Built for code that meets a captcha.

The same endpoint serves a nightly test suite and a production fleet; you pay per solve either way.

End-to-end tests

Keep CI green on flows that sit behind a captcha - sign-up, checkout, password reset - without disabling protection in staging.

Playwright, Puppeteer, Selenium, Cypress

Monitoring

Uptime, price and availability checks that have to get through a challenge page to see the thing they watch.

Cron jobs, synthetic checks

Automation at scale

Browser automation that must keep running when a challenge appears, with per-solve billing instead of a seat licence.

Headless fleets, queues, workers

Accessibility tooling

Assistive software for users an image puzzle locks out - one API call in place of a challenge they cannot complete.

Screen-reader and extension builders

Use it on sites you are allowed to automate. Target domains that are abused can be blocked for everyone - see the error reference.

How it works

Three steps, once.

  1. 01

    Grab a key

    Register and your API key is on the dashboard immediately. No sales call, no approval queue.

    sk_live_••••••••••••

  2. 02

    POST the task

    Send the site key and URL to one endpoint. Add a proxy if the target needs one.

    POST /tasks/create

  3. 03

    Use the token

    The response carries the token and what it cost. Drop it into your form submission and carry on.

    P1_eyJ0eXAiOiJKV1Qi…

Pricing

Pay for solves. Nothing else.

No subscription, no seat licences, no expiry - and failed solves are never billed.

Proxyless

most used
$0.65/ 1k solves

solved on our network · $0.00065 each

  • Just a sitekey and a URL
  • Standard and invisible sitekeys
  • Nothing to configure
Start solving

With your proxy

$0.65/ 1k solves

solved through your IP · $0.00065 each

  • For sites that bind the token to an IP
  • http:// or socks5:// proxies
  • Proxy details never stored
Start solving

Getting started

$1minimum top-up

≈ 1,538 proxyless solves

  • $0.01 trial credit on sign-up, no card
  • Balance never expires
  • Billed to five decimal places
  • Failed solves cost nothing
Full rate card

Your data

What a task leaves behind.

Straight from the code that writes a task, not a policy page.

Stored with each task

  • Target URL and sitekeyso your task history and support tickets can show what was solved
  • Captcha type, result and timingstatus, error code, solve time, cost
  • The returned tokenshown in your history; it expires at the target within minutes anyway
  • Whether you sent a proxya yes / no flag, used to attribute proxy failures to the right side

Never stored

  • Your proxy address or its credentials - used for the solve, then dropped
  • Page content, cookies or anything from the target beyond the challenge
  • Wallet or payment details - crypto payments are handled by the payment provider

All traffic is HTTPS. Your API key is the only credential - rotate it from the dashboard and the old one stops working immediately.

Questions

The things people ask first.

You get a non-zero errorId with a description, and the task is not billed. Only successful solves draw down your balance.

Your first token is about four minutes away.

Register, copy the key, paste the snippet. Trial solves are already on the account.