Exa Search
Exa is a neural search API optimized for finding specific types of content - especially people, companies, and structured information that traditional search struggles with.
When to Use Exa vs. web_search
Use Exa when:
- Finding people (LinkedIn profiles, personal sites)
- Finding companies (company pages, profiles)
- Searching within specific content types (research papers, PDFs, tweets, GitHub repos)
- Building prospect/contact lists
- Need semantic/embeddings-based search
- Want structured extraction (summaries with JSON schema)
Use web_search (Brave) when:
- General web search
- Recent news/events
- Simple lookups
Setup
Get API key from: https://dashboard.exa.ai/api-keys
Store in environment:
export EXA_API_KEY="your_api_key_here"
Core Features
1. Category Search
Search within specific content types using category:
people- LinkedIn profiles (high quality)company- Company pages (high quality)research paper- Academic papersnews- News articlespdf- PDF documentsgithub- GitHub repositoriestweet- Twitter/X postspersonal site- Personal websites/blogsfinancial report- Financial documents
Example - Find people:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "medical billing managers at hospitals in Texas",
"category": "people",
"numResults": 20
}'
Example - Find companies:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "revenue cycle management software companies",
"category": "company",
"numResults": 10
}'
2. Search Types
auto(default) - Intelligently picks best methodneural- Embeddings-based semantic searchdeep- Query expansion + comprehensive results (supportsadditionalQueries)fast- Streamlined/faster version
Example - Deep search with query variations:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "prior authorization software",
"type": "deep",
"additionalQueries": [
"pre-authorization automation",
"prior auth platforms"
],
"numResults": 20
}'
3. Content Extraction
Get full text, highlights, or summaries:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "latest LLM benchmarks",
"category": "research paper",
"numResults": 5,
"contents": {
"text": {
"maxCharacters": 2000
},
"highlights": {
"numSentences": 3,
"highlightsPerUrl": 2
},
"summary": {
"query": "key findings and results"
}
}
}'
Structured summaries with JSON schema:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "Series B funding announcements healthcare",
"category": "news",
"numResults": 10,
"contents": {
"summary": {
"schema": {
"type": "object",
"properties": {
"companyName": {"type": "string"},
"fundingAmount": {"type": "string"},
"leadInvestor": {"type": "string"},
"date": {"type": "string"}
},
"required": ["companyName", "fundingAmount"]
}
}
}
}'
4. Date Filtering
Filter by published date or crawl date:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "Medicare coverage changes",
"category": "news",
"startPublishedDate": "2025-01-01T00:00:00.000Z",
"numResults": 10
}'
5. Domain Filtering
Include or exclude specific domains:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "machine learning papers",
"includeDomains": ["arxiv.org", "openreview.net"],
"numResults": 20
}'
Common Use Cases
Building Prospect Lists
Find 100 medical billing managers:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "medical billing manager at hospital",
"category": "people",
"numResults": 100,
"contents": {
"text": {
"maxCharacters": 500
}
}
}'
Process results to extract names, titles, companies, LinkedIn URLs.
Finding Companies in a Space
Find RCM software companies:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "revenue cycle management software company",
"category": "company",
"numResults": 50,
"contents": {
"summary": {
"query": "What does this company do and who are their customers?"
}
}
}'
Research/Competitive Analysis
Find recent competitor blog posts:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "prior authorization automation",
"includeDomains": ["competitor1.com", "competitor2.com"],
"startPublishedDate": "2024-11-01T00:00:00.000Z",
"numResults": 20,
"contents": {
"text": true
}
}'
Finding Recent Papers/News
Latest AI research on specific topic:
curl -X POST https://api.exa.ai/search \
-H "x-api-key: $EXA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"query": "LLM agent frameworks",
"category": "research paper",
"startPublishedDate": "2025-01-01T00:00:00.000Z",
"numResults": 10,
"contents": {
"highlights": {
"numSentences": 2,
"highlightsPerUrl": 3
}
}
}'
Important Constraints
Category-Specific Limitations
For people and company categories, these filters are NOT supported:
startPublishedDate/endPublishedDatestartCrawlDate/endCrawlDateincludeText/excludeTextexcludeDomains
For people category:
includeDomainsonly accepts LinkedIn domains
Using unsupported parameters returns 400 error.
Result Limits
neural/auto: max 100 resultsdeep: max 100 results- Contact sales for higher limits
Tips
- Be specific in queries - "medical billing manager at hospital in Texas" beats "billing manager"
- Use
deepsearch for comprehensive results when you need variations - Combine with date filters for recent content
- Request structured summaries when building lists/databases
- Use highlights over full text for cost efficiency when you need snippets
- Category search is powerful - use it! Much better results than generic search
Cost-Efficient Patterns
- Use
highlightsinstead of fulltextwhen possible (cheaper) - Set
maxCharacterslimits on text extraction - Use
numResultswisely - start small, increase if needed autosearch type usually best - only usedeepwhen necessary
Environment Variable
# Add to your shell profile or .env
export EXA_API_KEY="your_api_key_here"
More Info
- Dashboard: https://dashboard.exa.ai
- API Docs: https://exa.ai/docs
- Get API Key: https://dashboard.exa.ai/api-keys
