About exa-search
exa-search is a skill reference for developers integrating Exa search in Python or TypeScript. It explains search modes, filters, content retrieval, and SDK usage patterns for finding and extracting web information.
Key features
- 01Guidance for auto, neural, and keyword search
- 02Domain and date filters
- 03Page text, highlights, and summaries
- 04Python and TypeScript SDK patterns
Use cases
- 01Choose a search mode for a query
- 02Narrow results by domain or publication date
- 03Retrieve page text or relevant snippets
- 04Use Exa search in a Python or TypeScript project
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ ejirocodes/ agent-skills --skill exa-searchAfter installing, type/exa-searchin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/contents.mdfilters.mdsdk-patterns.mdsearch-modes.mdDetails
From the project READMEExa 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
keywordfor conceptual queries - Neural search understands intent better; useautoorneuralfor natural language questions - Not setting
text=True- Search returns URLs only by default; explicitly request content withtext=True - Ignoring
highlights- Usehighlights=Truefor relevant snippets without downloading full page text - Missing API key - Set
EXA_API_KEYenvironment 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=Trueprovides 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
Comments
Markdown supported