Neurobird Search API reference
Base URL https://search.neurobird.com. Every route is also available under
/v1. Authenticate with Authorization: Bearer <key>, and
create a key with an unauthenticated POST /keys.
POST /search
Search the web
Search the live web and get ranked results with the relevant passages already extracted from each page, so a follow up fetch is usually unnecessary.
Use `search_depth: "basic"` for a quick lookup (1 credit), `"standard"` to open and read the top pages (1 credit), or `"advanced"` to also expand the query and read more pages (2 credits). Set `include_answer: true` (+1 credit) for a grounded summary, and `verify_quotes: true` to have every supporting quote checked against its source text and returned marked verified or not.
Accepts the same fields as Tavily's search endpoint. Also accepts `schema`, a JSON Schema filled from each result, and returns per stage `timings`.
Can be paid per call with x402 instead of a key: send an `Accept` containing `payment-required`, or `?x402=1`, to receive a 402 challenge.
No authentication required.
| Field | Type | Notes |
|---|---|---|
query required | string | |
search_depth | basic | standard | advanced default "basic" | |
topic | general | news | code | science | finance default "general" | |
max_results | integer default 5 | |
days | integer or null | |
time_range | string or null | |
include_domains | array | |
exclude_domains | array | |
country | string or null | |
language | string or null | |
include_answer | boolean or string default false | |
include_raw_content | boolean or string default false | |
include_images | boolean default false | |
verify_quotes | boolean default false | |
schema | object or null | |
expand_query | boolean or null | |
chunks_per_source | integer default 3 |
POST /search/stream
Search with streamed stages (SSE)
Emit each pipeline stage as it completes.
An agent can start reading ranked links while extraction and summarisation are still running, which removes most of the perceived latency of deep search.
No authentication required.
| Field | Type | Notes |
|---|---|---|
query required | string | |
search_depth | basic | standard | advanced default "basic" | |
topic | general | news | code | science | finance default "general" | |
max_results | integer default 5 | |
days | integer or null | |
time_range | string or null | |
include_domains | array | |
exclude_domains | array | |
country | string or null | |
language | string or null | |
include_answer | boolean or string default false | |
include_raw_content | boolean or string default false | |
include_images | boolean default false | |
verify_quotes | boolean default false | |
schema | object or null | |
expand_query | boolean or null | |
chunks_per_source | integer default 3 |
POST /extract
Extract clean page content
Fetch one or more URLs and return the main content as clean markdown, with navigation, adverts and boilerplate removed. PDFs are converted to text.
Pass `query` to trim each page to the passages relevant to it. Pass `schema` to fill a JSON Schema from each page. Costs 1 credit per page.
No authentication required.
| Field | Type | Notes |
|---|---|---|
urls required | array | |
format | markdown | text default "markdown" | |
include_images | boolean default false | |
schema | object or null | |
query | string or null |
POST /mcp
Model Context Protocol server (streamable HTTP)
A hosted MCP server over the streamable HTTP transport, speaking JSON-RPC 2.0. Add it to Claude Code with:
claude mcp add --transport http neurobird-search https://search.neurobird.com/mcp --header "Authorization: Bearer $KEY"
The same URL works in any MCP client that supports streamable HTTP, including Cursor, Windsurf, Zed and the Claude desktop app.
Methods: `initialize`, `tools/list`, `tools/call`, `ping`. Tools: `web_search` (ranked sources with page passages already extracted) and `extract_url` (any page as clean markdown).
Requires Authorization: Bearer <key>.
| Field | Type | Notes |
|---|---|---|
jsonrpc required | 2.0 | |
id | Omitted for notifications. | |
method required | initialize | tools/list | tools/call | ping | |
params | object |
POST /keys
Create a free API key (no signup)
Keyless evaluation path, now throttled rather than unlimited.
The per minute limit alone only stopped a fast loop; a patient one could still mint keys forever from one address. A daily cap per address makes the free tier cost a new IP per handful of keys. Anyone who needs more than that legitimately makes an account, where the limits are per account instead.
No authentication required.
GET /usage
Usage for the calling key
Request count, credits consumed and average latency for the calling key.
Requires Authorization: Bearer <key>.
GET /billing/balance
Credit balance for the calling key
Credit balance for the calling key, split into the free monthly grant and purchased credits, with purchase history.
Requires Authorization: Bearer <key>.
GET /billing/packages
Credit packs available for purchase
Credit packs available for purchase, the price per 1,000 for each, which payment methods are live, and what each kind of request costs in credits.
No authentication required.
POST /billing/crypto/checkout
Buy a credit pack with crypto
Create a NOWPayments invoice for a credit pack.
The order id is ours and is echoed back on the callback, which is how a payment is tied to an API key without trusting anything sent by the payer.
Requires Authorization: Bearer <key>.
GET /payments
How this API can be paid for
Machine readable payment options.
An agent deciding whether it can use this service should be able to find out without first triggering a 402.
No authentication required.
GET /health
Service health
Service health: whether the retrieval backend is reachable, how many egress addresses are active, and whether answer generation is available.
No authentication required.
POST /paid/search
Search, payment required (x402 or MPP)
The same search, but always priced.
`/search` keeps a free demo lane, which means it answers 200 to an unauthenticated caller and is therefore not a payment-required resource in the protocol sense. This route always issues a challenge, so agents and the MPP and x402 registries have an endpoint whose terms are unambiguous.
Both protocols are offered on the same 402: an MPP challenge in `WWW-Authenticate: Payment` and an x402 challenge in `PAYMENT-REQUIRED`.
Requires Authorization: Bearer <key>.
| Field | Type | Notes |
|---|---|---|
query required | string | |
search_depth | basic | standard | advanced default "basic" | |
topic | general | news | code | science | finance default "general" | |
max_results | integer default 5 | |
days | integer or null | |
time_range | string or null | |
include_domains | array | |
exclude_domains | array | |
country | string or null | |
language | string or null | |
include_answer | boolean or string default false | |
include_raw_content | boolean or string default false | |
include_images | boolean default false | |
verify_quotes | boolean default false | |
schema | object or null | |
expand_query | boolean or null | |
chunks_per_source | integer default 3 |
POST /billing/checkout
Start a checkout for a credit pack
Create a Creem checkout session and hand back its URL.
The caller must present the API key the credits should land on, so payment is bound to a key up front rather than guessed from the buyer's email later.
Requires Authorization: Bearer <key>.