Exa Lite search API
The same call at $1 per 1,000, pages read live.
Exa released lite on October 19, 2026 as its low-cost search type: $4 per 1,000 requests with up to 10 results, plus $1 per 1,000 results above 10. It serves page text only from Exa's cache and never fetches a page live.
SpecStream answers the same call. Change https://api.exa.ai to https://api.specstream.ai/exa and send a SpecStream key in x-api-key. Keep type: "lite" in the body: the search costs $1 per 1,000, and each page is read when your call arrives.
It is the most accurate web search API in the world: 97.9 F-score on all 1,000 SimpleQA Verified questions (978 correct) and 64.0 item F1 on all 200 WideSearch tasks, on the benchmarks page.
New accounts get $10 of credit, no card. It covers 10,000 searches.
SpecStream and Exa Lite side by side
| SpecStream | Exa Lite | |
|---|---|---|
| What you change | One line. The base address https://api.specstream.ai/exa in place of https://api.exa.ai, and a SpecStream key in x-api-key or as a Bearer token. In exa-py: Exa(api_key=..., base_url="https://api.specstream.ai/exa") | POST /search with type: "lite", and an Exa key in x-api-key or as a Bearer token |
| Price per 1,000 searches | $1 for up to 10 results on lite, auto, fast and instant, and $5 on a deep type. numResults: 100 costs $0.0118 a call | $4 for up to 10 results, plus $1 per 1,000 results above 10. auto costs $7 |
| Page text | Read from the live page when your call arrives. Send contents.text and each result carries the text of its page closest to the query, up to about 3,500 characters, in the price of the search | From Exa's cache only: lite never fetches a page live. When you ask for text or highlights, results with no cached copy are left out of the response |
| The request | query, numResults (1 to 100), includeDomains, excludeDomains, includeText, excludeText, startPublishedDate, endPublishedDate, contents.text and contents.highlights work as on Exa. type, category and userLocation are accepted, so the body needs no edit | A smaller set than auto. outputSchema, systemPrompt, stream, contents.summary, contents.subpages, contents.maxAgeHours, contents.livecrawl, includeText and excludeText return 400 INVALID_REQUEST_BODY |
| The reply | Exa's JSON: requestId, results[] with id, url, title, publishedDate, and text and highlights when asked, searchTime and costDollars.total | The same shape as Exa's other search types |
| Rate | No limit per key and no daily limit. A busy call gets a 429 with Retry-After and is not charged | 10 queries a second on a default account |
| Free to start | $10 of credit, no card. That is 10,000 searches, and credit you buy never expires | $10 in credits, up to 2,500 Lite searches, reset on the first of every month |
| Whole pages | The Extract API reads whole pages, PDF, Word and Excel files at $0.80 per 1,000 pages, and POST /exa/contents answers Exa's Contents call. A page with no text is not charged | Contents costs $1 per 1,000 pages per content type |
| Every match as structured rows | Deep Search: a request in plain words returns every match on the live web as rows that meet each condition you wrote, at 5¢, 15¢ or $1 a row, plus 5¢ for an email and 15¢ for a phone. The most a run can cost is quoted before it starts | Agent: $0.012 a request at minimal effort up to $1.00 at xhigh |
Why Lite users move to SpecStream
The switch is one line
Your code keeps its body, type: "lite" included, and its parser. The address changes, and the key.
# Before: Exa Lite, $4 per 1,000
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" -H "Content-Type: application/json" \
-d '{"query": "latest chip export rules", "type": "lite", "numResults": 5, "contents": {"text": true}}'
# After: SpecStream, $1 per 1,000, each page read live
curl -X POST https://api.specstream.ai/exa/search \
-H "x-api-key: $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
-d '{"query": "latest chip export rules", "type": "lite", "numResults": 5, "contents": {"text": true}}'The reply has Exa's shape: requestId, results[] with id, url, title and publishedDate, text and highlights when you ask for them, searchTime and costDollars.total. There is no field to map.
Pages read live, at a quarter of the Lite price
Lite gets its price from its cache. It never fetches a page live, and a result with no cached copy is dropped when you ask for its text. Exa's docs send a request that needs a fresh page to auto, at $7 per 1,000. SpecStream reads each page at the moment of your call, for $1 per 1,000 searches of up to 10 results, whichever type you send except deep. A result whose page is not read in time keeps its snippet in text, so no result is dropped.
Your body is accepted as it is
Lite answers 400 INVALID_REQUEST_BODY to outputSchema, contents.summary, contents.maxAgeHours, contents.livecrawl and the deprecated includeText and excludeText. SpecStream's route reads includeText and excludeText as exact phrases, and accepts contents.maxAgeHours and contents.livecrawl without an error, since every page is read live. Code written for auto runs at the same $1 as code written for lite.
The most accurate web search API in the world
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.
How fast the route answers
The fast search behind the Exa route had a median of 0.82 seconds at one search a second and 1.07 seconds at 20 searches a second, measured on production on November 9, 2026, with 718 of 720 searches answered. There is no limit per key and no daily limit.
Pages, documents and rows on the same key
POST /exa/contents answers Exa's Contents call, and exa.get_contents(urls) works with the same base_url: up to 20 pages a call, each at the Extract API's $0.80 per 1,000 pages, PDF, Word and Excel included. When you need every match on the web in place of a results page, Deep Search returns structured rows at 5¢, 15¢ or $1 a row, each value with its source URL and read time, under a maximum you approve before it runs.
Other Exa Lite alternatives
Exa auto
Exa's default type costs $7 per 1,000 requests and fetches a page when its cache has none. It is the type Exa's docs name for any request that needs a parameter lite refuses. SpecStream answers an auto body on the same route for $1 per 1,000.
Parallel Search API
Search starts at $1 per 1,000 requests, with Parallel's own request body and JSON. SpecStream answers Parallel's call too, at https://api.specstream.ai/parallel/v1/search, on the same key as the Exa route.
Perplexity Search API
Ranked results as JSON at $5 per 1,000 requests, and $1 with Fast Search. SpecStream answers Perplexity's POST /search at https://api.specstream.ai/perplexity, with every page read live.
Brave Search API
A search API on Brave's own index at $5 per 1,000 requests, with $5 in free credits every month. SpecStream answers Brave's /res/v1/web/search call on the same path, at $1 per 1,000 searches of up to 10 results.
Tavily
Billed in credits at $0.008 each pay as you go, and a basic search is 1 credit, so $8 per 1,000. SpecStream answers Tavily's call at https://api.specstream.ai/tavily/search for $1 per 1,000.
How SpecStream scores
The same numbers as the benchmarks page, from the official tasks and scorers.
How to switch from Exa Lite
1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 10,000 searches.
2. Set the base address to https://api.specstream.ai/exa where your code has https://api.exa.ai, and send the SpecStream key in x-api-key or as a Bearer token. In exa-py it is the base_url argument.
from exa_py import Exa
exa = Exa(api_key=SPECSTREAM_KEY, base_url="https://api.specstream.ai/exa") # was https://api.exa.ai
result = exa.search(
"latest chip export rules",
type="lite",
num_results=5,
start_published_date="2026-01-01T00:00:00.000Z",
contents={"text": True},
)
for r in result.results:
print(r.title, r.url, r.published_date)3. Leave the rest. A call of up to 10 results is one search at $0.001, and costDollars.total shows what each call cost. The key carries the spending limit you give it.
The Exa migration guide lists every parameter the route reads and every field it returns.
Frequently asked questions
Something we didn't answer? Talk to a human
How much does Exa Lite cost?
auto costs $7, and Contents $1 per 1,000 pages per content type. The free tier gives $10 in credits, up to 2,500 Lite searches, reset on the first of every month.What is the difference between Exa Lite and Exa auto?
lite costs $4 per 1,000 and serves page content only from Exa's cache; auto costs $7 and fetches a page when its cache has none. Lite also refuses outputSchema, contents.summary and the freshness controls with a 400. On SpecStream both types cost $1 per 1,000, and every page is read live.Is Exa Lite the same as Exa fast?
lite runs the same search as fast, and marks fast, instant and deep-reasoning as legacy at their current prices. SpecStream's Exa route answers all of these types, at $1 per 1,000 for every type except deep.How fast is Exa Lite?
lite at about 450 ms for the search itself with cached content. SpecStream's fast search, which answers the Exa route, had a median of 0.82 seconds at one search a second and 1.07 seconds at 20 a second, measured on production on November 9, 2026, with no limit per key.How do I switch from Exa Lite to SpecStream?
https://api.specstream.ai/exa in place of https://api.exa.ai, and send a SpecStream key in x-api-key or as a Bearer token. POST /exa/search answers in Exa's JSON, so the code that reads results[] stays as it is.Which Exa parameters work on SpecStream?
numResults up to 100, query, includeDomains, excludeDomains, includeText, excludeText, startPublishedDate, endPublishedDate, contents.text and contents.highlights. type, category and userLocation are accepted, so a request your code sends today needs no edit. The reply leaves out score, summary, image and favicon.Does SpecStream have an MCP server?
https://api.specstream.ai/mcp over Streamable HTTP, with OAuth or an API key. The search_web tool runs a search, and the agent spends from the same balance as your team, inside the limits you set on its key.Sources
SpecStream wrote this page. Each rival figure comes from that company's own page.
- Exa pricingexa.ai/docs/admin/pricing.md, read Nov 12, 2026
- Exa search types and Liteexa.ai/docs/search/quickstart.md, read Nov 12, 2026
- Exa changelogexa.ai/docs/changelog.md, read Nov 12, 2026
- Exa billing and rate limitsexa.ai/docs/admin/billing.md, read Nov 12, 2026
- Parallel search modesdocs.parallel.ai/search/modes.md, read Nov 12, 2026
- Perplexity pricingdocs.perplexity.ai/docs/getting-started/pricing, read Nov 12, 2026
- Brave Search APIbrave.com/search/api/, read Nov 12, 2026
- Tavily credits and pricingdocs.tavily.com/documentation/api-credits.md, read Nov 12, 2026
- SpecStream benchmarksspecstream.ai/benchmarks, read Nov 12, 2026
- SpecStream pricingspecstream.ai/pricing, read Nov 12, 2026
- SpecStream for agentsspecstream.ai/agents.md, read Nov 12, 2026




