SearXNG Search
SearXNG is a privacy-respecting metasearch engine that you can run locally. It aggregates results from multiple search engines and package repositories, returning clean JSON output.
Quick Start
Start SearXNG:
This will:
- Auto-detect podman or docker
- Create a minimal config with JSON output enabled
- Start SearXNG on
http://localhost:8888 - Wait until ready
Stop SearXNG:
Custom port:
Quick Reference
Available Categories
Run to see all categories:
Notable categories:
- general: General web search (default)
- cargo: Rust crates from crates.io
- packages: Multi-repo (npm, rubygems, haskell/hoogle, hex, packagist, metacpan, pub.dev, pkg.go.dev, docker hub, alpine, etc.)
- it: IT/tech resources (includes GitHub, Docker Hub, crates.io)
- repos: Code repositories
- code: Code search
- scientific publications: Academic papers
- news, videos, images, books, etc.
See package-engine-status.md [blocked] for comprehensive package search testing results.
JSON Response Structure
Common Usage Patterns
1. Package Repository Searches
Cargo/Rust crates:
npm packages:
PyPI packages (workaround - see below):
2. Web Search with Filtering
IT/Tech search:
GitHub repositories:
3. Extracting Specific Information
Get top 3 results:
Check which engines returned results:
Get answer boxes/infoboxes:
PyPI Workaround
Since PyPI is not returning results in SearXNG (despite being enabled), use these alternatives:
Option 1: Direct PyPI JSON API
Option 2: qypi CLI tool
See references/pypi-direct-search.md for more details.
Integration with Nushell
Create a helper function:
Usage:
Debugging
Check SearXNG config:
Check for engine errors:
Test specific engine:
Known Issues
- PyPI engine enabled but not working: Use direct API or qypi CLI as workaround
- Cargo category sometimes returns empty: Try
categories=packagesorcategories=itwhich also include crates.io - Rate limiting: SearXNG may rate-limit if too many requests in quick succession
Configuration
Using the Helper Script (Recommended)
The start-searxng script creates a minimal configuration automatically:
Default config includes:
use_default_settings: true(inherits all SearXNG defaults)- JSON format enabled
- Rate limiting disabled (for local use)
- Secret key (change in production!)
Using Your Own Config
Your config directory should contain settings.yml.
Manual Container Start
Check Logs
Advanced Config
See SearXNG Settings Documentation for all options.
Minimal config to add JSON output to defaults:

