Skip to the page

Exa highlights

The same call at $1 per 1,000, pages read live.

Exa highlights are the passages of each result that answer your query, returned in results[].highlights. They come with a search: $4 per 1,000 requests on lite and $7 on auto. Dynamic Highlights is a research preview that needs a beta header.

SpecStream answers the same call. Change https://api.exa.ai to https://api.specstream.ai/exa, send a SpecStream key in x-api-key, and keep contents.highlights in the body. The search costs $1 per 1,000, with highlights and text in that price.

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 highlights side by side

SpecStreamExa
What you changeOne 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 contents.highlights, and an Exa key in x-api-key or as a Bearer token
What `highlights` returnsresults[].highlights, a list with the result's snippet for your query, in Exa's shape. With contents.text, text holds the text of the page closest to your query, up to about 3,500 characters, read when your call arrivesExtractive passages from each result that are relevant to the query, in results[].highlights. Exa reports that 500 characters of highlights match the accuracy of the first 8,000 characters of page text, with 16x fewer tokens
Price per 1,000 searches with highlights$1 for up to 10 results on lite, auto, fast and instant, with highlights and text in that price, and $5 on a deep type. numResults: 100 costs $0.0118 a call$4 on lite and $7 on auto for up to 10 results, with text and highlights of those results included, plus $1 per 1,000 results above 10
How much text each result carriescontents.text.maxCharacters cuts text to the size you set, so one field gives your model the passage and its limit. highlights.maxCharacters and highlights.query are accepted as senthighlights: true lets Exa choose how much text to return from each result. maxCharacters sets a fixed limit per page
Dynamic Highlightshighlights: {"dynamic": true} and the Exa-Beta header are accepted, so a request written for the preview runs without an edit. The reply keeps the results[].highlights shapeA research preview. dynamic: true needs the header Exa-Beta: dynamic-highlights-2026-08-28. In Exa's evaluations it cut tokens by an average of 95% against full page content
Where the text is readFrom the live page when your call arrives, on every search typelite serves page content from Exa's cache and never fetches a page live
The replyExa's JSON: requestId, results[] with id, url, title, publishedDate, and text and highlights when asked, searchTime and costDollars.totalresults[] with the title, URL, published date and author of each result, and its text, highlights or summary when contents asks for them, with costDollars
Known URLsPOST /exa/contents answers Exa's Contents call with the text of up to 20 pages, PDF, Word and Excel files included, at $0.80 per 1,000 pages. A page with no text is not charged/contents costs $1 per 1,000 pages per content type, so one page with text and highlights counts as two
What answers the callThe whole live web, read at the moment of the call. 97.9 F-score on all 1,000 SimpleQA Verified questions (978 correct) and 64.0 item F1 on all 200 WideSearch tasksExa's own index, which tracks over 2 trillion URLs and serves 100 billion pages as of October 2026
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
Every match as structured rowsDeep 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 startsAgent: $0.012 a request at minimal effort up to $1.00 at xhigh

Why teams that use Exa highlights move to SpecStream

Other Exa highlights alternatives

How SpecStream scores

The same numbers as the benchmarks page, from the official tasks and scorers.

How to switch a highlights call to SpecStream

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. In exa-py that is base_url.

from exa_py import Exa

exa = Exa(api_key=SPECSTREAM_KEY, base_url="https://api.specstream.ai/exa")

reply = exa.search(
    "latest chip export rules",
    num_results=5,
    contents={"highlights": True, "text": {"max_characters": 1000}},
)

for result in reply.results:
    print(result.url, result.highlights, result.text)

3. Leave the rest. query, numResults, includeDomains, excludeDomains, startPublishedDate, endPublishedDate, contents.highlights and contents.text work as before. A call of up to 10 results is one search at $0.001, and costDollars.total shows what each call cost.

4. Where your model needs more than the snippet, read text and set maxCharacters to the budget you gave highlights. The key carries the spending limit you give it.

Frequently asked questions

Something we didn't answer? Talk to a human

What are Exa highlights?
Passages of each search result that are relevant to your query, returned in results[].highlights when the request sends contents.highlights. Exa reports that 500 characters of highlights match the accuracy of the first 8,000 characters of page text, with 16x fewer tokens.
How much do Exa highlights cost?
Nothing on top of the search for the first 10 results: $4 per 1,000 requests on lite and $7 on auto, plus $1 per 1,000 results above 10. On /contents, highlights cost $1 per 1,000 pages, and text on the same page is billed as a second content type. SpecStream answers the search call for $1 per 1,000 with highlights and text included.
What is Exa Dynamic Highlights?
A research preview that sets how much text it takes from each result by what the query needs, and in Exa's evaluations cut tokens by an average of 95% against full page content. A request turns it on with dynamic: true in contents.highlights and the header Exa-Beta: dynamic-highlights-2026-08-28. The reply has the same results[].highlights shape.
Does SpecStream return highlights on Exa's call?
Yes, for $1 per 1,000 searches. POST https://api.specstream.ai/exa/search with contents.highlights returns highlights on each result as a list with the result's snippet, and contents.text adds the text of the page closest to your query, up to about 3,500 characters.
How do I limit the text each result returns?
Send contents.text with maxCharacters, for example 1,000. text is cut to that size on every result, and without a limit it runs to about 3,500 characters. exa-py sends max_characters, which the route reads the same way.
Does Dynamic Highlights code run on SpecStream?
Yes, with one line changed: the base address. The route accepts highlights: {"dynamic": true} and the Exa-Beta header, and each result carries highlights in the shape Exa's preview returns. A fast type costs $1 per 1,000 searches and a deep type $5.
How fast does the route answer?
The median answer takes 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.

Sources

SpecStream wrote this page. Each rival figure comes from that company's own page.

  1. Exa highlights guideexa.ai/docs/search/highlights.md, read Nov 12, 2026
  2. Exa pricingexa.ai/docs/admin/pricing.md, read Nov 12, 2026
  3. Exa changelogexa.ai/docs/changelog.md, read Nov 12, 2026
  4. Exa pricing updateexa.ai/docs/changelog/pricing-update.md, read Nov 12, 2026
  5. Exa Dynamic Highlightsexa.ai/blog/dynamic-highlights, read Nov 12, 2026
  6. Exa Search API referenceexa.ai/docs/reference/search.md, read Nov 12, 2026
  7. Exa FAQ, index sizeexa.ai/docs/admin/faqs.md, read Nov 12, 2026
  8. Tavily credits and pricingdocs.tavily.com/documentation/api-credits.md, read Nov 9, 2026
  9. Brave Search APIbrave.com/search/api/, read Nov 9, 2026
  10. Parallel pricingparallel.ai/pricing, read Nov 9, 2026
  11. Firecrawl pricingfirecrawl.dev/pricing, read Nov 9, 2026
  12. SpecStream benchmarksspecstream.ai/benchmarks, read Nov 9, 2026
  13. SpecStream pricingspecstream.ai/pricing, read Nov 9, 2026
  14. SpecStream for agentsspecstream.ai/agents.md, read Nov 9, 2026
  15. SpecStream dataspecstream.ai/data, read Nov 9, 2026
  16. SpecStream signalsspecstream.ai/signals, read Nov 9, 2026