<!-- twin of https://specstream.ai/migrate/zenserp -->
# Zenserp compatible: change the address, keep the JSON

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

Zenserp sells monthly plans from $49.99 for 25,000 searches, and an AI Overview request uses 3 searches. SpecStream answers the same `/api/v2/search` in Zenserp's JSON, with `ai_overview` at the price of one search.

The switch is one line: `https://api.specstream.ai/zenserp/api/v2` in place of `https://app.zenserp.com/api/v2`, and a SpecStream key as `apikey`. In zenserp-python that is `zenserp.api_base`.

SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions. A search of up to 10 results costs $0.005, with no monthly plan.

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

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

| | SpecStream | Zenserp |
|---|---|---|
| Address | `GET` or `POST https://api.specstream.ai/zenserp/api/v2/search`, with `num` 1 to 100 and `start` for the offset | `https://app.zenserp.com/api/v2/search` |
| The key | A SpecStream key in the `apikey` header, or as `apikey` in the address or the form | A Zenserp key as `apikey` |
| AI Overview | `ai_overview=1` returns the search's answer with the page it came from, at the price of one search | An AI Overview request uses 3 searches |
| Each result | `position`, `title`, `url`, `destination` and `description`. Not returned: `isAmp`, `extra`, `questions` and `images` | Organic results with their position, title, URL and description |
| Errors | Zenserp's `{"errors": [...]}`: `403` for the key, `400` for `tbm` or another engine. A busy call gets `429` with `Retry-After` and is not charged | Only successful requests are billed |
| Price | $5 per 1,000 searches of up to 10 results, with no monthly plan. 100 results cost $0.059 a call | Small $49.99 a month for 25,000 searches, Medium $149.99 for 100,000, Large $299.99 for 250,000 |
| Free to start | $10 of credit, no card, which covers 2,000 searches. Credit never expires | 50 free searches a month |

## The Zenserp reference, on SpecStream

### The call, before and after

```
# Before
curl "https://app.zenserp.com/api/v2/search?q=Larkspur+Colorado+mayor" -H "apikey: $ZENSERP_API_KEY"

# After
curl "https://api.specstream.ai/zenserp/api/v2/search?q=Larkspur+Colorado+mayor" -H "apikey: $SPECSTREAM_API_KEY"
```

With Zenserp's Python client, zenserp 0.2, the change is one line, and the client sends the key in the `apikey` header as before:

```
zenserp.api_base = "https://api.specstream.ai/zenserp/api/v2"
```

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

Read and applied: `q`, `num` (1 to 100), `start`, `timeframe` (`h`, `d`, `w`, `m`, `y`), `tbs` with a `cdr:` date range, `ai_overview`, and `search_engine` `google.com`.

Refused with `400` in Zenserp's form: `tbm` (news and the other tabs) and a `search_engine` that is not Google. A call with no key gets `403`. Every parameter was measured on production on Nov 10, 2026 with zenserp 0.2, and the full [pass table](https://specstream.ai/specstream/dialects/zenserp.md) lists each one and its result.

### Every field that comes back

The reply has `query` with the `q` you sent, `organic[]`, `number_of_results`, and `pagination` with `current_page`, `next_page`, `previous_page` (null on the first page) and `pages`. Each result has `position`, `title`, `url`, `destination` and `description`. With `ai_overview=1` the reply adds `ai_overview` with `present`, `text`, `text_paragraphs` and `citations`.

The route does not return `query.url`, `related_searches`, or a result's `isAmp`, `extra`, `questions` and `images`. One field is added, `specstream`, with the call's `price_usd`.

### $5 per 1,000 searches, AI Overview included

On Zenserp an AI Overview request uses 3 searches of a monthly plan. On SpecStream every call of up to 10 results costs $0.005, with or without `ai_overview`, 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-zenserp) 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-zenserp) 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-zenserp) 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 [Zenserp alternative](https://specstream.ai/alternatives/zenserp?utm_source=alternatives&utm_campaign=migrate-zenserp) page.

## What else Zenserp users price

### SerpApi

Google results on monthly plans: Starter is $25 for 1,000 searches with 200 an hour, Developer $75 for 5,000. SpecStream charges $0.005 a search with no plan, and answers the Zenserp call your code already sends.

### SearchApi.io

Google results on monthly plans from $40 for 10,000 searches, with 100 free requests, in its own request and reply. SpecStream keeps Zenserp's request and reply, and scores 97.9 F-score on SimpleQA Verified.

### Serper

Google results in credit packs from $1.00 per 1,000 for 50,000 credits, with 2,500 free queries and no card. SpecStream needs no new code, 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 zenserp-python, set `zenserp.api_base` to `https://api.specstream.ai/zenserp/api/v2` and give the client your SpecStream key. Without the client, in Python:

```
import requests

URL = "https://api.specstream.ai/zenserp/api/v2/search"  # was https://app.zenserp.com/api/v2/search

reply = requests.get(
    URL,
    params={"q": "Larkspur Colorado mayor", "num": 10},
    headers={"apikey": SPECSTREAM_KEY},
    timeout=30,
)
reply.raise_for_status()
for result in reply.json()["organic"]:
    print(result["position"], result["title"], result["url"])
```

3. In JavaScript:

```
const url = new URL("https://api.specstream.ai/zenserp/api/v2/search");
url.search = new URLSearchParams({ q: "Larkspur Colorado mayor", num: "10" });
const res = await fetch(url, { headers: { apikey: process.env.SPECSTREAM_KEY } });
const data = await res.json();
for (const result of data.organic) console.log(result.title, result.url);
```

4. Follow `pagination.next_page` for the next page, and read `429` as a call to send again after `Retry-After`. It is not charged.

## Frequently asked questions

### Is there a Zenserp compatible API?

Yes. SpecStream answers Zenserp's `/api/v2/search` at `https://api.specstream.ai/zenserp/api/v2` in Zenserp's JSON, as measured on production on Nov 10, 2026 with zenserp-python 0.2. A search of up to 10 results costs $0.005.

### How do I migrate from Zenserp?

Change one address: `https://app.zenserp.com/api/v2` becomes `https://api.specstream.ai/zenserp/api/v2`, and a SpecStream key goes in `apikey`. `q`, `num`, `start`, `timeframe`, `tbs` and `ai_overview` keep their meaning.

### How much does Zenserp cost?

From $49.99 a month for 25,000 searches on Small to $899.99 for 1,000,000 on Enterprise, with 50 free searches a month. An AI Overview request uses 3 searches. SpecStream costs $5 per 1,000 with no monthly plan, AI Overview included.

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

Yes, in one line: `zenserp.api_base = "https://api.specstream.ai/zenserp/api/v2"`. The client keeps sending the key in the `apikey` header, and SpecStream reads it there.

### Does SpecStream return Zenserp's AI Overview?

Yes, with `ai_overview=1`, at $0.005 a call like any search. The reply carries `ai_overview` with `present`, `text`, `text_paragraphs` and `citations`, the page the answer came from.

### Which Zenserp fields does SpecStream not return?

Five: `query.url`, `related_searches`, and a result's `isAmp`, `extra`, `questions` and `images`. Each result keeps `position`, `title`, `url`, `destination` and `description`.

## Sources

SpecStream wrote this page. Each Zenserp figure comes from Zenserp'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.

- [Zenserp pricing](https://www.zenserp.com/pricing), read Nov 10, 2026
- [Zenserp pricing plans](https://zenserp.com/pricing-plans/), read Nov 10, 2026
- [Zenserp migration guide](https://zenserp.com/migration-guide/), read Nov 10, 2026
- [SpecStream Zenserp pass table](https://specstream.ai/specstream/dialects/zenserp.md), read Nov 10, 2026
- [SerpApi pricing](https://serpapi.com/pricing.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
- [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
