Exa Search Integration
Quick Reference
Topic When to Use Reference
Search Modes Choosing between auto, neural, and keyword search search-modes.md
Filters Domain, date, text, and category filtering filters.md
Contents Text extraction, highlights, summaries, livecrawl contents.md
SDK Patterns Python (exa_py) and TypeScript (exa-js) usage sdk-patterns.md
Essential Patterns
Basic Search (Python)
from exa_py import Exa
exa = Exa(api_key="your-api-key") # or set EXA_API_KEY env var
results = exa.search_and_contents( "latest developments in quantum computing", type="auto", num_results=10, text=True, highlights=True )
for result in results.results: print(f"{result.title}: {result.url}") print(result.text[:500])
Basic Search (TypeScript)
import Exa from "exa-js";
const exa = new Exa(process.env.EXA_API_KEY);
const results = await exa.searchAndContents( "latest developments in quantum computing", { type: "auto", numResults: 10, text: true, highlights: true, } );
results.results.forEach((result) => {
console.log(${result.title}: ${result.url});
});
Search with Filters
results = exa.search_and_contents( "AI startup funding rounds", type="neural", num_results=10, include_domains=["techcrunch.com", "venturebeat.com"], start_published_date="2024-01-01", text={"max_characters": 2000}, summary=True )
Find Similar Links
similar = exa.find_similar_and_contents( "https://example.com/interesting-article", num_results=10, exclude_source_domain=True, text=True )
Search Mode Selection
Mode When to Use Notes
auto
Default for most queries Exa optimizes between neural/keyword automatically
neural
Natural language, conceptual queries Best for "what is...", "how to...", topic exploration
keyword
Exact matches, technical terms, names Best for specific product names, error codes, proper nouns
Common Mistakes
-
Using keyword for conceptual queries - Neural search understands intent better; use auto or neural for natural language questions
-
Not setting text=True
-
Search returns URLs only by default; explicitly request content with text=True
-
Ignoring highlights
-
Use highlights=True for relevant snippets without downloading full page text
-
Missing API key - Set EXA_API_KEY environment variable or pass explicitly to constructor
-
Over-filtering initially - Start with broad searches, then add domain/date filters to refine
-
Not using summary
-
For RAG applications, summary=True provides concise context without full page text
-
Expecting scores in auto mode - Relevance scores are only returned with type="neural" ; auto mode doesn't include them