<!-- twin of https://specstream.ai/migrate/brave -->
# Brave Search API migration: change the host and keep Brave's JSON

Compared on Nov 10, 2026. The page: https://specstream.ai/migrate/brave

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](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=migrate-brave) page.

[Get an API key](https://specstream.ai/signup?src=alternatives-migrate-brave&utm_source=alternatives-md&utm_campaign=migrate-brave&returnTo=%2Fworkspace%2Fsearch%3Froute%3Dbrave) 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 |
|---|---|---|
| Address | `https://api.specstream.ai/res/v1/web/search`, by `GET` with the query string or by `POST` with a JSON body | `https://api.search.brave.com/res/v1/web/search` |
| Key | Your SpecStream key in `X-Subscription-Token`, as a Bearer token, or as the HTTP Basic password. No key gets a `401` | Your Brave key in the `X-Subscription-Token` header |
| `q` | Read as the search. Operators written inside `q`, such as `site:`, shape it | The 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.011 | Maximum 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 `400` | Starting 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 search | `pd`, `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.country` | Request 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 key | `extra_snippets` returns up to 5 additional excerpts per search result |
| The reply | `type: search`, `query` with `original` and `more_results_available`, `mixed`, and `web.results[]`, plus `specstream` with the request ID and the price of the call | `type: search`, `query`, `mixed` and `web.results[]` |
| Each result | `title`, `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 not | `title`, `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 |
| Rate | Up to 8,800 searches a minute on one account. A call over that gets a `429` with `Retry-After` | 50 queries per second on the Search plan |

## What changes and what stays when you move from Brave

### The whole migration is the host and the key

Your code keeps Brave's path, its header name, its parameters and its parser. The host changes, and the key in the header.

```
# Before
curl "https://api.search.brave.com/res/v1/web/search?q=open+source+vector+databases&count=10" \
  -H "X-Subscription-Token: $BRAVE_API_KEY"

# After
curl "https://api.specstream.ai/res/v1/web/search?q=open+source+vector+databases&count=10" \
  -H "X-Subscription-Token: $SPECSTREAM_API_KEY"
```

The reply has Brave's shape: `web.results[]` with `title`, `url` and `description`, which is what LangChain's Brave wrapper and Open WebUI read. A client that keeps `count` unset, as Dify and langchain-community do, gets 10 results and pays $0.005 a call.

### What the reply leaves out

The route returns web results only. Each result has one `description`, so a call with `extra_snippets` gets no `extra_snippets` array, and `summary` adds no summarizer key. `page_age` and `age` appear only on results that carry a date, and most do not, so read them as optional.

A refusal keeps Brave's error shape: `type: ErrorResponse` with `error.id`, `status`, `code` and `detail`. A missing key is a `401`, an empty balance a `402`, and a busy minute a `429` with `Retry-After` that charges nothing.

### $5 per 1,000, with no monthly plan

Brave's Search plan costs $5 per 1,000 requests with $5 in free credits every month. SpecStream charges $5 per 1,000 searches of up to 10 results and $0.011 for 11 to 20. New accounts start with $10 of credit, no card, which covers 2,000 searches, and every rate is on the [pricing](https://specstream.ai/pricing?utm_source=alternatives&utm_campaign=migrate-brave) page.

### The most accurate web search API in the world

On SimpleQA Verified the SpecStream Search API scores 97.9 F-score on all 1,000 official questions, 978 of them correct. On WideSearch it scores 64.0 item F1 and 43.4 row F1 on all 200 official tasks. The Extract API scores 0.908 F1 on WCXB. Every score and its method is on the [benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=migrate-brave) page.

### About one second a search, measured under load

Every drop-in route runs the fast search unless the call asks for page text or results past the first ten. On November 9, 2026 production took 1 to 20 fast searches a second and answered 718 of 720: the median was 0.82 s at 1 search a second and 1.07 s at 20 a second, and the 95th percentile stayed between 1.09 and 1.73 s. One account takes up to 8,800 searches a minute; a call over that gets a `429` with `Retry-After` and is not charged.

### You decide what is kept, on each key

Create a key with `zero_retention` and a search made with it keeps no request text and no answer after the reply: it is not in the history, its answer is not reused for another call, and its log lines carry neither. `spend_cap_cents` is the most the key can spend.

```
curl -X POST https://api.specstream.ai/v1/account/keys \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"name": "production", "scopes": ["account:read", "finds:spend"], "spend_cap_cents": 500000, "zero_retention": true}'
```

### Search, pages and rows on one key

The same key calls `GET /v1/web-search`, which returns up to 100 results for one search and an `answer` with the page it was read from. It reads up to 20 pages or documents a call with the [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=migrate-brave) at $0.80 per 1,000 pages, and a page with no text is not charged. [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=migrate-brave) returns every match for a request in plain words as structured rows at 5¢, 15¢ or $1 a row, with a source URL on every value, and the most a run can cost is approved before it starts.

## Other options when you leave the Brave Search API

### Serper

Google results resold as JSON, in credit packs from 50k credits at $1.00 per 1,000, and the credits are valid for 6 months. SpecStream reads the whole live web, answers Serper's own call at `https://api.specstream.ai/serper`, and the credit you buy never expires.

### Tavily

A search API billed in credits: $0.008 a credit on pay as you go, with 1,000 free credits a month, and requests stop when the monthly credits run out. SpecStream answers Tavily's call at `https://api.specstream.ai/tavily` and spends from a balance at $5 per 1,000 searches.

### Exa

A search API from $4 per 1,000 requests on `lite` and $7 per 1,000 on `auto` and `fast`. SpecStream answers Exa's call at `https://api.specstream.ai/exa` at $5 per 1,000 searches, with 97.9 F-score on all 1,000 SimpleQA Verified questions.

### Firecrawl

Search and scrape billed in credits by monthly plan: a search takes 2 credits, and the Standard plan is $99 a month for 100,000 credits. SpecStream has no plan to buy first: a search takes $0.005 from your balance and a page read $0.0008.

### SerpApi

Search engine result pages as JSON, sold by monthly plan: Starter is $25 a month for 1,000 searches. On SpecStream $25 pays for 5,000 searches, on Brave's path and in Brave's JSON.

## 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

### 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.

- [Brave Search API](https://brave.com/search/api/), read Nov 9, 2026
- [Brave Web Search API documentation](https://api-dashboard.search.brave.com/app/documentation/web-search/get-started), read Nov 9, 2026
- [Brave Search API on AWS Marketplace](https://aws.amazon.com/marketplace/pp/prodview-qjlabherxghtq), read Nov 9, 2026
- [Serper](https://serper.dev/), read Nov 9, 2026
- [Tavily pricing](https://tavily.com/pricing), read Nov 9, 2026
- [Exa pricing](https://exa.ai/docs/admin/pricing.md), read Nov 9, 2026
- [Firecrawl pricing](https://www.firecrawl.dev/pricing), read Nov 9, 2026
- [SerpApi pricing](https://serpapi.com/pricing), read Nov 9, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 10, 2026
- [SpecStream pricing](https://specstream.ai/pricing), read Nov 10, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 10, 2026
