Keyless SERP API for Google, Bing and four other engines
OpenSERP is an HTTP server and CLI written in Go that fetches results from six search engines: Google, Bing, Yandex, Baidu, DuckDuckGo and Ecosia. None of them goes through an official API. By default a headless Chromium loads the results page, OpenSERP parses it, and every engine comes back in the same JSON schema. The README pitches it as a free SERP API with no keys and no per-search billing, meant as a search tool for LLMs or the backend of an SEO rank tracker.
Agent Reach also gives an agent the web without paid APIs, but hands general search to Exa, a hosted engine it reaches over MCP. PriceGhost drives a headless browser too, on product pages whose address you give it. OpenSERP starts from a query and returns addresses, from whatever machine hosts it.
The comparison of open source web scraping tools places OpenSERP next to crawling frameworks, anti-detect browsers and proxy rotators.
Deduped multi-engine results and errors that name the block
- One schema for six engines:
/google/search,/bing/searchand the rest return the same JSON envelope and take the same filters (language, region, date range, file type, site), up to 100 results. - Several engines in one request:
/mega/searchqueries them in parallel, dedupes by URL and keeps each URL's rank on each engine inclusters. An engine that fails does not sink the response; it shows up inmeta.engines_failed. - Page text alongside the links:
extract=3attaches the content of the top three results as Markdown.POST /extract/batchhandles up to 20 URLs in the shape Open WebUI's web loader expects. - Blocks have names: a CAPTCHA or an engine refusal comes back as a
captcha_detectedorblockederror, not as an empty list a client would read as "no results". - A CLI that needs no server:
openserp search bing "release notes" --site github.com --format ndjsonqueries an engine straight from the terminal.
CAPTCHAs on the first request and an unauthenticated API
Engines push back, Google hardest. Issue #36, opened in July 2026, reports a Google CAPTCHA on the very first request under Docker, from a residential network. The maintainer shipped an image with fixes and said it was "not a complete fix yet". On a VPS, he wrote in issue #33, datacenter IPs may be blacklisted and "proxies are usually required". CAPTCHA solving through 2Captcha is off by default and needs a key for that service; an issue open since March 2025 reports it failing (#9).
Google encrypts the links it serves to bots. According to PR #51, Google replaces every organic link with an encrypted token (/goto?url=...) for clients it classifies as automated. The fix was merged on September 22, 2026. On the 28th, a user still got those links from the latest image and could no longer tell which result belonged to which site (#53, open).
Bring your own proxies. OpenSERP takes HTTP and SOCKS5 proxies, as tagged pools assigned per engine or picked per request with the X-Use-Proxy header, but ships none. Rota puts an authenticated HTTP proxy (http://user:pass@host:8000) in front of its pool, which is the format the --proxy flag takes. Authenticated SOCKS proxies are rejected in browser mode.
There is a Chromium to host. Bing and DuckDuckGo only work in browser mode; raw HTTP mode covers Google, Yandex, Baidu and Ecosia. The bundled Compose file gives the container 2 GB of /dev/shm because Chrome runs out of memory on the 64 MB default. Up to six Chrome processes run at once by default, and each authenticated proxy gets its own. The docs give no total memory figure.
The API has no authentication. The OpenAPI spec declares no security scheme and CORS accepts any origin. Since v0.8.12, proxies.allow_request_proxy_url defaults to true, so a caller can route searches through a proxy of their choosing; the release notes recommend false on a publicly exposed instance. The bundled Compose file publishes port 7000 on every interface, while the README's docker run binds it to 127.0.0.1.
Still 0.x, one main maintainer. Seven releases came out in 2026, the latest being v0.8.12 on July 22; the Google fix is not in any of them yet. The maintainer authored 135 commits, the next contributor 17. The hosted service's FAQ calls the MIT version "production-ready".
The cloud keeps the same API. OpenSERP Cloud has the same endpoints and schema, and the SDKs, MCP server and n8n node point at either one. After 60 free credits, a credit costs $0.009 and covers up to ten returned results; errors and empty responses are not charged. The cloud adds managed API keys, usage history and scheduled searches (Search Monitor).
