results[].highlights.
Why highlights instead of full text
Highlights come from Exa’s in-house extraction model. The model reads each result against your query on every request and returns only the passages that answer it. You keep a fraction of the tokens of full page text with equal or better downstream answer quality.
The savings matter most in agent loops, where every round of search results competes with reasoning traces for context.
Add highlights to Search
Usehighlights: true inside contents as the recommended default. Exa chooses how much text to return from each result based on its relevance to your query, so there is no character budget to tune. Set maxCharacters only when your application requires a fixed per-page limit.
Dynamic Highlights
Dynamic Highlights adjusts how much text it selects from each result based on what is most useful for your query. It can take more from strong sources and less from repetitive or irrelevant ones, reducing the total tokens returned. Use it when several results will feed the same agent or context window. Keep regularhighlights: true when every page needs its own excerpt or a predictable per-page limit.
In Exa’s evaluations, Dynamic Highlights cut tokens by an average of 95% compared to full page content. At a 12,000-character budget it beat regular highlights with a 40% average token-efficiency gain and a 3.8% quality increase. Inside Exa Agent, it cut total agent token usage by 30% with a 2.1% average quality gain on benchmarks including BrowseComp and WideSearch.
Enable it with dynamic: true:
Dynamic Highlights is a research preview and requires the
Exa-Beta: dynamic-highlights-2026-08-28 request header. The SDKs send it when you pass
betas=[DYNAMIC_HIGHLIGHTS_BETA] (Python) or betas: [DYNAMIC_HIGHLIGHTS_BETA] (JavaScript).The response uses the same
results[].highlights shape as regular highlights.Next steps
Search API guide
Build a Search request and choose the right output shape.
Search best practices
Tune retrieval quality, latency, freshness, and context size.