Use case

Proxies for SearXNG: which engines refuse your server, and where the proxy goes

Set proxies in SearXNG's settings.yml: outgoing for all engines, one engine by name, and request_timeout. Tested from a server on 19 September 2026.

HProxy Team··Updated September 19, 2026·6 min read
HProxy.Use case

Free proxies won't hold up here.

Shared datacenter IPs get flagged and dropped fast. When it has to hold, gaming, streaming, accounts, you need mobile and residential IPs that read as a real device, from $0.44/GB, pay as you go.

See plans & pricing

SearXNG sends every search to the search engines from the server it runs on. On a rented server, that address decides what comes back. We tested it on 19 September 2026. DuckDuckGo and Brave, the two web engines a fresh install uses, refused our server in 8 tries out of 8. Google and Bing answered every time, but both are switched off by default. A proxy goes in settings.yml, for all engines or for one. We read every setting on this page in SearXNG's code at commit e831fc2a1cad of 19 September 2026, because the project publishes no releases.

What does a server get from SearXNG's engines?

We rebuilt the requests that SearXNG's own engines send and ran them from our server, which sits in a hosting network. Each engine got four requests over a few minutes.

EngineOn in a fresh installWhat our server IP gotWhat SearXNG does next
DuckDuckGoyes2 failed connections, then 2 CAPTCHA formsafter a CAPTCHA, no results for that search and no pause
BraveyesHTTP 429 with a CAPTCHA page, 4 timespauses Brave for 180 seconds
Googlenoresults, 4 timesnone needed
Bingnoresults, 4 timesnone needed

Brave's page said so plainly: "Your request has been flagged as being suspicious and Brave Search decided to schedule a captcha for you." SearXNG's maintainers report the same from their own servers: "From time to time ddg blocks the server IP by a CAPTCHA challenge". Another time, they wrote, "there is no response and the request runs into the timeout". That is what our failed connections looked like.

One comparison with a residential IP exists, from our OpenClaw test. DuckDuckGo's HTML search failed our server 3 times in 5 and answered a residential line 2 times in 2.

Our requests used plain curl. Since 4 September 2026, SearXNG's own client presents Chrome's TLS fingerprint. The pull request for that change says "DDG now works again". Some engines may answer that client differently, so read our result as the standing of the IP.

How long does SearXNG bench a blocked engine?

After a block, SearXNG stops asking that engine for a set time. The defaults live under search: suspended_times in settings.yml:

How long SearXNG pauses an engine after a block, by default
HTTP 403 or access denied180 seconds
3 minutes
HTTP 429, too many requests180 seconds
3 minutes
CAPTCHAone hour
60 minutes
Cloudflare firewall blockone day
1,440 minutes
reCAPTCHA7 days
10,080 minutes
Cloudflare CAPTCHA15 days
21,600 minutes
Source: searx/settings.yml at commit e831fc2a1cad, read on 19 September 2026

A Cloudflare CAPTCHA takes an engine out for 15 days. DuckDuckGo is the exception in the other direction: its code sets the pause to zero, noting that "ddg does not block the IP". It simply gives no results until it answers again. You can shorten any of these times in your own settings.yml.

Where does the proxy go?

For all engines

Under outgoing in /etc/searxng/settings.yml, the file the Docker image reads:

use_default_settings: true
outgoing:
  proxies:
    all://:
      - http://USERNAME:PASSWORD@GATEWAY_HOST:GATEWAY_PORT

With several URLs in the list, SearXNG uses them in turn. It accepts HTTP, HTTPS, SOCKS4, SOCKS5 and SOCKS5h proxies. With socks5h://, the proxy resolves host names, so no name lookup leaves from your server.

For one engine

This is the better fit for most servers. Give only the engines that refuse your server a proxy:

use_default_settings: true
engines:
  - name: duckduckgo
    proxies:
      all://:
        - http://USERNAME:PASSWORD@GATEWAY_HOST:GATEWAY_PORT
  - name: brave
    proxies:
      all://:
        - http://USERNAME:PASSWORD@GATEWAY_HOST:GATEWAY_PORT
  - name: google
    disabled: false
  - name: bing
    disabled: false

With use_default_settings: true, SearXNG merges this list into its defaults by engine name. Every other setting of each engine stays as shipped. An engine's own proxies block replaces the one under outgoing. The last four lines switch on Google and Bing, which answered our server without a proxy, so their searches stay off the proxy line.

Give the proxy time

Each engine gets 3 seconds by default, set by request_timeout under outgoing. A proxy adds time to every request, so raise it:

outgoing:
  request_timeout: 6.0

Do not count on extra_proxy_timeout. Its description speaks of "the time taken by the proxy", but the code adds it only for engines that go through Tor to an onion address.

Which proxy type fits SearXNG?

The engines judged our server by its address, and a datacenter proxy leaves from a hosting network too. A residential line suits the engines that refuse your server. Each search is one request per engine, so a rotating line can leave from a new IP every time. That spreads your searches over many addresses instead of one.

HProxy residential gateways fit this. Allow your server's IP on a Residential Premium plan, up to 150 per plan, and the proxy line needs no password in settings.yml. An allowed IP takes no country or city targeting and rotates on the rotating ports. When an engine should see a certain country, use a generated line with the targeting in its username instead. Set the line on DuckDuckGo and Brave only, and Google and Bing traffic stays off the per-gigabyte meter. The residential proxies page lists the plans, and the plan API generates lines and manages allowed IPs from code.

What breaks when the proxy is on?

  • Engines time out after you add the proxy. The 3-second default is too short for a proxy line. Raise request_timeout, not extra_proxy_timeout.
  • Brave shows "Too many requests". Brave answered 429 and SearXNG paused it for 180 seconds. A proxy on Brave changes the address it judges.
  • DuckDuckGo shows CAPTCHA. No pause follows, and each new search tries again. Give DuckDuckGo a proxy.
  • Google results are missing. Google is off by default. Add it to your engines list with disabled: false.
  • An engine is gone for days. A Cloudflare CAPTCHA pauses it for 15 days by default. Shorten cf_SearxEngineCaptcha under search: suspended_times if you would rather retry sooner.
  • 407 Proxy Authentication Required. The proxy refused the login. On our gateways this means a wrong password or a line from another plan.
  • A guide written before September 2026. SearXNG swapped its HTTP client for curl_cffi on 4 September 2026. Advice about the old client may no longer apply.

What this page does not cover

We read SearXNG's code at commit e831fc2a1cad and did not run SearXNG. The engine test rebuilt SearXNG's requests with plain curl, four per engine from one server IP, over a few minutes. SearXNG's own client presents a Chrome TLS fingerprint, which some engines may answer differently. We have no residential run of these engine requests, only the DuckDuckGo comparison from our OpenClaw test. SearXNG changes daily and has no releases, so we will read these settings again by 19 October 2026.

Where to go from here

SearXNG often runs as the search backend of an agent. Proxies for Hermes Agent, proxies for OpenClaw and proxies for self-hosted Firecrawl cover three of them. Our 429 guide explains rate limits in general, and HTTP vs SOCKS5 explains the proxy kinds SearXNG accepts.

Sources

  • Settings: outgoing, engines, use_default_settings; Answer CAPTCHA from server's IP. SearXNG documentation, commit e831fc2a1cad, 19 September 2026.
  • searx/settings.yml, settings_defaults.py, network/network.py, network/raise_for_httperror.py, exceptions.py, engines/init.py and the Google, DuckDuckGo, Brave and Bing engines. SearXNG source code, commit e831fc2a1cad, read on 19 September 2026.
  • Pull request #6620 and issues #6596, #4824 and #4435. searxng/searxng on GitHub, 2025 to 2026.
  • Plans, IP whitelist and sticky sessions; errors; the proxy API. HProxy documentation, hproxy.com/docs, 19 September 2026.
  • Our own tests of 19 September 2026: the requests of SearXNG's Google, Bing, DuckDuckGo and Brave engines, rebuilt with curl, four each from our server; and DuckDuckGo's HTML search from our server and a residential line of our own house plan. Raw output is kept in the page's research folder.

Frequently asked questions

How do I set a proxy in SearXNG?
In settings.yml, under outgoing: proxies:, with the pattern all:// and a list of proxy URLs. SearXNG uses several URLs in turn. To proxy only one engine, give that engine its own proxies block; with use_default_settings: true, SearXNG merges your engines list into the defaults by name.
Why does SearXNG show CAPTCHA or 'too many requests' for an engine?
The engine refused your server's IP. From our server, DuckDuckGo sent its CAPTCHA form or failed to connect, and Brave answered 429 with a CAPTCHA page. SearXNG then pauses the engine: 180 seconds after a 429, an hour after a CAPTCHA, and up to 15 days after a Cloudflare CAPTCHA.
Why are there no Google results in SearXNG?
Google is switched off in SearXNG's default settings, and so is Bing. Add the engine to your settings.yml with disabled: false to switch it on. In our test both answered our server IP with results, while the two engines that are on by default did not.
Does extra_proxy_timeout help with a slow proxy?
No. The code adds it only for engines that go through Tor to an onion address. For an ordinary proxy, raise request_timeout under outgoing, which is 3 seconds by default.
Which proxy types does SearXNG accept?
HTTP, HTTPS, SOCKS4, SOCKS5 and SOCKS5h, with the login inside the URL if the proxy needs one. With socks5h, the proxy resolves the host names, so name lookups do not leave from your server.
Is a VPN enough for SearXNG?
It moves every engine to one other address, which the engines can refuse just like your server's. A proxy set per engine keeps the engines that already answer your server direct and sends only the refused ones through the proxy.

Proxies that don't die mid-job

Residential, ISP, datacenter and mobile, verified by the same engine that runs tens of millions of checks. They read as a real device and hold up under load. Pay as you go, and your balance never expires. $0.44/GB is the 2,000 GB+ rate; a single gigabyte is $0.50/GB, with no minimum order.

129M+ proxy checks run · 100+ countries · HTTP / HTTPS / SOCKS · re-checked every few minutes · no signup

HProxy.

Honest guides and comparisons on proxies, scraping and staying unblocked, from the team that runs the network.

RSS feed