Parallel Search API compatible
Change the address, keep the code.
SpecStream answers Parallel's POST /v1/search in Parallel's own JSON, at $0.005 a search of up to 10 results in every mode. Every line below was measured on production on November 10, 2026 with the parallel-web Python SDK 1.3.7.
The switch is one line: base_url="https://api.specstream.ai/parallel" in place of https://api.parallel.ai, and a SpecStream key in x-api-key. Your code reads results[].url, title, publish_date and excerpts as before.
SpecStream scores 97.9 F-score on all 1,000 SimpleQA Verified questions and 64.0 item F1 on all 200 WideSearch tasks. It takes up to 8,800 searches a minute on one account.
New accounts get $10 of credit, no card. It covers 2,000 searches.
Parallel Search API to SpecStream, parameter by parameter and field by field
| SpecStream | Parallel Search API | |
|---|---|---|
| Address | POST https://api.specstream.ai/parallel/v1/search | POST https://api.parallel.ai/v1/search |
| The key | A SpecStream key in x-api-key | A Parallel key in x-api-key |
| `mode` | turbo and fast return each result's search excerpt; basic and advanced, the default, read each page and return up to about 3,500 characters of it. Every mode costs $0.005 | turbo and fast cost $1 per 1,000 requests; basic and advanced, the default, $5 per 1,000 |
| `max_results` | In advanced_settings, 10 when you send none, up to 100 | In advanced_settings, defaults to 10. Public modes cap results at 20 |
| `search_queries` | One or more queries, searched as one search for any of them | One or more keyword queries, required |
| Filters and excerpts | source_policy include_domains, exclude_domains and after_date, excerpt_settings.max_chars_per_result, max_chars_total and session_id | The same source_policy, excerpt settings, max_chars_total and session_id. Excerpt length does not change the price |
| The reply | search_id, session_id and results[] with url, title, publish_date when the page has a date, and excerpts. Not returned: warnings and usage | search_id, results[] with url, title, publish_date and excerpts, warnings, usage and session_id |
| Errors | Parallel's {"type": "error", "error": {...}}: 422 for a mode or a field Parallel does not take, 401 with no key, 402 for an empty balance. A busy call answers 429 with Retry-After and charges nothing | 402 for insufficient credit, 422 when validation fails, 429 when rate limited |
| Price per 1,000 searches | $5 for up to 10 results in every mode, page text included. 20 results cost $0.011 a call | $1 to $5 per 1,000 requests with 10 results included, and $1 per 1,000 additional results |
| Calls a minute | Up to 8,800 searches a minute on one account | 600 a minute on /v1/search |
| Free to start | $10 of credit, no card, which covers 2,000 searches | $5 free monthly with a card on file, plus up to $80 at signup |
The Parallel Search API reference, on SpecStream
The call, before and after
# Before
curl -X POST https://api.parallel.ai/v1/search \
-H "x-api-key: $PARALLEL_API_KEY" -H "Content-Type: application/json" \
-d '{"search_queries": ["Mistral AI founders"], "mode": "fast"}'
# After
curl -X POST https://api.specstream.ai/parallel/v1/search \
-H "x-api-key: $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"search_queries": ["Mistral AI founders"], "mode": "fast"}'In the parallel-web Python SDK the change is the client line. The SDK also reads PARALLEL_BASE_URL from the environment.
# Before
client = Parallel(api_key=PARALLEL_API_KEY)
# After
client = Parallel(api_key=SPECSTREAM_API_KEY, base_url="https://api.specstream.ai/parallel")Every parameter and field on this page is in the pass table, measured on production on November 10, 2026.
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.
LiteLLM 1.108.4: set PARALLEL_AI_API_BASE to https://api.specstream.ai/parallel and put your SpecStream key in PARALLEL_AI_API_KEY. The call stays litellm.search(search_provider="parallel_ai").
LangChain, langchain-parallel 0.5.0: pass base_url="https://api.specstream.ai/parallel" to ParallelWebSearchTool, or set PARALLEL_BASE_URL.
OpenClaw: set plugins.entries.parallel.config.webSearch.baseUrl to https://api.specstream.ai/parallel. The plugin adds /v1/search itself.
Cherry Studio: in the Parallel provider, set API Host to https://api.specstream.ai/parallel.
Every parameter the route uses
Used in the search: search_queries (one or more), mode (turbo, fast, basic or advanced), advanced_settings.max_results, and advanced_settings.source_policy with include_domains, exclude_domains and after_date as YYYY-MM-DD.
Used to shape the reply: advanced_settings.excerpt_settings.max_chars_per_result, max_chars_total (shared out evenly so every result keeps some text) and session_id, which comes back as sent.
Refused with Parallel's 422 body: a mode outside the four, and a field Parallel does not take, at the top of the body or in advanced_settings. A call with no key gets 401.
Every field that comes back
The reply has search_id, results and session_id. Each result has url, title, publish_date when the page has a date, and excerpts, a list with the result's text. The route does not return warnings or usage.
One field is added: specstream, with what the Search API returns beyond Parallel's fields, including the call's price_usd. A parser that reads Parallel's fields never sees it.
$5 per 1,000 searches, in every mode
A call of up to 10 results costs $0.005 in every mode, and basic and advanced include the text of each page. Each started block of 10 more results adds $0.006: 20 results cost $0.011. A call stopped by a 429 charges nothing, and credit you buy never expires.
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 in fast or turbo mode 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. It takes up to 8,800 searches a minute on one account. A call in basic or advanced mode runs the default search, which reads the pages, at the same price.
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: it is not in the history, its answer is not reused for another call, and its log lines carry neither. 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 Parallel alternative page.
What else Parallel Search API users price
Exa
A search API on Exa's own index, at $7 per 1,000 requests on auto and $4 on lite for up to 10 results, with its own request and reply. SpecStream answers Exa's call as well, at https://api.specstream.ai/exa, for $0.005 a search.
Tavily
A search API sold in credits at $0.008 each pay as you go: a basic search takes 1 credit and an advanced search 2. SpecStream answers Tavily's POST /search at https://api.specstream.ai/tavily for $0.005, basic or advanced.
Brave Search API
A search API on Brave's own index at $5 per 1,000 requests, with $5 in free credits every month and 50 queries per second. SpecStream answers Brave's call at https://api.specstream.ai/res/v1/web/search at the same price per call and takes up to 8,800 searches a minute on one account.
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. Set the base address to https://api.specstream.ai/parallel where your code has https://api.parallel.ai, and send the SpecStream key in x-api-key. In Python:
import requests
BASE = "https://api.specstream.ai/parallel" # was https://api.parallel.ai
reply = requests.post(
f"{BASE}/v1/search",
headers={"x-api-key": SPECSTREAM_KEY},
json={
"search_queries": ["Mistral AI founders"],
"mode": "fast",
"advanced_settings": {"max_results": 10},
},
timeout=30,
)
reply.raise_for_status()
for result in reply.json()["results"]:
print(result["title"], result["url"], result["excerpts"][0][:200])3. In JavaScript:
const res = await fetch("https://api.specstream.ai/parallel/v1/search", {
method: "POST",
headers: {
"x-api-key": process.env.SPECSTREAM_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({ search_queries: ["Mistral AI founders"], mode: "fast" }),
});
const data = await res.json();
for (const result of data.results) console.log(result.title, result.url);4. Read 402 as an empty balance and 429 as a call to send again after Retry-After; neither is charged.
5. When your product needs every match in place of a results page, write the request in plain words. SpecStream reads it back as the conditions every row must meet and the facts to bring back, quotes the most it can cost, and delivers the rows after you approve.
Frequently asked questions
Something we didn't answer? Talk to a human
Is there a Parallel Search API compatible API?
POST /v1/search at https://api.specstream.ai/parallel in Parallel's JSON, checked on production on November 10, 2026, for $0.005 a search of up to 10 results.How do I migrate from the Parallel Search API?
base_url to https://api.specstream.ai/parallel (or PARALLEL_BASE_URL) and use a SpecStream key. The request body and the code that reads results[] stay as they are.How much does the Parallel Search API cost?
turbo and fast and $5 per 1,000 in basic and advanced, its default, plus $1 per 1,000 results beyond 10. SpecStream charges $5 per 1,000 searches of up to 10 results in every mode.Which apps and SDKs take the SpecStream address for Parallel Search API?
PARALLEL_AI_API_BASE to https://api.specstream.ai/parallel and put your SpecStream key in PARALLEL_AI_API_KEY. The call stays litellm.search(search_provider="parallel_ai"). LangChain, langchain-parallel 0.5.0: pass base_url="https://api.specstream.ai/parallel" to ParallelWebSearchTool, or set PARALLEL_BASE_URL. OpenClaw: set plugins.entries.parallel.config.webSearch.baseUrl to https://api.specstream.ai/parallel. The plugin adds /v1/search itself. Cherry Studio: in the Parallel provider, set API Host to https://api.specstream.ai/parallel.Does the parallel-web SDK work with SpecStream?
parallel-web Python SDK 1.3.7 ran every check in the pass table with base_url="https://api.specstream.ai/parallel" and a SpecStream key, and client.search reads the reply into its own objects.Which Parallel fields does SpecStream not return?
warnings and usage. Each result has url, title and excerpts, and publish_date when the page has a date; the reply has search_id and session_id.How many searches a minute can I send?
429 with a Retry-After header and charges nothing.Sources
SpecStream wrote this page. Each Parallel figure comes from Parallel's own pages, and each other provider's figure from that company's own page. The route's behavior is taken from its code and from the pass table measured on production on November 10, 2026.
- Parallel search referencedocs.parallel.ai/api-reference/search/search.md, read Nov 10, 2026
- Parallel search modesdocs.parallel.ai/search/modes.md, read Nov 10, 2026
- Parallel advanced search settingsdocs.parallel.ai/search/advanced-search-settings.md, read Nov 10, 2026
- Parallel API pricingdocs.parallel.ai/getting-started/pricing.md, read Nov 10, 2026
- Parallel rate limitsdocs.parallel.ai/getting-started/rate-limits.md, read Nov 10, 2026
- Parallel warnings and errorsdocs.parallel.ai/resources/warnings-and-errors.md, read Nov 10, 2026
- Parallel pricingparallel.ai/pricing, read Nov 10, 2026
- SpecStream pass table, Parallel routespecstream.ai/specstream/dialects/parallel.md, read Nov 10, 2026
- Exa pricingexa.ai/docs/admin/pricing.md, read Nov 9, 2026
- Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 9, 2026
- Brave Search APIbrave.com/search/api/, read Nov 9, 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




