Providers
Pick a provider, keep your code
Every provider factory accepts an optional { apiKey?, baseUrl? } and reads its env variable by default. Scrape is only exposed where the provider supports it.
Firecrawl
@search-sdk/firecrawlSearch and full-page scraping with clean markdown output. The most complete provider — supports both search and scrape.
SearchScrape
FIRECRAWL_API_KEY
Get a keyTavily
@search-sdk/tavilySearch built for LLMs with optional synthesized answers and content extraction from result URLs.
SearchScrape(extract)Synthesized answer
TAVILY_API_KEY
Get a keyExa
@search-sdk/exaNeural, embeddings-based search with page contents retrieval and synthesized answers.
SearchScrape(contents)Synthesized answer
EXA_API_KEY
Get a keyCapability matrix
| Package | Search | Scrape | Env variable |
|---|---|---|---|
| @search-sdk/firecrawl | FIRECRAWL_API_KEY | ||
| @search-sdk/tavily | (extract) | TAVILY_API_KEY | |
| @search-sdk/exa | (contents) | EXA_API_KEY | |
| @search-sdk/brave | BRAVE_API_KEY | ||
| @search-sdk/serper | SERPER_API_KEY |
Calling scrape() on a search-only provider throws a WebSearchError.