NopeCHA APInopecha.com ↗
Access NopeCHA's CAPTCHA solving endpoints: submit reCAPTCHA recognition jobs, generate bypass tokens, poll results, and retrieve account status and system metrics.
What is the NopeCHA API?
The NopeCHA API exposes 8 endpoints covering CAPTCHA image recognition, token generation, account management, and live system metrics. Use submit_recaptcha_recognition to post a base64-encoded reCAPTCHA image with a task instruction and grid size, then poll retrieve_recaptcha_recognition with the returned job ID to get the selected tile indices. Separate endpoints handle reCAPTCHA v2 token generation, API key credit checks, event history, and subscription plan details.
curl -X GET 'https://api.parse.bot/scraper/a78ca28c-fef2-401d-b1c4-d9750d8fead8/get_api_key_status' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace nopecha-com-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""NopeCHA API — check service status, metrics, and pricing plans."""
from parse_apis.nopecha_api import NopeCHA, Plan, Metric, Status, NotFoundError
client = NopeCHA()
# Check the free-tier API key status (no key needed)
status = client.statuses.get()
print(f"Plan: {status.plan}, Credit: {status.credit}/{status.quota}, Status: {status.status}")
# Retrieve real-time system metrics
metrics = client.metrics.get()
print(f"Users: {metrics.nusers}, Online: {metrics.nonline}")
print(f"Avg solve: {metrics.avg_solve_duration}s, reCAPTCHA: {metrics.recaptcha_solve_duration}s")
# List all subscription plans
for plan in client.plans.list(limit=10):
print(f"{plan.name}: {plan.price} — {plan.quota}, features: {plan.features}")
# Demonstrate error handling on status lookup with an invalid key
try:
bad_status = client.statuses.get(api_key="invalid_key_12345")
print(f"Got status: {bad_status.plan}")
except NotFoundError as exc:
print(f"Key not found: {exc}")
print("Exercised: statuses.get / metrics.get / plans.list")
Retrieve API key status including remaining credit balance, quota, and subscription plan. When no API key is provided, returns the free-tier allocation associated with the current visitor IP.
| Param | Type | Description |
|---|---|---|
| api_key | string | NopeCHA API key to check status for. If omitted, returns the free-tier status associated with the current visitor IP. |
{
"type": "object",
"fields": {
"plan": "string indicating subscription tier name (e.g. Free, Starter, Basic)",
"quota": "integer daily quota limit",
"credit": "integer remaining credits for the current period",
"status": "string indicating account status (e.g. Active)",
"duration": "integer seconds until quota reset",
"lastreset": "integer Unix timestamp of last quota reset"
},
"sample": {
"data": {
"plan": "Free",
"quota": 100,
"credit": 100,
"status": "Active",
"duration": 82800,
"lastreset": 1781256367
},
"status": "success"
}
}About the NopeCHA API
CAPTCHA Recognition and Token Generation
Two submit/retrieve pairs handle the core CAPTCHA work. submit_recaptcha_recognition accepts a base64-encoded image or URL via image_data, a task string (the challenge prompt, e.g. "Select all squares with traffic lights"), an optional grid parameter (3x3 or 4x4), and an optional api_key. It returns a data string containing the job ID. You then call retrieve_recaptcha_recognition with that job_id to get back a data array of tile selections.
For full token generation, submit_recaptcha_v2_token takes a url (the target page), a sitekey, and an optional data JSON string for parameters like the s value or enterprise flags. The companion retrieve_recaptcha_v2_token returns a data string containing the solved token, ready to be submitted to the target form.
Account Status and Usage Events
get_api_key_status returns the plan name, integer quota (daily limit), integer credit (remaining for the current period), status string, duration in seconds until the next quota reset, and a lastreset Unix timestamp. If no api_key is supplied, the response reflects the free-tier allocation tied to the caller's IP. get_api_key_events returns an events array of recent job activity; the optional n parameter caps how many events come back.
System Metrics and Pricing Plans
get_system_metrics is a zero-input endpoint that returns live platform stats: nusers (total registered users), nonline (currently online users), and average solve durations broken out as captcha.recog.solveduration, captcha.recog.hcaptcha.solveduration, and captcha.recog.recaptcha.solveduration in seconds. get_pricing_plans returns an array of plan objects, each with name, price, quota, and features, giving a programmatic view of available subscription tiers without hitting the marketing site.
The NopeCHA API is a managed, monitored endpoint for nopecha.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when nopecha.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official nopecha.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Automate reCAPTCHA v2 solving in browser automation pipelines using
submit_recaptcha_v2_tokenandretrieve_recaptcha_v2_token. - Monitor NopeCHA account credit consumption and quota reset timing via
get_api_key_statusto avoid mid-run failures. - Log job-level activity by pulling
get_api_key_eventswith a cappednvalue for auditing or debugging. - Compare live hCaptcha vs. reCAPTCHA average solve durations from
get_system_metricsto time-budget scraping workflows. - Programmatically fetch current subscription plan options via
get_pricing_plansto display or compare tiers in a dashboard. - Submit image-grid recognition tasks with
submit_recaptcha_recognitionspecifying3x3or4x4grid and a natural-languagetaskprompt.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does NopeCHA have an official developer API?+
What does `get_api_key_status` return when no API key is provided?+
api_key is omitted, the endpoint returns the free-tier allocation associated with the calling IP address. The response still includes plan, quota, credit, status, duration (seconds to next reset), and lastreset (Unix timestamp), so the shape is identical to an authenticated key check.Does the API support hCaptcha token generation, not just image recognition?+
captcha.recog.hcaptcha.solveduration; there is no dedicated hCaptcha token submission endpoint here. You can fork this API on Parse and revise it to add an hCaptcha token submission and retrieval endpoint.How granular is the `get_api_key_events` response?+
n parameter limits how many events are returned, but the response schema does not expose per-event fields like solve duration, CAPTCHA type, or success/failure status beyond the raw array. If you need filtered or aggregated event data, you can fork the API on Parse and revise it to add filtering parameters.Does the API cover reCAPTCHA v3 or enterprise token generation?+
submit_recaptcha_v2_token endpoint accepts an optional data JSON string that can include an enterprise flag, but v3-specific score-based solving is not a separate endpoint in this API. You can fork it on Parse and revise to add a dedicated reCAPTCHA v3 submission endpoint.