A 2Captcha alternative built only for hCaptcha.

NoneCap is a hosted, pay-per-solve hCaptcha API. Like 2Captcha it returns a real token your client submits as a normal h-captcha-response. The difference: it solves hCaptcha and nothing else, it has no human-solver queue in the path, and it swaps the old in.php/res.php poll loop for a single REST call.

NoneCap vs 2Captcha at a glance

hCaptcha solving: NoneCap vs 2Captcha
NoneCap2Captcha
Captcha focushCaptcha only: regular, invisible, enterprise rqdataMany types; hCaptcha de-emphasized among reCAPTCHA, Turnstile, FunCaptcha, etc.
How it solvesBuilt only for hCaptcha; no human-solver queueHybrid AI + verified human-solver fallback
Latency profileConsistent, with no worker-queue wait built into the pathVaries with worker load when a task falls back to humans
Billing modelPrepaid credits, 1 credit per roundPrepaid balance, pay per solved captcha
Credit expiryNever expireBalance does not expire (no subscription)
Failed solvesAuto-refundedNot charged for unsolved captchas
Enterprise rqdataFully supported; tokens enterprise sitekeys acceptSupported, but hCaptcha is not a headline product
API shapeREST: POST /v1/solves then read tokenLegacy in.php submit + res.php poll
hCaptcha price / 1k$0.25-$0.50 (pack-dependent)No published hCaptcha line; listicles estimate roughly $2-$2.99
Free to start100 free credits on signupNo standing free tier

The core difference is focus and the latency path

2Captcha is a broad captcha service. Its homepage leads with reCAPTCHA, Cloudflare Turnstile, Arkose/FunCaptcha, Amazon and image captchas; hCaptcha is supported but not a headline product, and its dedicated price isn’t even listed on the pricing page. Under the hood it’s a hybrid: AI models solve most tasks, and low-confidence tasks get handed off to verified human workers.

NoneCap does one thing, and there's no human-solver queue in the path. Because no worker-pool wait is built into a solve, latency stays more consistent, and the whole product is tuned for hCaptcha's regular, invisible, and enterprise (rqdata) variants.

Pricing, honestly

Comparing per-solve price here is harder than it looks, because 2Captcha doesn’t publish an hCaptcha rate the way it publishes reCAPTCHA and Turnstile rates:

  • 2Captcha: its live pricing page lists Cloudflare Turnstile at $1.45/1k and reCAPTCHA v2 at $1-$2.99/1k, but no dedicated hCaptcha line, and the rate floats with current worker load. Third-party listicles estimate hCaptcha at roughly $2-$2.99 per 1,000, which is an estimate and not an official number. Watch the common mix-up: the $1.45/1k figure is the Turnstile rate, not hCaptcha.
  • NoneCap: a published $0.25-$0.50 per 1,000 credits depending on the pack, one credit per hCaptcha challenge round, with 100 free credits to start. No subscription, credits never expire, and failed solves are auto-refunded.

Rather than claim a blanket percentage, here’s the honest framing. NoneCap’s price is fixed and published per pack, while 2Captcha’s effective hCaptcha cost is load-dependent and not posted, so verify it against your own dashboard before you switch.

Migrating off in.php / res.php

2Captcha’s classic flow is a two-step poll: POST to in.php with method=hcaptcha, then loop GET res.php until the token is ready.

2Captcha: submit + poll
# 2Captcha: submit to in.php, then poll res.php for the token.
import time, requests

API_KEY = "YOUR_2CAPTCHA_KEY"

cid = requests.post("https://2captcha.com/in.php", data={
    "key":     API_KEY,
    "method":  "hcaptcha",
    "sitekey": "f5ab1c2d-7e8f-4a9b-b1c2-d3e4f5a6b7c8",
    "pageurl": "https://target.example/login",
    "json":    1,
}).json()["request"]

while True:                                  # spin until it's ready
    time.sleep(5)
    r = requests.get("https://2captcha.com/res.php", params={
        "key": API_KEY, "action": "get", "id": cid, "json": 1,
    }).json()
    if r["request"] != "CAPCHA_NOT_READY":
        token = r["request"]
        break

NoneCap collapses that into one call. Create the solve and block for the result with ?wait=N; the token comes back inline, so you don’t write a poll loop:

Create a solve
curl "https://api.nonecap.com/v1/solves?wait=90" \
  -H "Authorization: Bearer $NONECAP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "type":    "hcaptcha",
    "sitekey": "f5ab1c2d-7e8f-4a9b-b1c2-d3e4f5a6b7c8",
    "url":     "https://target.example/login"
  }'
Response
{
  "id": "solve_01HQF7K3JKWZX",
  "object": "solve",
  "type": "hcaptcha",
  "status": "solved",
  "token": "P1_eyJ0eXAi...UV8w",
  "credits_charged": 1
}

Dropped into a Python helper, the whole flow is a few lines:

NoneCap: one call
# NoneCap: one POST, block for the token with ?wait. No poll loop.
import os, requests

def solve_hcaptcha(sitekey: str, url: str) -> str:
    r = requests.post(
        "https://api.nonecap.com/v1/solves",
        headers={"Authorization": f"Bearer {os.environ['NONECAP_KEY']}"},
        params={"wait": 90},               # block up to 90s for the token
        json={"type": "hcaptcha", "sitekey": sitekey, "url": url},
        timeout=120,
    )
    r.raise_for_status()
    return r.json()["token"]                # a real P1_… hCaptcha token

# Submit the returned token as the form's h-captcha-response field.

For long-running jobs you can skip ?wait and pass a webhook_url instead, or poll GET /v1/solves/{id}. See the API reference for the full solve object and every language example.

Enterprise hCaptcha (rqdata)

Enterprise hCaptcha binds each challenge to a fresh rqdata blob, which is where image-recognition solvers tend to fail. NoneCap returns tokens that enterprise sitekeys accept. Pass type: "hcaptcha_enterprise" with the rqdata value. If enterprise rqdata is why you’re shopping for an alternative, this is where NoneCap is strongest. See the enterprise fields in the API reference.

When 2Captcha is the better fit

Be honest about scope. 2Captcha covers a wide spread of captcha types (reCAPTCHA v2/v3, Cloudflare Turnstile, Arkose/FunCaptcha, Amazon, image captchas and more) and backs them with large human-solver capacity. If you need that breadth from one vendor and one balance, or you rely on captcha types NoneCap doesn’t solve, 2Captcha wins. NoneCap is hCaptcha-only; it’s the better pick when you want hCaptcha depth, a single REST call instead of a poll loop, no human queue in the latency path, credits that never expire, and auto-refunds on failures.

Last updated June 2026.

Frequently asked

Is NoneCap a drop-in 2Captcha replacement for hCaptcha?
For hCaptcha workloads, yes, though the request shape changes. 2Captcha uses a legacy in.php submit then a res.php poll loop; NoneCap is a single POST /v1/solves where you can block for the token with ?wait=N (up to 90s) or pass a webhook_url. Both hand back a real token you submit as the form’s h-captcha-response. NoneCap does not solve reCAPTCHA, Turnstile, or FunCaptcha, so it replaces 2Captcha only for hCaptcha.
How much does 2Captcha charge for hCaptcha?
2Captcha doesn’t publish a dedicated hCaptcha price on its pricing page (it lists reCAPTCHA and Turnstile rates instead), and the rate floats with worker load. Third-party listicles estimate roughly $2-$2.99 per 1,000 for hCaptcha. Treat that as an estimate, not an official figure. Note the widely-cited $1.45/1k is 2Captcha’s Turnstile rate, not hCaptcha. NoneCap is a published $0.25-$0.50 per 1,000 credits depending on pack.
Does NoneCap use human solvers like 2Captcha?
No. 2Captcha is a hybrid: AI first, with a verified human-solver fallback when confidence is low. NoneCap has no human queue in the path, which keeps latency more consistent, and it returns a finished hCaptcha token you submit as the h-captcha-response.
Can NoneCap handle enterprise hCaptcha (rqdata)?
Yes. Pass type: "hcaptcha_enterprise" with the IP-bound rqdata blob, and NoneCap returns a token that enterprise sitekeys accept. Enterprise rqdata is where NoneCap is strongest. See the API reference for the enterprise fields.

Start solving hCaptcha in minutes.

100 free credits on signup. Pay per solve, credits never expire, failed solves auto-refunded.