Migrate from Exa
The same POST /search, from $0.005 a call.
An Exa search costs $7 per 1,000 requests on auto and adds $1 per 1,000 results above 10. SpecStream answers the same POST /search in Exa's JSON for $0.005. This guide maps each parameter and each field.
The switch is one line: https://api.specstream.ai/exa in place of https://api.exa.ai, and a SpecStream key in x-api-key. Your code reads results[].url, title and publishedDate 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. A call of 10 results costs $0.005 and a call of 100 costs $0.059.
New accounts get $10 of credit, no card. It covers 2,000 searches.
Exa search to SpecStream, parameter by parameter and field by field
| SpecStream | Exa | |
|---|---|---|
| Address | POST https://api.specstream.ai/exa/search | POST https://api.exa.ai/search |
| The key | A SpecStream key in x-api-key or as a Bearer token | An Exa key in x-api-key or as a Bearer token |
| `numResults` | 1 to 100, and 10 when you send none. A value outside that range gets 400 | 1 to 100. The maximum public limit is 100 results |
| `type` | A type that starts with deep runs the default search; auto, fast, lite and the rest run the fast search for up to 10 results without page text. All cost the same | lite costs $4 and auto and fast $7 per 1,000 requests, for up to 10 results |
| `contents.text` | Fills text with the text of each page closest to the query, cut to maxCharacters when you send it, at no extra cost. text at the top of the body works too | Contents costs $1 per 1,000 pages per content type |
| Filters and what is searched | Read and used: includeDomains, excludeDomains, includeText, excludeText, startPublishedDate and endPublishedDate. Accepted and not used: category, userLocation, contents.summary, livecrawl and the rest | Searched on Exa's own index, which tracks over 2 trillion URLs and serves 100 billion pages as of October 2026 |
| The reply | requestId, results[], searchTime in milliseconds, and costDollars.total, the price of the call in dollars | A list of results with costDollars |
| Each result | id (the URL), url, title, publishedDate (null when the page has no date), author (null), text when asked, and highlights when asked. Not returned: score, summary, image and favicon | Title, URL, published date and author, with text, highlights or summary when contents asks for them |
| Errors | Exa's body: requestId, error and tag, with the HTTP status. A 429 comes with Retry-After and charges nothing | One API call to an endpoint is one request, priced per 1,000 requests |
| Price of 10 results | $0.005, which is $5 per 1,000 searches | $0.007 on auto and $0.004 on lite |
| Price of 100 results | $0.059. Each started block of 10 results above 10 adds $0.006 | $0.097 on auto and $0.094 on lite: every result above 10 adds $1 per 1,000 results |
| Free to start | $10 of credit, no card, which covers 2,000 searches. A top-up never expires | $10 in credits on sign up, reset to $10 on the first of every month, no payment method |
The Exa reference, on SpecStream
The call, before and after
# Before
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" -H "Content-Type: application/json" \
-d '{"query": "open source vector databases", "numResults": 10}'
# After
curl -X POST https://api.specstream.ai/exa/search \
-H "x-api-key: $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"query": "open source vector databases", "numResults": 10}'The body, the header name and the parser stay. The base address gains /exa, and the key changes. Code that tracks spend with costDollars.total keeps working, because the field holds the price of the call.
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.
LangChain, langchain-exa 1.1.0: set exa_base_url="https://api.specstream.ai/exa" on ExaSearchRetriever.
Every parameter, and what the route does with it
Read and used in the search: query, numResults (1 to 100), includeDomains and excludeDomains, includeText and excludeText (searched as exact phrases), and startPublishedDate and endPublishedDate.
Read to choose the search: a type that starts with deep, contents.text and a numResults above 10 run the default search; every other call runs the fast search. The price is the same on both.
Read to shape the reply: contents.text (true, or an object with maxCharacters) and contents.highlights. Both also work at the top of the body, as older clients send them. Accepted and not used: category, userLocation, contents.summary, livecrawl and the rest, so a client that sends them is never refused.
Every field that comes back
The reply has requestId, results, searchTime in milliseconds and costDollars with total. Each result has id, which is its URL, url, title, publishedDate and author. publishedDate is null when the page has no date, and author is always null.
With contents.text, each result carries text: the text of its page closest to your query, up to about 3,500 characters, cut to maxCharacters when you send it. With contents.highlights, it carries highlights, a list with the result's snippet. The route does not return score, summary, image or favicon.
One field is added: specstream, with what the Search API returns beyond Exa's fields. A parser that reads Exa's fields never sees it.
$5 per 1,000 searches, and 100 results for $0.059
On Exa 1,000 auto searches of 10 results cost $7, every result above 10 adds $1 per 1,000 results, and page text is $1 per 1,000 pages per content type. On SpecStream a call of up to 10 results costs $0.005 with the page text included, and each started block of 10 more adds $0.006, so 100 results cost $0.059 against $0.097 on auto. A call stopped by a 429 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.
An Exa call of up to 10 results without page text or a deep type 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.
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. Every account can set it. 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 Exa alternative page.
What else Exa users price
Tavily
A search API billed in credits: $0.008 a credit pay as you go, 1 credit for a basic search and 2 for an advanced one, up to 20 results a call. SpecStream returns up to 100 results in one Exa call, for $0.059.
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, in Brave's own reply shape. SpecStream costs the same per call and answers in Exa's shape.
Parallel
A Search API that starts at $1 per 1,000 requests, with 600 Search calls a minute on the Developer plan. Its migration guide maps Exa search types to Parallel's own modes. SpecStream answers the Exa call as it is, and takes up to 8,800 searches a minute on one account.
Serper
Google results as JSON, sold in credit packs from $1.00 per 1,000 for 50,000 credits to $0.30 per 1,000 for 12.5 million, valid for 6 months. A top-up on SpecStream never expires, and the call your code sends to Exa keeps working.
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/exa where your code has https://api.exa.ai, and put the SpecStream key in x-api-key. In Python:
import requests
BASE = "https://api.specstream.ai/exa" # was https://api.exa.ai
reply = requests.post(
f"{BASE}/search",
headers={"x-api-key": SPECSTREAM_KEY},
json={"query": "open source vector databases", "numResults": 10, "contents": {"text": {"maxCharacters": 2000}}},
timeout=30,
)
reply.raise_for_status()
data = reply.json()
print(data["costDollars"]["total"])
for result in data["results"]:
print(result["title"], result["url"], result["publishedDate"])3. In JavaScript:
const res = await fetch("https://api.specstream.ai/exa/search", {
method: "POST",
headers: { "x-api-key": process.env.SPECSTREAM_KEY, "Content-Type": "application/json" },
body: JSON.stringify({ query: "open source vector databases", numResults: 10 }),
});
const data = await res.json();
for (const result of data.results) console.log(result.title, result.url);4. If your code sorts by score or reads summary, image or favicon, keep the order the results arrive in, which is the rank, and drop those fields. On a 429, wait the seconds in Retry-After and send the call again; nothing was 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
What is the best Exa API alternative?
POST /search at https://api.specstream.ai/exa in Exa's JSON, and scores 97.9 F-score on all 1,000 SimpleQA Verified questions.How much does an Exa search cost?
auto and fast and $4 on lite, for up to 10 results, plus $1 per 1,000 results above 10. The same call on SpecStream costs $0.005 for 10 results and $0.059 for 100.Which Exa fields does SpecStream not return?
score, summary, image and favicon, and author is always null. Each result has id, url, title and publishedDate, with text and highlights when contents asks for them.Which apps and SDKs take the SpecStream address for Exa?
langchain-exa 1.1.0: set exa_base_url="https://api.specstream.ai/exa" on ExaSearchRetriever.How do I get the page text?
contents.text, as on Exa, at no extra cost. Each result's text holds the text of its page closest to your query, up to about 3,500 characters or your maxCharacters; the call takes about 3 s in place of 1 s.Does the Exa search type change the price?
type. A type that starts with deep runs the default search, and the other types run the fast search unless the call asks for page text.Do I keep my Exa key header?
x-api-key header, or as a Bearer token. New accounts get $10 of credit with no card, which covers 2,000 searches.Sources
SpecStream wrote this page. Each Exa figure comes from Exa's own pages, and each other provider's figure from that company's own page. The route's behavior is taken from its code.
- Exa pricingexa.ai/docs/admin/pricing.md, read Nov 9, 2026
- Exa search referenceexa.ai/docs/reference/search.md, read Nov 9, 2026
- Exa FAQexa.ai/docs/admin/faqs.md, read Nov 9, 2026
- Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 9, 2026
- Tavily search referencedocs.tavily.com/documentation/api-reference/endpoint/search.md, read Nov 9, 2026
- Brave Search APIbrave.com/search/api/, read Nov 9, 2026
- Parallel pricingparallel.ai/pricing, read Nov 9, 2026
- Parallel, migrate to Paralleldocs.parallel.ai/search/migrate-to-parallel, read Nov 9, 2026
- Serperserper.dev/, 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




