<!-- twin of https://specstream.ai/migrate/serpapi -->
# SerpApi compatible: change the address, at $5 per 1,000

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

SerpApi's Starter plan is $25 a month for 1,000 searches, $25 per 1,000. SpecStream answers the same `GET /search.json?engine=google` in SerpApi's JSON for $0.005 a search, with no monthly plan.

The switch is one line: `https://api.specstream.ai/serpapi` in place of `https://serpapi.com`, and a SpecStream key as `api_key`. In serpapi-python that is `client.BASE_DOMAIN`.

SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks, at $5 per 1,000 searches of up to 10 results.

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

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

| | SpecStream | SerpApi |
|---|---|---|
| Address | `GET https://api.specstream.ai/serpapi/search.json?engine=google`, and `/serpapi/search` | `GET https://serpapi.com/search?engine=google` |
| The key | A SpecStream key as `api_key` in the address | A SerpApi key as `api_key` in the address |
| Results and pages | `num` 1 to 100, 10 when you send none, and `start` for the offset. `serpapi_pagination.next` carries the next page | The number of results returned does not change the credits used |
| Dates | `tbs` with `qdr:w` style ranges or `cdr:1,cd_min:...,cd_max:...` dates | `tbs` for advanced search parameters, dates among them |
| Each result | `position`, `title`, `link`, `displayed_link`, `snippet`, and `date` when the page has one. Not returned: `redirect_link`, `thumbnail`, `favicon`, `snippet_highlighted_words`, `sitelinks` and `source` | `position`, `title`, `link`, `redirect_link`, `displayed_link`, `thumbnail`, `favicon`, `snippet` and more |
| Errors | SerpApi's `{"error": ...}`: `401` with no key, `400` for `tbm` or another engine, `429` when the balance is empty. A busy call gets `429` with `Retry-After` and is not charged | Cached, errored and failed searches are not counted |
| Price per 1,000 searches | $5 for up to 10 results. 100 results cost $0.059 a call | $25 on Starter, $15 on Developer ($75 for 5,000), $10 on Production ($150 for 15,000) |
| Throughput | Up to 8,800 searches a minute on one account | 200 searches an hour on Starter, 1,000 on Developer, 3,000 on Production |
| Free to start | $10 of credit, no card, which covers 2,000 searches | 250 searches a month on the Free plan |

## The SerpApi reference, on SpecStream

### The call, before and after

```
# Before
curl "https://serpapi.com/search.json?engine=google&q=Larkspur+Colorado+mayor&api_key=$SERPAPI_API_KEY"

# After
curl "https://api.specstream.ai/serpapi/search.json?engine=google&q=Larkspur+Colorado+mayor&api_key=$SPECSTREAM_API_KEY"
```

With SerpApi's Python client, serpapi 1.2.0, the change is one line after the client is made. `search` and `next_page()` work as before.

```
import serpapi

client = serpapi.Client(api_key=SPECSTREAM_KEY); client.BASE_DOMAIN = "https://api.specstream.ai/serpapi"
results = client.search({"engine": "google", "q": "Larkspur Colorado mayor"})
for result in results["organic_results"]:
    print(result["position"], result["title"], result["link"])
```

### Apps and SDKs that take the address as a setting

Each line was run on production on November 10, 2026 through that client's own request and reply code. Put your SpecStream key wherever the client takes its key.

The older `google-search-results` Python package (2.4.2): set `GoogleSearch.BACKEND = "https://api.specstream.ai/serpapi"` before the first search.

### What the route reads, and what it refuses

Read and applied: `q`, `engine` `google`, `num` (1 to 100), `start`, `tbs` with `qdr:` or `cdr:` dates, `api_key`, and the client's `next_page()`, which follows `serpapi_pagination.next`.

Refused with `400`: `tbm` (news, images and the other tabs) and any `engine` other than `google`. A call with no key gets `401`. Every parameter was measured on production on Nov 10, 2026 with serpapi 1.2.0, and the full [pass table](https://specstream.ai/specstream/dialects/serpapi.md) lists each one and its result.

### Every field that comes back

The reply has `search_metadata` with `id`, `status`, `created_at`, `processed_at` and `total_time_taken`, `search_parameters` with `engine` and `q`, `search_information` with `organic_results_state`, `query_displayed`, `total_results` and `time_taken_displayed`, `organic_results[]`, and `serpapi_pagination` with `current`, `next_link` and `next`.

The route does not return `answer_box`, `knowledge_graph`, `related_questions`, `local_results`, `top_stories`, `related_searches`, `search_metadata.json_endpoint`, `google_url` or `raw_html_file`, or a result's `redirect_link`, `thumbnail`, `favicon`, `snippet_highlighted_words`, `sitelinks` and `source`. One field is added, `specstream`, with the call's `price_usd`.

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

On SerpApi, 1,000 searches a month cost $25 on Starter and 5,000 cost $75 on Developer, each with an hourly limit. On SpecStream every call of up to 10 results costs $0.005, each started block of 10 more adds $0.006, and credit you buy never expires. A busy call gets `429` with `Retry-After` and charges nothing.

### The most accurate web search API, in about one second

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

A call of up to 10 results on the first page runs the fast search. Measured on production on November 9, 2026, its median was 0.82 s at 1 search a second and 1.07 s at 20 a second, the 95th percentile stayed between 1.09 and 1.73 s, and it answered 718 of 720. One account can send up to 8,800 searches a minute.

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

Create the key with `zero_retention` and a search made with it keeps no request text and no answer after the reply. `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 reads up to 20 pages or documents a call with the [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=migrate-serpapi) 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-serpapi) 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. The most a run can cost is approved before it starts. The full comparison is on the [SerpApi alternative](https://specstream.ai/alternatives/serpapi?utm_source=alternatives&utm_campaign=migrate-serpapi) page.

## What else SerpApi users price

### SearchApi.io

Google results on monthly plans from $40 for 10,000 searches, $4 per 1,000, with 100 free requests. SpecStream needs no plan and answers the SerpApi call your code already sends.

### Serper

Google results in credit packs from $1.00 per 1,000 for 50,000 credits, with no monthly subscription, in Serper's own reply. SpecStream keeps SerpApi's request and reply, and scores 97.9 F-score on SimpleQA Verified.

### VALUE SERP

Google results at $2.50 per 1,000 on pay as you go, or 25,000 searches for $50 a month. SpecStream charges $0.005 a search with no plan, and its credit never expires.

## How to migrate, step by step

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. With serpapi-python, set `client.BASE_DOMAIN` to `https://api.specstream.ai/serpapi` and pass the SpecStream key as `api_key`. Without the client, in Python:

```
import requests

URL = "https://api.specstream.ai/serpapi/search.json"  # was https://serpapi.com/search.json

reply = requests.get(
    URL,
    params={"engine": "google", "q": "Larkspur Colorado mayor", "num": 10, "api_key": SPECSTREAM_KEY},
    timeout=30,
)
reply.raise_for_status()
for result in reply.json()["organic_results"]:
    print(result["position"], result["title"], result["link"])
```

3. In JavaScript, SerpApi's npm client keeps its host in its code, so call the address with `fetch`:

```
const url = new URL("https://api.specstream.ai/serpapi/search.json");
url.search = new URLSearchParams({ engine: "google", q: "Larkspur Colorado mayor", api_key: process.env.SPECSTREAM_KEY });
const data = await (await fetch(url)).json();
for (const result of data.organic_results) console.log(result.title, result.link);
```

4. Read `429` with `Retry-After` as a call to send again later; it is not charged.

## Frequently asked questions

### Is there a SerpApi compatible API?

Yes. SpecStream answers SerpApi's `GET /search.json?engine=google` at `https://api.specstream.ai/serpapi` in SerpApi's JSON, as measured on production on Nov 10, 2026 with serpapi-python 1.2.0. A search of up to 10 results costs $0.005.

### How do I migrate from SerpApi?

Change one line: `https://serpapi.com` becomes `https://api.specstream.ai/serpapi`, and a SpecStream key goes in `api_key`. `q`, `num`, `start` and `tbs` keep their meaning, and the reply has the same `organic_results`.

### How much does SerpApi cost?

From $25 a month for 1,000 searches on Starter to $150 for 15,000 on Production, with 250 free searches a month. SpecStream costs $5 per 1,000 with no monthly plan.

### Which apps and SDKs take the SpecStream address for SerpApi?

The older `google-search-results` Python package (2.4.2): set `GoogleSearch.BACKEND = "https://api.specstream.ai/serpapi"` before the first search.

### Can I change the address in the SerpApi Python client?

Yes, in one line: `client.BASE_DOMAIN = "https://api.specstream.ai/serpapi"` on a `serpapi.Client` made with your SpecStream key. SerpApi's JavaScript client keeps its host in its code, so use `fetch` there.

### Is there a cheaper SerpApi alternative?

SpecStream costs $5 per 1,000 searches against $25 per 1,000 on SerpApi Starter, and keeps SerpApi's request and JSON. It scores 97.9 F-score on all 1,000 SimpleQA Verified questions.

### Which SerpApi fields does SpecStream not return?

Answer boxes, knowledge graphs, related questions, local results and top stories are not returned, nor a result's `thumbnail`, `favicon`, `redirect_link`, `sitelinks` or `source`. Each result keeps `position`, `title`, `link`, `displayed_link`, `snippet` and `date`.

## Sources

SpecStream wrote this page. Each SerpApi figure comes from SerpApi's own pages, and each other provider's figure from that company's own page. The route's behavior comes from its code and the pass table measured on production.

- [SerpApi pricing](https://serpapi.com/pricing.md), read Nov 10, 2026
- [SerpApi Google Search API](https://serpapi.com/search-api), read Nov 10, 2026
- [SpecStream SerpApi pass table](https://specstream.ai/specstream/dialects/serpapi.md), read Nov 10, 2026
- [SearchApi.io pricing](https://www.searchapi.io/pricing), read Nov 10, 2026
- [Serper](https://serper.dev/), read Nov 10, 2026
- [VALUE SERP pricing](https://trajectdata.com/serp/value-serp-api/pricing/), read Nov 10, 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
