Search API migration guides
Change one address and keep your code.
SpecStream answers 23 search and page APIs on their own paths, in their own JSON: Google Custom Search JSON, Bing Web Search v7, Tavily, Exa, Brave, Serper, Firecrawl v2, SearXNG, Open WebUI's external search, and since November 10, 2026 Perplexity, You.com, Parallel, Linkup, Kagi, SerpApi, SearchApi, Zenserp, VALUE SERP, Bocha, Jina Search, Jina Reader, Tavily Extract and Exa Contents.
The switch is one line. Put the SpecStream address where your client has the old API's address, send a SpecStream key where the old key went, and the code that reads the reply 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 page. A search costs $0.005, which is $5 per 1,000.
New accounts get $10 of credit, no card. It covers 2,000 searches.
Each drop-in route next to the API it answers, with the day it went live
| SpecStream | The API you call today | |
|---|---|---|
| Google Custom Search JSON API | https://api.specstream.ai/customsearch/v1, the key in key=. cx is accepted and not used. Live since Nov 9, 2026. Google Custom Search migration guide | https://www.googleapis.com/customsearch/v1, the key in key= and a search engine ID in cx. Closed to new customers, and Google ends it for existing customers on January 1, 2027 |
| Bing Web Search API v7 | https://api.specstream.ai/v7.0/search, the key in Ocp-Apim-Subscription-Key. Live since Nov 9, 2026. Bing Web Search v7 migration guide | https://api.bing.microsoft.com/v7.0/search, the key in Ocp-Apim-Subscription-Key. Microsoft retired the Bing Search APIs on August 11, 2025 |
| Tavily | https://api.specstream.ai/tavily, then POST /tavily/search. The key as a Bearer token or in api_key. Live since Nov 9, 2026. Tavily migration guide | https://api.tavily.com, then POST /search. The key as a Bearer token |
| Exa | https://api.specstream.ai/exa, then POST /exa/search. The key in x-api-key or as a Bearer token. Live since Nov 9, 2026. Exa migration guide | https://api.exa.ai, then POST /search. The key in x-api-key |
| Brave Search API | https://api.specstream.ai/res/v1/web/search, the key in X-Subscription-Token. $0.005 a call of up to 10 results, and a call with no count returns 10. Live since Nov 9, 2026. Brave migration guide | https://api.search.brave.com/res/v1/web/search, the key in X-Subscription-Token |
| Serper | https://api.specstream.ai/serper, then POST /serper/search. The key in X-API-KEY. Live since Nov 9, 2026. Serper migration guide | https://google.serper.dev, then POST /search. The key in X-API-KEY |
| Firecrawl v2 | https://api.specstream.ai/firecrawl, then POST /firecrawl/v2/search for one search and POST /firecrawl/v2/scrape for one page at $0.0008. The key as a Bearer token. Called over HTTP or from the JavaScript SDK. Live since Nov 9, 2026. Firecrawl migration guide | https://api.firecrawl.dev, then POST /v2/search and POST /v2/scrape. The key as a Bearer token |
| SearXNG | https://api.specstream.ai/searxng/<key>, or https://api.specstream.ai/searxng/<key>/search where the setting takes the whole search address. The key can also go in key=, X-API-Key or a Bearer token. Live since Nov 9, 2026. SearXNG migration guide | The address of an instance you run, GET /search?q=...&format=json, with no key |
| Open WebUI external search | External Web Search URL https://api.specstream.ai/openwebui/search and External Web Loader URL https://api.specstream.ai/openwebui/loader, the key in each API key field. Live since Nov 9, 2026. Open WebUI setup | The address of a search server you run, in External Web Search URL |
| Perplexity Search API | Base https://api.specstream.ai/perplexity, POST /perplexity/search, the key as a Bearer token. The perplexityai SDK takes it as base_url. Live since Nov 10, 2026. Perplexity migration guide | https://api.perplexity.ai/search, the key as a Bearer token |
| You.com Search API | Base https://api.specstream.ai/you, GET or POST /you/v1/search, the key in X-API-Key. Live since Nov 10, 2026. You.com migration guide | https://ydc-index.io/v1/search, the key in X-API-Key |
| Parallel Search API | Base https://api.specstream.ai/parallel, POST /parallel/v1/search, the key in x-api-key. The parallel-web SDK takes it as base_url. Live since Nov 10, 2026. Parallel migration guide | https://api.parallel.ai/v1/search, the key in x-api-key |
| Linkup | Base https://api.specstream.ai/linkup/v1, POST or GET /linkup/v1/search, the key as a Bearer token. The linkup-sdk takes it as base_url. Live since Nov 10, 2026. Linkup migration guide | https://api.linkup.so/v1/search, the key as a Bearer token |
| Kagi Search API | Base https://api.specstream.ai/kagi/api/v1, POST /search, the key as a Bearer token. The older GET /kagi/api/v0/search answers too. Live since Nov 10, 2026. Kagi migration guide | https://kagi.com/api/v1/search, the key as a Bearer token |
| SerpApi | Base https://api.specstream.ai/serpapi, GET /serpapi/search.json with engine=google, the key as api_key. Live since Nov 10, 2026. SerpApi migration guide | https://serpapi.com/search.json, the key as api_key |
| SearchApi | Base https://api.specstream.ai/searchapi, GET /searchapi/api/v1/search?engine=google, the key as api_key or a Bearer token. Live since Nov 10, 2026. SearchApi migration guide | https://www.searchapi.io/api/v1/search, the key as api_key or a Bearer token |
| Zenserp | Base https://api.specstream.ai/zenserp/api/v2, GET or POST /search, the key in the apikey header. Live since Nov 10, 2026. Zenserp migration guide | https://app.zenserp.com/api/v2/search, the key in the apikey header |
| VALUE SERP | Base https://api.specstream.ai/valueserp, GET /valueserp/search, the key as api_key. Live since Nov 10, 2026. VALUE SERP migration guide | https://api.valueserp.com/search, the key as api_key |
| Bocha Web Search | Base https://api.specstream.ai/bocha, POST /bocha/v1/web-search, the key as a Bearer token. Live since Nov 10, 2026. Bocha migration guide | https://api.bochaai.com/v1/web-search, the key as a Bearer token |
| Jina Search | Base https://api.specstream.ai/jina-search, GET or POST with q, the key as a Bearer token. Live since Nov 10, 2026. Jina Search migration guide | https://s.jina.ai, the key as a Bearer token |
| Jina Reader | POST https://api.specstream.ai/jina with url in the body, the key as a Bearer token. A page read costs $0.0008. Live since Nov 10, 2026. Jina Reader migration guide | https://r.jina.ai/, the key as a Bearer token |
| Tavily Extract | POST https://api.specstream.ai/tavily/extract, the same base and key as Tavily search. tavily-python extract() works unchanged. A page read costs $0.0008. Live since Nov 10, 2026. Tavily Extract migration guide | https://api.tavily.com/extract, the key as a Bearer token |
| Exa Contents | POST https://api.specstream.ai/exa/contents, the same base and key as Exa search. exa-py get_contents() works unchanged. A page read costs $0.0008. Live since Nov 10, 2026. Exa Contents migration guide | https://api.exa.ai/contents, the key in x-api-key |
What changes when your client points at SpecStream
One line changes: the address
Each route reads the request your client sends today and answers in the JSON it reads today. This is a Google Custom Search call, before and after.
# Before
curl "https://www.googleapis.com/customsearch/v1?key=$GOOGLE_API_KEY&cx=$CX&q=who+founded+Mistral+AI"
# After
curl "https://api.specstream.ai/customsearch/v1?key=$SPECSTREAM_API_KEY&cx=$CX&q=who+founded+Mistral+AI"Every search on a route is one web search on your key, with the same limits and the same history as GET /v1/web-search. Parameters a route does not use, such as Google's cx, are accepted, so your code sends them as before.
What comes back, and what does not
The reply keeps the old API's field names: Google's items[] with title, link and snippet, Bing's webPages.value[], Tavily's and Exa's results[], Brave's web.results[], Serper's organic[], Firecrawl's data.web[] and SearXNG's results[]. Each reply also carries a specstream field your parser can ignore.
Three fields do not come back today: Tavily's published_date, Brave's page_age, and Exa's score, summary, image and favicon. Exa's author is null. Each guide lists every parameter and field of its API.
$0.005 a search, and a failed call costs nothing
A search of up to 10 results costs $0.005, which is $5 per 1,000. Each started block of 10 more results adds $0.006, up to 100 results a search. A call stopped by a 429 charges nothing, and credit you buy never expires.
A new account gets $10 of credit with no card, which covers 2,000 searches.
The most accurate web search API, at about one second a call
The SpecStream Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions, 978 of them correct, and 64.0 item F1 and 43.4 row F1 on all 200 WideSearch tasks. The Extract API scores 0.908 F1 on WCXB. The method and each score are on the benchmarks page.
Every drop-in call runs the fast search unless it asks for page text, the answer or results past the first ten. On November 9, 2026 production answered 718 of 720 searches at 1 to 20 a second, with a median of 0.82 s at 1 a second and 1.07 s at 20 a second, and the 95th percentile 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.
Nothing is kept on a zero retention key
Create a key with zero_retention and a search made with it keeps no request text and no answer after the reply, in the history or in a log line. 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}'Pages and finished rows on the same 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.
What the old vendors point you to instead
Vertex AI Search
Google's suggestion on the Custom Search page, for searching up to 50 domains. For full web search the page asks you to contact Google and express your interest. SpecStream searches the whole live web from the first call, on the path your code already uses, at $5 per 1,000 searches.
Grounding with Bing Search
Microsoft's path after the Bing Search APIs: a tool inside Azure AI agents at $14 per 1,000 transactions, and developers do not get the raw content it returns. SpecStream answers the Bing v7 call your code sends, with each result's name, URL and snippet, at $5 per 1,000.
Parallel Search API
Web search from $1 per 1,000 requests, with a guide to move Exa, Tavily and Brave calls to its own Search API, so the call and the parser are rewritten. On SpecStream the call and the JSON stay as they are, Parallel's own included: the Parallel migration guide changes one address. The score is 97.9 on all 1,000 SimpleQA Verified questions.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to switch
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. Find your API in the table and put its SpecStream address where your client keeps the old one. The key goes where the old key went. This is a Tavily client in Python:
import os, requests
reply = requests.post(
"https://api.specstream.ai/tavily/search", # was https://api.tavily.com/search
headers={"Authorization": f"Bearer {os.environ['SPECSTREAM_API_KEY']}"},
json={"query": "Who founded Mistral AI and when?", "max_results": 5},
)
for result in reply.json()["results"]:
print(result["title"], result["url"])3. Run your own questions and compare the answers. The guide for your API has the call in curl, Python and JavaScript.
Frequently asked questions
Something we didn't answer? Talk to a human
Is there a drop-in replacement for the Google Custom Search JSON API?
GET /customsearch/v1 at https://api.specstream.ai in Google's JSON, at $5 per 1,000 searches. Google closed the API to new customers and ends it for existing customers on January 1, 2027. The migration guide maps each parameter and field.What replaces the Bing Search API v7?
https://api.specstream.ai/v7.0/search since November 9, 2026. Microsoft retired the Bing Search APIs on August 11, 2025. Your code keeps its Ocp-Apim-Subscription-Key header and reads webPages.value as before, at $5 per 1,000 searches. See the Bing v7 guide.Can I switch search API without changing code?
GET https://api.specstream.ai/v1/search-dialects, which needs no key.How much does a search cost after the switch?
429 costs nothing.Which fields does a drop-in route not return?
published_date, Brave's page_age, and Exa's score, summary, image and favicon. Every other field your parser reads is there, and each guide lists them one by one.How fast is a drop-in call?
Sources
SpecStream wrote this page. Each vendor's address and figure comes from that company's own page or documentation.
- Google Custom Search JSON API overviewdevelopers.google.com/custom-search/v1/overview, read Nov 10, 2026
- Microsoft: Bing Search APIs retiring on August 11, 2025learn.microsoft.com/en-us/lifecycle/announcements/bing-search-api-retirement, read Nov 10, 2026
- Microsoft: Grounding with Bing pricingmicrosoft.com/en-us/bing/apis/grounding-pricing, read Nov 10, 2026
- Microsoft: Grounding with Bing Search toolslearn.microsoft.com/en-us/azure/foundry/agents/how-to/tools/bing-tools, read Nov 10, 2026
- Parallel pricingparallel.ai/pricing, read Nov 10, 2026
- Parallel, migrate to Paralleldocs.parallel.ai/search/migrate-to-parallel, read Nov 10, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026




