Compatible APIs
Keep code written for SearXNG, Tavily, Exa, Firecrawl, Jina, Bing Web Search or Brave Search, and point it at Search1API by changing the base URL and key.
Search1API answers the request and response formats of seven other search APIs. If your project already calls one of them, change its base URL and API key, and keep the rest of the code: the SDK, the request parameters and the code that reads the response.
| API | Base URL or endpoint | Operations |
|---|---|---|
| SearXNG | https://api.search1api.com/compat/searxng/YOUR_API_KEY | Search, news, images |
| Tavily | https://api.search1api.com/compat/tavily | Search, extract |
| Exa | https://api.search1api.com/compat/exa | Search, contents |
| Firecrawl | https://api.search1api.com/compat/firecrawl | Scrape, search (v1 and v2) |
| Jina | https://api.search1api.com/compat/jina/r and /compat/jina/s | Reader, search |
| Bing Web Search v7 | https://api.search1api.com/compat/bing/v7.0/search | Web, news, image search |
| Brave Search | https://api.search1api.com/compat/brave/res/v1/web/search | Web, news, image search |
Use your Search1API API key wherever the client expects the other service's key. Each page lists the setting or SDK parameter to change.
How requests are handled
A compatible request is translated into the matching Search1API request (/search, /news or /crawl) and answered in the original API's response format. As a result:
- Credits and limits are those of the native API. A compatible search costs what the equivalent
/searchor/newsrequest costs. See Credits and limits. - Reading page content is charged per page. When a request asks for the full text of search results (Tavily
include_raw_content, Exacontents.text, FirecrawlscrapeOptions.formats, Jina search by default), each page read successfully adds 1 credit, as withcrawl_results. Reading an explicit URL (Tavily extract, Exa contents, Firecrawl scrape, Jina Reader) costs 1 credit per page read. - A request can count more than once against the rate limit. A request that searches several engines or sources makes one native request per kind of search (web or news), and each one counts toward the per-minute limit.
- Unknown or unsupported options are ignored. The request still succeeds; the option has no effect. Each page lists which options are translated.
- Fields with no Search1API equivalent come back empty. For example, Tavily's
answerisnulland Brave'sextra_snippetsis omitted. Values are never invented to fill them. - Errors use the original API's error format and Search1API's status codes, such as
401for an invalid key,402when credits run out and429when the rate limit is reached.
Result pages
Every engine can return the first 50 results of a query, so pagination parameters work for the first pages. Beyond result 50, only Bing, Baidu, Chinese Bing and Grokipedia can continue, starting at a multiple of 10. Pages that cannot be reached return an empty result list and are not charged.
What is not supported
Compatible APIs cover search, news, image search and reading single pages. Generated answers and summaries, structured extraction, screenshots, browser actions, site maps and asynchronous crawl jobs are not available through them. For full-site crawling and structured extraction, use Search1API's own /deepcrawl, /sitemap and /extract.
Tested clients
These clients were run unchanged against the compatible endpoints:
| API | Clients |
|---|---|
| SearXNG | LangChain SearxSearchWrapper (Python) and SearxngSearch (JS); the request formats of Open WebUI, Perplexica and gpt-researcher |
| Tavily | tavily-python 0.8.5, @tavily/core 0.7.14 |
| Exa | exa-py 2.26.0, exa-js 2.26.0 |
| Firecrawl | @mendable/firecrawl-js 4.51.0; firecrawl-py 4.54.0 V1FirecrawlApp and AsyncFirecrawl |
| Jina | Open WebUI's Jina search request format |
| Bing Web Search v7 | LangChain BingSearchAPIWrapper; Open WebUI's Bing request format |
| Brave Search | LangChain BraveSearchWrapper |
Other versions and clients are likely to work if they use the same requests, but have not been tested.
Proxy troubleshooting
Diagnose proxy errors by the exact response you get, including 407, 403 Tunnel Failed, 503, timeouts, blocked ports, and unexpected IP changes.
SearXNG
Point a SearXNG instance URL at Search1API to keep using SearXNG's JSON search API, engine selection and categories without running an instance.