<!-- twin of https://specstream.ai/migrate/serper -->
# Serper migration: change the base address and keep Serper's JSON

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

Since November 9, 2026 SpecStream answers Serper's search call at `https://api.specstream.ai/serper/search`, in Serper's JSON. Serper sells Google results in credit packs valid for 6 months; SpecStream searches the whole live web at $5 per 1,000 searches, and credit never expires.

Change `https://google.serper.dev` to `https://api.specstream.ai/serper` and put a SpecStream key in `X-API-KEY`. Your body, `q`, `num` and `page`, stays as it is.

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-serper) page.

[Get an API key](https://specstream.ai/signup?src=alternatives-migrate-serper&utm_source=alternatives-md&utm_campaign=migrate-serper&returnTo=%2Fworkspace%2Fsearch%3Froute%3Dserper) New accounts get $10 of credit, no card. It covers 2,000 searches.

## Serper to SpecStream, parameter by parameter and field by field

| | SpecStream (`/serper/search`) | Serper |
|---|---|---|
| Address | `https://api.specstream.ai/serper/search`, by `POST` with a JSON body, by `POST` with the fields in the query string, or by `GET` | `https://google.serper.dev/search` |
| Key | Your SpecStream key in `X-API-KEY`, in `apiKey=` in the address, as a Bearer token or as the HTTP Basic password. No key gets a `401` | Your Serper key in the `X-API-KEY` header |
| `q` | Read as the search, with the operators written inside it, such as `site:` | The query. Each call queries Google for the latest results, and nothing is cached |
| `num` | Read, 1 to 100, default 10. Up to 10 results cost $0.005 and run the fast search; 100 cost $0.059 | A field of the search request, beside `q`, `gl`, `hl`, `page`, `tbs`, `location` and `autocorrect` |
| `page` | Read, from 1, in pages of `num`. A page past the last result the search returns gets a `400` | A field of the search request: the page of results |
| `tbs` | Read as a date filter: `qdr:` with `h`, `d`, `w`, `m` or `y` and a count, or `cdr:1,cd_min:M/D/YYYY,cd_max:M/D/YYYY`. `qdr:h` reads as the past day | Google's time filter |
| `gl`, `hl`, `location`, `autocorrect` | Accepted with no error and repeated in `searchParameters`. They do not shape the search | Set the search location by country and language |
| Search types | Web search at `/serper/search`. The images, news, maps, places, videos, shopping, scholar, patents and autocomplete paths are not served | Images, News, Maps, Places, Videos, Shopping, Scholar, Patents and Autocomplete |
| The reply | `searchParameters` with `q`, the fields you sent, `type`, `num` and `page`; `answerBox` with `answer`, `link` and `title` on page 1 when the search has an answer; `organic[]`; `credits: 1`; `specstream` with the request ID and the price. `knowledgeGraph`, `peopleAlsoAsk` and `relatedSearches` are not returned | `organic`, `knowledgeGraph`, `peopleAlsoAsk` and `relatedSearches` |
| Each organic result | `title`, `link`, `snippet` and `position`, plus `date` when the result carries one | `title`, `link`, `snippet` and `position` |
| 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 | Credit packs from 50k credits at $1.00 per 1,000 to 12.5M credits at $0.30 per 1,000. Credits are valid for 6 months |
| Rate | Up to 8,800 searches a minute on one account | 50 queries per second on the smallest pack, 300 on the Ultimate pack |

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

### The whole migration is the base address and the key

Your code keeps Serper's body, its header name and its parser. The base address changes, and the key in `X-API-KEY`.

```
# Before
curl -X POST https://google.serper.dev/search \
  -H "X-API-KEY: $SERPER_API_KEY" -H "Content-Type: application/json" \
  -d '{"q": "open source vector databases", "num": 10, "page": 1}'

# After
curl -X POST https://api.specstream.ai/serper/search \
  -H "X-API-KEY: $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"q": "open source vector databases", "num": 10, "page": 1}'
```

The reply has Serper's shape: `organic[]` with `title`, `link`, `snippet` and `position`, and `answerBox.answer` when the search has an answer. LangChain's Serper wrapper sends its fields in the query string of a POST, and the route reads them there too.

### What the reply leaves out

The route serves web search. `knowledgeGraph`, `peopleAlsoAsk` and `relatedSearches` are not in the reply, and the images, news, maps and other typed paths are not served. `credits` is always 1, so read the price of a call from `specstream.price_usd`.

A refusal keeps Serper's shape, `message` and `statusCode`, with a `code`. 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, from the whole live web

Serper's packs run from $1.00 to $0.30 per 1,000 credits, and the credits are valid for 6 months. SpecStream charges $5 per 1,000 searches of up to 10 results, reads the whole live web at the moment of the call, and the credit you buy never expires. New accounts start with $10 of credit, no card, which covers 2,000 searches. Every rate is on the [pricing](https://specstream.ai/pricing?utm_source=alternatives&utm_campaign=migrate-serper) 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-serper) page.

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

Every drop-in route runs the fast search unless the call asks for page text, the answer 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-serper) 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-serper) 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 Serper

### Brave Search API

A search API on Brave's own index: $5 per 1,000 requests on the Search plan, with $5 in free credits every month and 50 queries per second. SpecStream answers Brave's call at `https://api.specstream.ai/res/v1/web/search` at the same $5 per 1,000 searches.

### SerpApi

Search engine result pages as JSON, sold month to month: Starter is $25 a month for 1,000 searches, with 200 successful searches per hour. On SpecStream $25 pays for 5,000 searches with no monthly plan.

### Tavily

A search API at $0.008 a credit on pay as you go: a basic search costs 1 credit and an advanced search 2. SpecStream answers Tavily's call at `https://api.specstream.ai/tavily` at $0.005 a search.

### 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` and scores 97.9 F-score on all 1,000 SimpleQA Verified questions.

### Firecrawl

Search and scrape by monthly plan: Hobby is $19 a month for 5,000 credits and Standard $99 a month for 100,000. SpecStream answers Firecrawl's search and scrape at `https://api.specstream.ai/firecrawl` and charges from a balance, $0.005 a search and $0.0008 a page.

## How to move from Serper

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 base address to `https://api.specstream.ai/serper` where your code has `https://google.serper.dev`, and send the SpecStream key in `X-API-KEY`. In Python:

```
import os
import requests

BASE = "https://api.specstream.ai/serper"  # was https://google.serper.dev

reply = requests.post(
    f"{BASE}/search",
    json={"q": "open source vector databases", "num": 10, "page": 1},
    headers={"X-API-KEY": os.environ["SPECSTREAM_API_KEY"]},
).json()

for result in reply["organic"]:
    print(result["position"], result["title"], result["link"], result["snippet"])
```

In JavaScript:

```
const BASE = "https://api.specstream.ai/serper"; // was https://google.serper.dev

const reply = await fetch(`${BASE}/search`, {
  method: "POST",
  headers: { "X-API-KEY": process.env.SPECSTREAM_API_KEY, "Content-Type": "application/json" },
  body: JSON.stringify({ q: "open source vector databases", num: 10, page: 1 }),
}).then((response) => response.json());

for (const result of reply.organic) {
  console.log(result.position, result.title, result.link, result.snippet);
}
```

3. Keep `num`, `page` and `tbs` as they are. Treat `knowledgeGraph`, `peopleAlsoAsk` and `relatedSearches` as optional in your parser.

4. Read the price of each call from `specstream.price_usd`; `credits` stays 1 so that code which counts it keeps working.

## Frequently asked questions

### What is the best Serper alternative?

SpecStream, at $5 per 1,000 searches from the whole live web. It answers Serper's own call at `https://api.specstream.ai/serper/search` in Serper's JSON and scores 97.9 F-score on all 1,000 SimpleQA Verified questions.

### How do I switch from the Serper API?

Change one base address and one key. Replace `https://google.serper.dev` with `https://api.specstream.ai/serper` and send a SpecStream key in `X-API-KEY`. The body and `organic[]` stay as they are.

### Is there a free Serper 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 Serper cost?

From $1.00 per 1,000 credits in a 50k pack to $0.30 per 1,000 in a 12.5M pack, with credits valid for 6 months and 2,500 free queries to start. SpecStream costs $5 per 1,000 searches, with no expiry.

### Which Serper parameters does SpecStream read?

Four: `q`, `num` (1 to 100), `page` and `tbs`. `gl`, `hl`, `location` and `autocorrect` are accepted, repeated in `searchParameters` and do not change the search.

### Does the reply include `answerBox` and `knowledgeGraph`?

`answerBox` comes back on page 1 when the search has an answer, with `answer`, `link` and `title`. `knowledgeGraph`, `peopleAlsoAsk` and `relatedSearches` are not returned.

### Can one call return 100 results?

Yes. Send `num: 100` and one call returns up to 100 results for $0.059. Up to 10 results cost $0.005.

## Sources

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

- [Serper](https://serper.dev/), read Nov 9, 2026
- [Brave Search API](https://brave.com/search/api/), read Nov 9, 2026
- [SerpApi pricing](https://serpapi.com/pricing), read Nov 9, 2026
- [Tavily API credits](https://docs.tavily.com/documentation/api-credits.md), 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
- [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
