Providers
Providers
Thirteen providers, one class shape. Pick one to see its endpoints, the filters it honours, the fields it fills and the traps.
Every search provider answers the same search() with the same SearchResult. Six of them also read(), one also searchByImage(). What changes is the API behind it, the filters it can honour, which optional fields it fills, and what ends up in metadata. The pages are short on purpose. The part worth reading on each one is the gotcha list.
| Provider | Env var | Search | Image | Read | Filters | Paging |
|---|---|---|---|---|---|---|
| Brave | BRAVE_API_KEY | yes | dates | yes | ||
| Context.dev | CONTEXT_DEV_API_KEY | yes | yes | domains | ||
| Exa | EXA_API_KEY | yes | yes | domains, category, dates | ||
| Firecrawl | FIRECRAWL_API_KEY | yes | yes | domains, sources, categories | ||
| Jina | JINA_API_KEY | yes | yes | include domains, category | ||
| Marginalia | MARGINALIA_API_KEY, or the shared public key when named | yes | none | yes | ||
| Mojeek | MOJEEK_API_KEY | yes | domains, dates | yes | ||
| OpenAI Codex | Existing login; optional OPENAI_CODEX_ACCESS_TOKEN | yes | none | |||
| SearXNG | none | yes | category | yes | ||
| SerpAPI | SERPAPI_API_KEY | yes | yes | dates | yes | |
| SerpBase | SERPBASE_API_KEY | yes | category | yes | ||
| Tavily | TAVILY_API_KEY | yes | yes | domains, category, dates | ||
| TinyFish | TINYFISH_API_KEY | yes | yes | domains, category, dates | yes |