Skip to content

x402 web search API

This API sends one query to several search engines, merges the results and ranks them. It costs 0.01 USDC per query, paid with x402.

  • Endpoint: POST https://x402.api.nodely.io/v1/search. GET with query parameters also works; separate list values with commas.
  • Engines: Brave Search, Google (via Serper), Bing, Marginalia and Wikipedia.
  • A search where no engine returns anything isn’t charged.

Field names follow Tavily. The API also accepts the field names used by Exa, You.com, Perplexity, Brave, Serper and Linkup, so an existing client usually works unchanged.

Field Type Notes
query string, 1–400 chars Required. Alias: q
max_results integer 1–50, default 10 Aliases: count, num_results, numResults, maxResults, limit, num
page integer 1–10, default 1
time_range day / week / month / year Aliases: freshness, search_recency_filter
start_date, end_date date (YYYY-MM-DD)
include_domains, exclude_domains string array
language string e.g. en, en-US
country string ISO 3166-1 alpha-2
safesearch off / moderate / strict (or 0 / 1 / 2)
topic general / news, default general
engines array of braveapi, bing, serper, marginalia, wikipedia Limits the search to these engines
include_answer boolean, default false
stream boolean, default false See Streaming
{ "query": "algorand x402", "max_results": 5, "time_range": "month" }
{
"query": "algorand x402",
"results": [
{
"title": "…",
"url": "https://…",
"content": "…",
"score": 0.92,
"published_date": "2026-10-01",
"engines": ["braveapi", "bing"],
"position": 1
}
],
"answer": null,
"suggestions": [],
"engines": [{ "name": "bing", "results": 10, "elapsed_s": 0.8 }],
"response_time": 1.4,
"request_id": "…",
"warnings": []
}
  • score is between 0 and 1.
  • engines on each result lists the engines that returned it.
  • The top-level engines reports each engine’s result count, error and timing.

The PAYMENT-RESPONSE header holds the payment’s transaction id.

Send Accept: application/x-ndjson for newline-delimited JSON, or Accept: text/event-stream for server-sent events. Each engine’s results arrive as soon as that engine answers.

The stream sends events in this order:

  • meta
  • results: one per engine, with only results not already sent
  • engine_error: when an engine fails
  • done or error

The done event carries the full response shown above, and the request is charged. A stream that ends with error isn’t charged.

Show the 402 offer without paying:

Terminal window
curl -si -X POST https://x402.api.nodely.io/v1/search \
-H 'Content-Type: application/json' \
-d '{"query":"x402"}'

Paid request with the Node.js client from Pricing & payment:

const res = await paidFetch("https://x402.api.nodely.io/v1/search", {
method: "POST",
headers: { "Content-Type": "application/json", Accept: "application/json" },
body: JSON.stringify({ query: "algorand news", topic: "news", time_range: "week" }),
});

The full schema is in the live API reference.