Skip to the page

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

SpecStreamExa
AddressPOST https://api.specstream.ai/exa/searchPOST https://api.exa.ai/search
The keyA SpecStream key in x-api-key or as a Bearer tokenAn 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 4001 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 samelite 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 tooContents costs $1 per 1,000 pages per content type
Filters and what is searchedRead and used: includeDomains, excludeDomains, includeText, excludeText, startPublishedDate and endPublishedDate. Accepted and not used: category, userLocation, contents.summary, livecrawl and the restSearched on Exa's own index, which tracks over 2 trillion URLs and serves 100 billion pages as of October 2026
The replyrequestId, results[], searchTime in milliseconds, and costDollars.total, the price of the call in dollarsA list of results with costDollars
Each resultid (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 faviconTitle, URL, published date and author, with text, highlights or summary when contents asks for them
ErrorsExa's body: requestId, error and tag, with the HTTP status. A 429 comes with Retry-After and charges nothingOne 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

What else Exa users price

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?
SpecStream, at $5 per 1,000 searches of up to 10 results. It answers Exa's own 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?
$7 per 1,000 requests on 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?
Four: 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, langchain-exa 1.1.0: set exa_base_url="https://api.specstream.ai/exa" on ExaSearchRetriever.
How do I get the page text?
Send 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?
No. Every call of up to 10 results costs $0.005, whatever its 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?
Yes. The SpecStream key goes in the same 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.

  1. Exa pricingexa.ai/docs/admin/pricing.md, read Nov 9, 2026
  2. Exa search referenceexa.ai/docs/reference/search.md, read Nov 9, 2026
  3. Exa FAQexa.ai/docs/admin/faqs.md, read Nov 9, 2026
  4. Tavily API creditsdocs.tavily.com/documentation/api-credits.md, read Nov 9, 2026
  5. Tavily search referencedocs.tavily.com/documentation/api-reference/endpoint/search.md, read Nov 9, 2026
  6. Brave Search APIbrave.com/search/api/, read Nov 9, 2026
  7. Parallel pricingparallel.ai/pricing, read Nov 9, 2026
  8. Parallel, migrate to Paralleldocs.parallel.ai/search/migrate-to-parallel, read Nov 9, 2026
  9. Serperserper.dev/, read Nov 9, 2026
  10. SpecStream benchmarksspecstream.ai/benchmarks, read Nov 10, 2026
  11. SpecStream pricingspecstream.ai/pricing, read Nov 10, 2026
  12. SpecStream for agentsspecstream.ai/agents.md, read Nov 10, 2026