Skip to the page

Open source web search API in 2026

SearXNG's JSON, nothing to run.

The open-source web search APIs are free code you host: SearXNG, OpenSERP, DDGS and DonSeTch. Each sends your queries to Google, Bing or DuckDuckGo from your own IP, and the engines answer heavy use with CAPTCHAs, rate limits or bans.

SpecStream is the live web data engine. Its Search API answers SearXNG's own JSON at one address, with no server, at $1 per 1,000 searches. New accounts get $10 of credit, no card.

New accounts get $10 of credit, no card. It covers 10,000 searches.

SpecStream and the open-source search APIs, from each project's own docs

SpecStreamSearXNGOpenSERPDDGSDonSeTch
What it isA hosted Search API, GET /v1/web-search, that also answers the calls of SearXNG, Tavily, Exa, Brave, Serper, Firecrawl and Crawl4AI at their own pathsA metasearch engine that aggregates results from various search services and databasesA REST API and CLI for Google, Bing, Yandex, Baidu, DuckDuckGo and EcosiaA Python metasearch library, with an optional API server built on FastAPIOne Rust binary with four tools for agents: fetch, search, crawl and screenshot
What you runNothing. One address and a key: https://api.specstream.ai/searxng/<key>Your own instance: a working Docker or Podman installation, and a Valkey database for the limiterOne Go binary or Docker image, with Chromium loading each rendered results pagepip install -U ddgs[api], then ddgs api, on port 4479 by defaultA local process. The first build compiles BoringSSL from source and downloads V8
When engines push backThe search behind the address is ours to run. A busy call gets a 429 with Retry-After, and nothing is chargedPublic use can make engines enforce CAPTCHAs or ban the instance's IP. A CAPTCHA suspends that engine for 86,400 seconds by defaultEngines can return CAPTCHAs, rate limits or unrelated results, and browser mode does not stop them. The README's advice: another engine or a proxyYou pass a proxy for the HTTP client (http, https or socks5)Keyless search rate-limits without a proxy, because it hits engines from your IP. CAPTCHA walls need a paid unlocker key
The replySearXNG's results[] with title, url and content on every key, or SpecStream's own data.sources[], with the answer and the page it was read fromJSON only when the admin turns it on. Requesting an unset format returns 403 Forbidden, and many public instances have it disabledThe same JSON for all six engines, with each result's source engine and rankSeparate endpoints: /search/text, /search/images, /search/news, /search/videos and /search/booksRanked URLs and snippets
License and termsA paid API with no plan to buy: you pay for the calls you make, under the spending limit you set on each keyAGPL-3.0MITIts README says the library is for educational purposes onlyAGPL-3.0
Price$1 per 1,000 searches of up to 10 results on every drop-in address and speed=fast, $5 per 1,000 on the default search. A call that returns no results costs nothingFree software, on a server you pay forNo per-query fees: you cover compute and proxies. The hosted OpenSERP Cloud is $0.0078 a creditFree library, on a server and proxies you pay forNo keys and $0, on your machine and your IP

Why teams that self-host search move to SpecStream

The open-source web search APIs, one by one

How SpecStream scores

The same numbers as the benchmarks page, from the official tasks and scorers.

How to switch from a self-hosted search API

1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 10,000 searches.

2. Put https://api.specstream.ai/searxng/<key> where your app asks for the SearXNG URL. Code that calls the instance changes one address:

import requests

reply = requests.get(
    "https://api.specstream.ai/searxng/search",  # was http://localhost:8080/search
    headers={"X-API-Key": SPECSTREAM_KEY},
    params={"q": "open source vector databases", "format": "json", "pageno": 1},
).json()

for result in reply["results"]:
    print(result["title"], result["url"], result["content"])

3. Or call the Search API directly. With speed=fast a search of up to 10 results is $0.001:

const reply = await fetch(
  "https://api.specstream.ai/v1/web-search?" + new URLSearchParams({ q: "open source vector databases", speed: "fast" }),
  { headers: { Authorization: `Bearer ${process.env.SPECSTREAM_KEY}` } },
).then((r) => r.json());

for (const source of reply.data.sources) console.log(source.title, source.url, source.snippet);

4. Give the key a spending limit, then shut the instance down. Every call is in the request log at GET https://api.specstream.ai/v1/account/requests, with its price.

Frequently asked questions

Something we didn't answer? Talk to a human

What is the best open source web search API?
For an app that speaks SearXNG, SpecStream: it answers SearXNG's JSON at https://api.specstream.ai/searxng/<key> for $1 per 1,000 searches, with no server to run, and scores 97.9 F-score on all 1,000 SimpleQA Verified questions. The open-source projects (SearXNG, OpenSERP, DDGS, DonSeTch) are free code you host and keep unblocked.
Is there a web search API with no API key?
The self-hosted projects need no key, but they query the engines from your IP, and their own docs warn of CAPTCHAs and rate limits. SpecStream gives new accounts $10 of credit with no card, which covers 10,000 searches.
Why does my self-hosted search get CAPTCHAs?
Because every query reaches Google, Bing or DuckDuckGo from one server address. SearXNG then suspends the engine for 86,400 seconds by default, and OpenSERP's README says browser mode does not stop CAPTCHAs. SpecStream's searches never leave from your address.
Can I keep my SearXNG settings?
Yes. Set the SearXNG URL to https://api.specstream.ai/searxng/<key> and keep format=json and pageno. The reply has SearXNG's results[] with title, url and content.
Does SpecStream keep my searches?
Not on a zero-retention key: the search keeps no request text and no answer after the reply. eu_egress_only on the key sends every search from our server in Madrid.
How much does SpecStream cost next to a self-hosted search API?
$1 per 1,000 searches of up to 10 results on the fast tier and every drop-in address, and a call that returns nothing costs nothing. The open-source projects are free software, on servers and proxies you pay for.

Sources

SpecStream wrote this page. Each figure about another project comes from that project's own docs or README.

  1. SearXNG Search APIdocs.searxng.org/dev/search_api.html, read Nov 12, 2026
  2. SearXNG settings, searchdocs.searxng.org/admin/settings/settings_search.html, read Nov 12, 2026
  3. SearXNG limiterdocs.searxng.org/admin/searx.limiter.html, read Nov 12, 2026
  4. SearXNG, why use a private instancedocs.searxng.org/own-instance.html, read Nov 12, 2026
  5. SearXNG installation with Dockerdocs.searxng.org/admin/installation-docker.html, read Nov 12, 2026
  6. SearXNG READMEgithub.com/searxng/searxng, read Nov 12, 2026
  7. OpenSERP READMEgithub.com/karust/openserp, read Nov 12, 2026
  8. DDGS READMEgithub.com/deedy5/ddgs, read Nov 12, 2026
  9. DonSeTch READMEgithub.com/dondai44423/donsetch, read Nov 12, 2026
  10. SpecStream benchmarksspecstream.ai/benchmarks, read Nov 12, 2026
  11. SpecStream pricingspecstream.ai/pricing, read Nov 12, 2026
  12. SpecStream for agentsspecstream.ai/agents.md, read Nov 12, 2026