Exa Entity Search
Quick Reference
| Topic | When to Use | Reference | |-------|-------------|-----------| | Company Search | Finding companies, competitive research | company-search.md | | People Search | Finding profiles, recruiting | people-search.md | | Websets | Data collection at scale, monitoring | websets.md |
Essential Patterns
Company Search
from exa_py import Exa
exa = Exa()
results = exa.search_and_contents(
"AI startups in healthcare series A funding",
category="company",
num_results=20,
text=True
)
for company in results.results:
print(f"{company.title}: {company.url}")
People Search
results = exa.search_and_contents(
"machine learning engineers San Francisco",
category="linkedin_profile",
num_results=20,
text=True
)
for profile in results.results:
print(f"{profile.title}: {profile.url}")
Websets for Lead Generation
# Create a webset for company collection
webset = exa.websets.create(
name="AI Healthcare Companies",
search_query="AI healthcare startups",
category="company",
max_results=100
)
# Monitor for new matches
exa.websets.add_monitor(
webset_id=webset.id,
schedule="daily"
)
Category Reference
| Category | Use Case | Index Size |
|----------|----------|------------|
| company | Company websites, about pages | Millions |
| linkedin_profile | Professional profiles | 1B+ profiles |
| personal_site | Individual blogs, portfolios | Millions |
| github | Repositories, developer profiles | Millions |
Common Mistakes
- Not using category filter - Always set
category="company"orcategory="linkedin_profile"for entity search - Expecting structured data - Exa returns web pages; parse text for structured fields
- Over-broad queries - Add location, industry, or role specifics for better results
- Ignoring rate limits - Batch requests and implement backoff for large-scale collection
- Missing domain filters - Use
include_domains=["linkedin.com"]for profile-only results