Serper news compatible
Change the address, keep the JSON.
Serper sells Google results in credit packs from $1.00 per 1,000, valid for 6 months. SpecStream answers the same POST /news in Serper's JSON at https://api.specstream.ai/serper/news, at $0.005 a call, and its credit never expires.
The switch is one line: https://api.specstream.ai/serper/news in place of https://google.serper.dev/news, and a SpecStream key in X-API-KEY. The body and your parser stay.
SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions. A new account gets $10 of credit, no card, which covers 2,000 news searches.
New accounts get $10 of credit, no card. It covers 2,000 searches.
Serper news to SpecStream, parameter by parameter and field by field
| SpecStream | Serper | |
|---|---|---|
| Address | POST https://api.specstream.ai/serper/news, or GET with apiKey in the address | POST https://google.serper.dev/news |
| The key | A SpecStream key in the X-API-KEY header | A Serper key in the X-API-KEY header |
| Results and dates | num up to 100, page, and tbs for the time window (qdr) and newest first (sbd) | News is one of Serper's result types, beside Images, Maps, Places and Shopping |
| Each item | title, link, snippet, date, source and position in news[]. imageUrl is not returned | news[] items in Serper's JSON |
| Errors | Serper's {"message", "statusCode"}: 401 with no key. A busy call gets 429 with Retry-After and is not charged | 50 queries per second on the smallest pack |
| Price | $0.005 a call of up to 10 results, $5 per 1,000. Each started block of 10 more adds $0.006 | From $1.00 per 1,000 for 50,000 credits. Credits are valid for 6 months |
| Free to start | $10 of credit, no card, which covers 2,000 news searches | 2,500 free queries |
The Serper news reference, on SpecStream
The call, before and after
# Before
curl https://google.serper.dev/news \
-H "X-API-KEY: $SERPER_API_KEY" -H "Content-Type: application/json" \
-d '{"q": "Nvidia earnings", "num": 10}'
# After
curl https://api.specstream.ai/serper/news \
-H "X-API-KEY: $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"q": "Nvidia earnings", "num": 10}'In Serper's own Python call the change is the address and the key: requests.post("https://api.specstream.ai/serper/news", headers={"X-API-KEY": SPECSTREAM_KEY, "Content-Type": "application/json"}, data=payload).
What the route reads, and what it refuses
Read and applied: q, num (up to 100), page, and tbs with a qdr window such as qdr:w, or sbd:1 for the newest first. A GET with apiKey in the address is answered as the POST is.
Refused: a call with no X-API-KEY gets 401 in Serper's error form. Every parameter was measured on production on Nov 10, 2026, and the full pass table lists each one and its result.
Every field that comes back
The reply has searchParameters with q, type (news), num, page and engine, then news[] with title, link, snippet, date in Google's words ("3 hours ago"), source, the publisher, and position, then credits.
imageUrl is not returned. One field is added, specstream, with the call's price_usd.
Credit that never expires
Serper's credits are valid for 6 months. On SpecStream every call of up to 10 results costs $0.005, each started block of 10 more adds $0.006, and the credit you top up 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.
Every drop-in route 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 26,666 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 answers Serper's web search at https://api.specstream.ai/serper/search, and reads the full article behind each link with the Extract API, up to 20 pages a call at $0.80 per 1,000 pages. 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 Serper alternative page.
What else Serper news users price
SerpApi
Google News and 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 news search with no plan, and answers SerpApi's Google News call at /serpapi-news.
GNews
A news API sold as a daily cap: Essential is €49.99 a month for 1,000 requests per day and up to 25 articles a request. SpecStream answers GNews's own /api/v4/search call at $0.005, with no daily cap to reset.
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 news searches.
2. Set the address to https://api.specstream.ai/serper/news where your code has https://google.serper.dev/news, and send the SpecStream key in X-API-KEY. In Python:
import requests
URL = "https://api.specstream.ai/serper/news" # was https://google.serper.dev/news
reply = requests.post(URL, headers={"X-API-KEY": SPECSTREAM_KEY}, json={"q": "Nvidia earnings", "num": 10, "tbs": "qdr:w"}, timeout=30)
reply.raise_for_status()
for item in reply.json()["news"]:
print(item["position"], item["date"], item["source"], item["title"], item["link"])3. In JavaScript:
const reply = await fetch("https://api.specstream.ai/serper/news", {
method: "POST",
headers: { "X-API-KEY": process.env.SPECSTREAM_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ q: "Nvidia earnings", num: 10 }),
});
const data = await reply.json();
for (const item of data.news) console.log(item.date, item.title, item.link);4. 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 Serper news compatible API?
POST /news at https://api.specstream.ai/serper/news in Serper's JSON, as measured on production on Nov 10, 2026. A call of up to 10 results costs $0.005.How do I migrate from Serper news?
https://google.serper.dev/news becomes https://api.specstream.ai/serper/news, and a SpecStream key goes in X-API-KEY. q, num, page and tbs keep their meaning.How much does Serper cost?
Is there a Serper SDK whose address I can change?
requests.post call, so the change is the address in that one line, as tested on production on Nov 10, 2026. The same holds for fetch and curl.Does Serper news on SpecStream sort by date?
tbs=sbd:1 puts the newest first, and tbs=qdr:w keeps the last week, both measured on production on Nov 10, 2026.Which Serper news fields does SpecStream not return?
imageUrl. Each item keeps title, link, snippet, date, source and position, and the reply keeps searchParameters and credits.Sources
SpecStream wrote this page. Each Serper figure comes from Serper's own page, 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.
- Serperserper.dev/, read Nov 10, 2026
- SpecStream Serper news pass tablespecstream.ai/specstream/dialects/serper_news.md, read Nov 10, 2026
- SerpApi pricingserpapi.com/pricing.md, read Nov 10, 2026
- GNews pricinggnews.io/pricing, 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




