Credit usage
Every API call is metered in credits, debited atomically against your balance. The prices listed here — and everywhere else on this site — are the minimum you'll be charged for that operation.
Listed costs are a floor, not a ceiling
Every published price is the minimum guaranteed charge. The actual cost of a single call can go higher depending on what the request actually does — pages scraped, retries, JS rendering depth, output size, LLM tokens consumed by extract / summary, and so on. Treat the numbers below as a baseline for budgeting, not an upper bound.
Minimum cost per endpoint
| Endpoint | Min credits | Notes |
|---|---|---|
| POST /api/v1/scrape | 1 | One URL → markdown / HTML / links. |
| POST /api/v1/search | 2 | One query. Adding `scrapeOptions` scrapes each result and bills per scraped URL on top. |
| POST /api/v1/map | 1 | Discover URLs on a domain. |
| POST /api/v1/crawl | 1 / page | Reserved up-front from the `limit` you pass; unused pages refund on completion. |
| POST /api/v1/batch-scrape | 1 / URL | Reserved from the URL count you submit. |
| POST /api/v1/extract | 2 | Structured JSON extraction (LLM-backed). |
| POST /api/v1/screenshot | 1 | PNG capture. `fullPage` + long waits can lengthen the render but the base price is the same. |
| POST /api/v1/question | 5 | Natural-language Q&A grounded on a single page (LLM-backed). |
| POST /api/v1/highlights | 5 | Extract the most relevant snippets from a page for a given query. |
| POST /api/v1/parse | 1 | Parse a PDF / document into clean text. Long PDFs may bill more. |
| POST /api/v1/summary | 1 | AI summary of a single page. |
| POST /api/v1/branding | 1 | Brand colors / fonts / logos extraction. |
| POST /api/v1/interact | 2 / call | Each click / type / script run against a scrape session is billed separately. |
| POST /api/v1/interact/stop | 0 | Free. Releases the session early. |
| GET /api/v1/crawl/:id | 0 | Polling crawl status is free. |
| GET /api/v1/batch-scrape/:id | 0 | Polling batch status is free. |
| GET /api/v1/usage | 0 | Usage reports are free. |
MCP tool costs match their REST equivalents (e.g. neuroapi_scrape = 1, neuroapi_extract = 2, neuroapi_interact = 2 per call). neuroapi_balance, *_status, and *_cancel tools are free.
What can push a call above the minimum?
- Crawl / batch jobs: billed per actual page returned, up to the
limityou set. Reserved at submission; unused pages are refunded when the job finishes. - Search with
scrapeOptions: the 2-credit search fee is added to a per-result scrape fee for every URL the upstream actually fetches. - Heavy renders: pages that need a real browser, long
waitFor, full-page screenshots, or retries to bypass anti-bot can cost more than the floor. - LLM-backed endpoints (
extract,summary, natural-languageinteractprompts): cost scales with input/output tokens. - Interact sessions: each
/interactcall re-bills — chaining 5 clicks is 5 × the minimum. Idle sessions are auto-released after ~10 min. - Multiple formats: requesting several formats in one
scrapecall may be billed per format depending on what the upstream renders.
Refunds, failures, and reservations
- If your balance is below the minimum, you get
402 insufficient_creditswith nothing debited. - Crawl / batch jobs reserve credits at submission. Pages that never returned (cancelled or short-circuited) are auto-refunded.
- Hard upstream failures (5xx,
503 upstream_busy) don't charge. - Successful calls that return partial data do charge — the work was done upstream.
Watching your usage
Use GET /api/v1/usage for a programmatic rollup, or open Dashboard → Logs for a line-by-line view including the exact creditsCharged on every response envelope.
Designing for cost
Set a sensible
limit on crawls. Skip scrapeOptions on search when titles + URLs are enough. Reuse one sessionId across multiple interact calls instead of re-scraping. Poll status endpoints (free) instead of re-submitting jobs.