Search1API
Compatible APIs

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.

APIBase URL or endpointOperations
SearXNGhttps://api.search1api.com/compat/searxng/YOUR_API_KEYSearch, news, images
Tavilyhttps://api.search1api.com/compat/tavilySearch, extract
Exahttps://api.search1api.com/compat/exaSearch, contents
Firecrawlhttps://api.search1api.com/compat/firecrawlScrape, search (v1 and v2)
Jinahttps://api.search1api.com/compat/jina/r and /compat/jina/sReader, search
Bing Web Search v7https://api.search1api.com/compat/bing/v7.0/searchWeb, news, image search
Brave Searchhttps://api.search1api.com/compat/brave/res/v1/web/searchWeb, 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 /search or /news request 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, Exa contents.text, Firecrawl scrapeOptions.formats, Jina search by default), each page read successfully adds 1 credit, as with crawl_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 answer is null and Brave's extra_snippets is omitted. Values are never invented to fill them.
  • Errors use the original API's error format and Search1API's status codes, such as 401 for an invalid key, 402 when credits run out and 429 when 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:

APIClients
SearXNGLangChain SearxSearchWrapper (Python) and SearxngSearch (JS); the request formats of Open WebUI, Perplexica and gpt-researcher
Tavilytavily-python 0.8.5, @tavily/core 0.7.14
Exaexa-py 2.26.0, exa-js 2.26.0
Firecrawl@mendable/firecrawl-js 4.51.0; firecrawl-py 4.54.0 V1FirecrawlApp and AsyncFirecrawl
JinaOpen WebUI's Jina search request format
Bing Web Search v7LangChain BingSearchAPIWrapper; Open WebUI's Bing request format
Brave SearchLangChain BraveSearchWrapper

Other versions and clients are likely to work if they use the same requests, but have not been tested.

On this page