Overview
Discover what makes SearXNG powerful
SearXNG is a self‑hosted metasearch engine that aggregates results from **up to 245** public search services while guaranteeing user privacy. From a developer standpoint, the application is a lightweight Python web service that exposes both a REST‑style API and a dynamic front‑end rendered with **Jinja2**. It is intentionally modular: each search engine, filter, or result transformer is implemented as a *plugin* that can be dropped in or swapped out without touching the core codebase. The service is stateless, relying on a simple SQLite database for configuration persistence and optional caching layers (Redis or Memcached) to improve response times.
Language
Web Server
Template Engine
Data Storage
Overview
SearXNG is a self‑hosted metasearch engine that aggregates results from up to 245 public search services while guaranteeing user privacy. From a developer standpoint, the application is a lightweight Python web service that exposes both a REST‑style API and a dynamic front‑end rendered with Jinja2. It is intentionally modular: each search engine, filter, or result transformer is implemented as a plugin that can be dropped in or swapped out without touching the core codebase. The service is stateless, relying on a simple SQLite database for configuration persistence and optional caching layers (Redis or Memcached) to improve response times.
Technical Stack & Architecture
- Language: Python 3.10+, leveraging the FastAPI framework for request routing and validation.
- Web Server: Can run behind uWSGI, Granian (a newer ASGI worker), or directly via
uvicorn. The repository includes Dockerfiles and Helm charts for Kubernetes deployments. - Template Engine: Jinja2 powers the HTML interface; CSS is handled by Tailwind, allowing rapid theming without heavy JS.
- Data Storage: Core settings and engine lists are stored in SQLite; optional integration with PostgreSQL or MySQL is supported for larger deployments.
- Caching & Rate‑Limiting: Redis/Memcached can be plugged in for result caching and per‑IP request throttling, essential for high‑traffic instances.
The architecture is intentionally declarative: a YAML configuration file lists enabled engines, filters, and UI settings. The engine registry is loaded at startup; each engine implements a standard interface (search(query, params)) that returns JSON results. This design keeps the runtime lightweight and makes it trivial to add a new engine by implementing a Python class.
Core Capabilities & APIs
- Search API:
/api/searchaccepts query parameters (q,lang,engine, etc.) and returns a unified JSON payload. Developers can consume this endpoint from any client (web, mobile, CLI). - Engine Management API:
/api/enginesallows CRUD operations on the engine list, enabling dynamic updates without restarting the service. - Admin UI: A built‑in dashboard exposes configuration, logs, and real‑time statistics. It can be secured with HTTP Basic Auth or integrated into an existing auth provider via OAuth2.
- Webhooks: The API can emit events (e.g., “search executed”, “engine failed”) to external services, facilitating monitoring or analytics pipelines.
- Extensibility: Plugins can hook into request/response cycles (
pre_search,post_search) to inject custom filters, modify queries, or transform results. The plugin system is documented and supports both Python modules and external JAR/Node packages via a simple wrapper.
Deployment & Infrastructure
SearXNG is designed for easy self‑hosting:
- Docker Compose / Docker Swarm: The official
docker-compose.ymllaunches the web server, optional Redis, and NGINX reverse proxy in a single command. - Kubernetes: Helm charts expose customizable values for replicas, resource limits, and ingress controllers.
- Bare Metal / VMs: A lightweight
uWSGI+NGINXstack requires only a few MB of RAM; the service can run on Raspberry Pi or older servers with 512 MB memory. - Scalability: Statelessness allows horizontal scaling behind a load balancer. Caching layers reduce backend load, and the engine registry can be sharded across instances if needed.
The application also supports Tor integration out of the box by routing queries through a local Tor proxy, making it suitable for privacy‑centric deployments.
Integration & Extensibility
- Plugin Ecosystem: Thousands of community‑contributed plugins exist (e.g., custom image search, advanced filtering). Developers can create their own by following the
pluginsdirectory structure and publishing on PyPI. - API Customization: The search API accepts arbitrary parameters that can be forwarded to the underlying engines, allowing developers to build tailored query builders.
- Theming: The front‑end is fully CSS‑based; custom themes can be applied by overriding the Tailwind configuration or providing a new Jinja template set.
- External Auth: Integration with LDAP, OAuth2 providers, or SAML is possible via the admin UI, enabling enterprise deployments.
Developer Experience
The project emphasizes high‑quality documentation: a comprehensive README, API reference, and developer guide are maintained in Markdown. Continuous integration (GitHub Actions) runs unit tests, linting, and automated UI snapshots, ensuring stability. The community is active on GitHub Discussions and Discord, where contributors can request features or report bugs. Licensing under the MIT license removes any commercial restrictions, encouraging adoption in both open‑source and proprietary projects.
Use Cases
- Privacy‑First Search Service – Organizations needing a non‑tracking search portal for internal use or public distribution.
- Custom Search API – Developers building a front‑end (React, Vue) that requires a unified search backend without relying on third‑party APIs.
- Educational Projects – Students learning about web scraping, API design, and privacy engineering can experiment with the engine registry.
- Enterprise Intranet – Combined with LDAP authentication, SearXNG can serve as a secure search layer for internal documentation and web resources.
Advantages
- Performance & Flexibility: Lightweight Python core, stateless design, and optional caching provide fast responses while allowing dynamic engine configuration.
Open SourceReady to get started?
Join the community and start self-hosting SearXNG today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Wiki.js
Modern, lightweight wiki built on Node.js
NewsBlur
Personal RSS reader that highlights what matters
Gerrit
Git Code Review & Project Management Tool
Bitwarden
Secure, open‑source password manager for individuals and teams
Form.io
Self-hosted form builder and API platform for enterprises
BookBounty
Find missing Readarr books via Library Genesis