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
| NoneCap | 2Captcha | |
|---|---|---|
| Captcha focus | hCaptcha only: regular, invisible, enterprise rqdata | Many types; hCaptcha de-emphasized among reCAPTCHA, Turnstile, FunCaptcha, etc. |
| How it solves | Built only for hCaptcha; no human-solver queue | Hybrid AI + verified human-solver fallback |
| Latency profile | Consistent, with no worker-queue wait built into the path | Varies with worker load when a task falls back to humans |
| Billing model | Prepaid credits, 1 credit per round | Prepaid balance, pay per solved captcha |
| Credit expiry | Never expire | Balance does not expire (no subscription) |
| Failed solves | Auto-refunded | Not charged for unsolved captchas |
Enterprise rqdata | Fully supported; tokens enterprise sitekeys accept | Supported, but hCaptcha is not a headline product |
| API shape | REST: POST /v1/solves then read token | Legacy 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 start | 100 free credits on signup | No 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 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:
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"
}' {
"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 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?
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?
Does NoneCap use human solvers like 2Captcha?
h-captcha-response.Can NoneCap handle enterprise hCaptcha (rqdata)?
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.