Zenserp compatible
Change the address, keep the JSON.
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.
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 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 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 at $0.80 per 1,000 pages, and a page with no text is not charged. Deep Search 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 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 SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
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
Something we didn't answer? Talk to a human
Is there a Zenserp compatible API?
/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?
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?
Can I change the address in the Zenserp Python client?
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?
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?
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 pricingzenserp.com/pricing, read Nov 10, 2026
- Zenserp pricing planszenserp.com/pricing-plans/, read Nov 10, 2026
- Zenserp migration guidezenserp.com/migration-guide/, read Nov 10, 2026
- SpecStream Zenserp pass tablespecstream.ai/specstream/dialects/zenserp.md, read Nov 10, 2026
- SerpApi pricingserpapi.com/pricing.md, read Nov 10, 2026
- SearchApi.io pricingsearchapi.io/pricing, read Nov 10, 2026
- Serperserper.dev/, read Nov 10, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
- SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026




