Skip to the page

Brave Search API migration

Change the host and keep Brave's JSON.

Since November 9, 2026 SpecStream answers the Brave Search API call on Brave's own path, /res/v1/web/search, in Brave's JSON. Brave charges $5 per 1,000 requests; SpecStream charges $5 per 1,000 searches of up to 10 results.

Change https://api.search.brave.com to https://api.specstream.ai and put a SpecStream key in X-Subscription-Token. A call of up to 10 results costs $0.005, and a call with no count returns 10.

It is the most accurate web search API in the world: 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks, on the benchmarks page.

New accounts get $10 of credit, no card. It covers 2,000 searches.

Brave Search API to SpecStream, parameter by parameter and field by field

SpecStream (`/res/v1/web/search`)Brave Search API
Addresshttps://api.specstream.ai/res/v1/web/search, by GET with the query string or by POST with a JSON bodyhttps://api.search.brave.com/res/v1/web/search
KeyYour SpecStream key in X-Subscription-Token, as a Bearer token, or as the HTTP Basic password. No key gets a 401Your Brave key in the X-Subscription-Token header
`q`Read as the search. Operators written inside q, such as site:, shape itThe query. Brave's search operators are included directly within it
`count`Read, 1 to 20, default 20. Up to 10 results cost $0.005 and run the fast search; 11 to 20 cost $0.011Maximum number of results per page, max 20, default 20. A request can return fewer than count
`offset`Read, 0 to 9, in pages of count, as on Brave. A page past the last result gets a 400Starting position for results, 0 based, max 9
`freshness`Read: pd, pw, pm, py, or a range written YYYY-MM-DDtoYYYY-MM-DD, applied as a date filter on the searchpd, pw, pm, py, or a date range
`country`, `search_lang`, `ui_lang`, `safesearch`, `spellcheck`, `text_decorations`, `result_filter`, `goggles`Accepted with no error and not used to shape the search. country comes back in query.countryRequest parameters of the Web Search API
`extra_snippets` and `summary`Accepted and not used. Each result carries one description, and the reply has no summarizer keyextra_snippets returns up to 5 additional excerpts per search result
The replytype: search, query with original and more_results_available, mixed, and web.results[], plus specstream with the request ID and the price of the calltype: search, query, mixed and web.results[]
Each resulttitle, url, description, profile, meta_url, type, subtype, is_source_local and is_source_both. page_age and age only when the result carries a date, which most do nottitle, url, description, meta_url, profile and page_age
Price$5 per 1,000 searches of up to 10 results, paid from a balance. Credit you buy never expires, and a call stopped by a 429 charges nothing$5 per 1,000 requests on the Search plan, with $5 in free credits every month. Each API call counts as one request
RateUp to 8,800 searches a minute on one account. A call over that gets a 429 with Retry-After50 queries per second on the Search plan

What changes and what stays when you move from Brave

Other options when you leave the Brave Search API

How SpecStream scores

The same numbers as the benchmarks page, from the official tasks and scorers.

How to move from the Brave Search API

1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 2,000 searches.

2. Set the host to https://api.specstream.ai where your code has https://api.search.brave.com, and send the SpecStream key in X-Subscription-Token. In Python:

import os
import requests

BASE = "https://api.specstream.ai"  # was https://api.search.brave.com

reply = requests.get(
    f"{BASE}/res/v1/web/search",
    params={"q": "open source vector databases", "count": 10},
    headers={"X-Subscription-Token": os.environ["SPECSTREAM_API_KEY"]},
).json()

for result in reply["web"]["results"]:
    print(result["title"], result["url"], result["description"])

In JavaScript:

const BASE = "https://api.specstream.ai"; // was https://api.search.brave.com

const params = new URLSearchParams({ q: "open source vector databases", count: "10" });
const reply = await fetch(`${BASE}/res/v1/web/search?${params}`, {
  headers: { "X-Subscription-Token": process.env.SPECSTREAM_API_KEY },
}).then((response) => response.json());

for (const result of reply.web.results) {
  console.log(result.title, result.url, result.description);
}

3. Leave count, offset and freshness as they are. A call of up to 10 results costs $0.005 and runs the fast search.

4. Treat page_age and extra_snippets as optional in your parser. Each reply carries specstream.price_usd, the price of that call.

Frequently asked questions

Something we didn't answer? Talk to a human

What is the best Brave Search API alternative?
SpecStream, at $5 per 1,000 searches of up to 10 results. It answers Brave's own call at https://api.specstream.ai/res/v1/web/search in Brave's JSON and scores 97.9 F-score on all 1,000 SimpleQA Verified questions.
How do I migrate from the Brave Search API?
Change one host and one key. Replace https://api.search.brave.com with https://api.specstream.ai and send a SpecStream key in X-Subscription-Token. The path, the parameters and web.results[] stay as they are.
Is there a free Brave Search API alternative?
New SpecStream accounts get $10 of credit with no card, which covers 2,000 searches. After that a search costs $0.005, and credit you buy never expires.
How much does the Brave Search API cost?
$5 per 1,000 requests on the Search plan, with $5 in free credits every month and up to 50 queries per second. SpecStream costs $5 per 1,000 searches and takes up to 8,800 searches a minute on one account.
Which Brave parameters does SpecStream read?
Four: q, count (1 to 20), offset (0 to 9) and freshness. country, search_lang, safesearch, extra_snippets and the rest are accepted with no error and do not change the search.
Does the reply include `page_age` and extra snippets?
page_age comes back only on results that carry a date, and most do not. The reply has one description per result and no extra_snippets array.
What does a call with no `count` cost?
$0.005. SpecStream returns 10 results when count is unset, and a call of up to 10 results is one search. count=20 costs $0.011.

Sources

SpecStream wrote this page. The route's behavior is read from its code; each rival figure comes from that company's own page.

  1. Brave Search APIbrave.com/search/api/, read Nov 9, 2026
  2. Brave Web Search API documentationapi-dashboard.search.brave.com/app/documentation/web-search/get-started, read Nov 9, 2026
  3. Brave Search API on AWS Marketplaceaws.amazon.com/marketplace/pp/prodview-qjlabherxghtq, read Nov 9, 2026
  4. Serperserper.dev/, read Nov 9, 2026
  5. Tavily pricingtavily.com/pricing, read Nov 9, 2026
  6. Exa pricingexa.ai/docs/admin/pricing.md, read Nov 9, 2026
  7. Firecrawl pricingfirecrawl.dev/pricing, read Nov 9, 2026
  8. SerpApi pricingserpapi.com/pricing, read Nov 9, 2026
  9. SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
  10. SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
  11. SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026