SearXNG

Privacy-first metasearch engine that aggregates results from 250+ search services — no tracking, no profiling, full control when self-hosted.

33.4Kstars
3.1Kforks
GNU AGPLv3
Python

SearXNG is a free, open-source metasearch engine that pulls results from over 250 search services — including Google, Bing, DuckDuckGo, Qwant, Brave, and Yahoo — while guaranteeing zero user tracking or profiling. Every query is forwarded to external engines anonymously, with no cookies, no IP logging, and no persistent session data stored on the server.

Designed for both public deployment and private self-hosting, SearXNG supports containerized installation via Docker and Podman, traditional setups with uWSGI or Granian, and reverse proxy configurations with NGINX or Apache. An administration interface and settings system let operators configure which engines are active, set safe search defaults, define rate limits, and tune the experience per deployment.

The project is community-driven, with an active development pace averaging over 77 commits per month, support for 58 languages via Weblate, and over 70 public instances listed on searx.space. A modular plugin and answerer system lets developers extend result processing, add custom engines, or modify how results are ranked and presented.

For individuals and organizations seeking to reclaim search privacy without sacrificing result breadth, SearXNG represents the most mature and actively maintained self-hostable option in the metasearch space.

What You Get

  • 250+ Aggregated Search Engines - Simultaneously queries Google, Bing, DuckDuckGo, Qwant, Brave, Yahoo, and hundreds more, merging and deduplicating results in a unified interface.
  • Zero Tracking by Design - No cookies, no IP logging, no user sessions — every query is forwarded to external engines anonymously with no data retained on the server.
  • Flexible Self-Hosting - Full installation documentation covers Docker, Podman, uWSGI, Granian, NGINX, and Apache, with a settings.yml configuration system for complete operator control.
  • Bot Detection and Rate Limiting - Built-in multi-signal bot detection using Valkey for distributed rate limiting protects public instances from abuse without requiring login.
  • Plugin and Answerer System - Extend result processing with custom plugins for DOI rewriting, tracker URL removal, hostname filtering, unit conversion, and more — all modular and configuration-driven.
  • 58-Language Interface - Fully localized into 58 languages via Weblate community translation, with per-user language and region preferences stored client-side.
  • Rich Result Types - Returns typed results beyond basic web links: images, papers, code snippets, files, key-value answers, and weather data — each with purpose-built display templates.
  • Tor and I2P Native Support - Can route engine queries through Tor or I2P proxies natively, enabling anonymous access for users in censored or monitored environments.

Common Use Cases

  • Corporate search gateway - An IT team deploys SearXNG internally to replace Google Workspace Search, providing employees access to all major engines while blocking tracking pixels and ad targeting.
  • Privacy-conscious personal instance - A developer self-hosts SearXNG on a small VPS to search freely without their queries building a profile on any commercial search platform.
  • Community search node for censored regions - An activist organization runs a SearXNG instance accessible via Tor, giving users in restricted countries uncensored access to multiple search engines.
  • University library search portal - A university deploys SearXNG to offer students a private, ad-free search experience across academic and general engines without vendor lock-in.
  • Research aggregation tool - A journalist uses SearXNG to simultaneously query specialized engines (Ahmia for Tor results, Anna’s Archive for books, arXiv for papers) from a single search bar.
  • Development and testing environment - A team uses SearXNG’s administration API and configurable engine selection to test how different search backends respond to the same queries.

Under The Hood

Architecture SearXNG follows a layered Flask-based architecture with deliberate separation between HTTP routing, query processing, engine execution, and result aggregation. Engine modules are dynamically discovered and loaded at startup via a configuration-driven registry — each engine is an independent Python module exposing a protocol of request/response functions, wired through abstract processor classes that handle suspension logic, timeout enforcement, and per-engine metrics tracking. The ResultContainer uses locking primitives to safely aggregate concurrent engine responses, while a modular plugin system applies result transformations after collection. This design allows operators to add, remove, or configure engines entirely through YAML settings without touching application code.

Tech Stack The backend runs on Python 3.10+ with Flask 3.x for HTTP routing and Jinja2 for server-side templating. Outbound engine requests are made asynchronously via httpx with HTTP/2 support and anyio for concurrency management, enabling simultaneous queries across dozens of engines within a single search request. Valkey (a Redis fork) handles distributed rate limiting and bot detection state via a custom valkeylib wrapper. msgspec provides high-performance structured serialization for engine traits and configuration. The frontend is TypeScript and Less compiled with Vite, with Pyright enforcing static type safety. Deployment targets include Docker, Podman, uWSGI, Granian, NGINX, and Apache.

Code Quality SearXNG maintains an extensive test suite across 26 test files using Python’s unittest framework with Flask test client and mock support, covering engine parsers, preference validation, search orchestration, plugins, and external bang handling. The codebase uses consistent TypedDict annotations for request parameters, msgspec structs for serialized data, and explicit ValidationException patterns for configuration integrity. Pylint and Pyright provide static analysis, and CI runs automated checks on every commit. AGPL-3.0 license headers appear uniformly across source files, and comprehensive admin/developer documentation is maintained in a dedicated docs/ directory with Sphinx.

What Makes It Unique SearXNG’s core differentiator is privacy enforcement at the network layer rather than at the policy layer — queries are never persisted and each outbound request strips tracking parameters by design. The engine trait system automatically discovers per-engine regional and language capabilities, enabling intelligent query routing without manual configuration per locale. A multi-signal bot detection layer using header fingerprinting, IP rate limits, and link tokens protects public instances from scraping without requiring user accounts. The structured result type system — with dedicated types for papers, code, images, files, and weather — enables rich mixed-media aggregation that goes far beyond what standard metasearch engines return.

Self-Hosting

SearXNG is released under the GNU Affero General Public License v3.0 (AGPL-3.0). This is a strong copyleft license that permits commercial use, modification, and distribution, but requires that any modifications made to the software — including those deployed over a network — must be released under the same license. For most self-hosting scenarios (internal corporate use, personal instances, community deployments) this imposes no practical restrictions. If you build a commercial product on top of SearXNG and make it publicly accessible, you must open-source your modifications.

Operationally, running SearXNG requires a Linux server with Python 3.10+, a process manager (uWSGI or Granian), and optionally Valkey for distributed rate limiting on public instances. Docker and Podman images simplify deployment, but operators are responsible for configuration management (settings.yml), TLS termination, reverse proxy setup (NGINX/Apache), and keeping the application updated as engine parsers evolve — external search engines frequently change their response formats, requiring periodic engine updates from the upstream project. Scaling beyond a single instance requires manual load balancing; there is no built-in clustering.

There is no official hosted or managed version of SearXNG from the project maintainers, so there is no paid tier, SLA, or enterprise support contract available through official channels. The community provides over 70 public instances at searx.space, but these are volunteer-operated with no uptime guarantees. What you give up compared to a commercial search API is managed reliability, automatic engine maintenance, and professional support — in exchange for complete data ownership and the ability to query multiple search backends with a single self-controlled endpoint.

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack

No spam. Unsubscribe anytime.

Join 750+ subscribers
No spam. Unsubscribe anytime.

Search