SearXNG Local
by @clockworksquirrel
Search the web using a self-hosted SearXNG instance. Privacy-respecting metasearch that aggregates results from multiple engines.
clawhub install searxng-localπ About This Skill
name: searxng description: Search the web using a self-hosted SearXNG instance. Privacy-respecting metasearch that aggregates results from multiple engines. metadata: clawdbot: config: optionalEnv: - SEARXNG_URL
SearXNG Search Skill
Search the web using your self-hosted SearXNG instance. Privacy-respecting metasearch that aggregates results from Google, DuckDuckGo, Brave, Startpage, and 70+ other engines.
Prerequisites
SearXNG running locally or on a server. Quick Docker setup:
mkdir -p ~/Projects/searxng/searxng
cd ~/Projects/searxngCreate docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
searxng:
image: searxng/searxng:latest
container_name: searxng
ports:
- "8080:8080"
volumes:
- ./searxng:/etc/searxng:rw
environment:
- SEARXNG_BASE_URL=http://localhost:8080/
restart: unless-stopped
EOFCreate settings.yml with JSON API enabled
cat > searxng/settings.yml << 'EOF'
use_default_settings: true
server:
secret_key: "change-me-to-random-string"
bind_address: "0.0.0.0"
port: 8080
search:
safe_search: 0
autocomplete: "google"
default_lang: "en"
formats:
- html
- json
EOFStart SearXNG
docker compose up -d
Configuration
Set the SearXNG URL (defaults to http://localhost:8080):
export SEARXNG_URL="http://localhost:8080"
Usage Examples
Basic Search
curl "http://localhost:8080/search?q=your+query&format=json" | jq '.results[:5]'
Search with Categories
# General web search
curl "http://localhost:8080/search?q=query&categories=general&format=json"Images
curl "http://localhost:8080/search?q=query&categories=images&format=json"News
curl "http://localhost:8080/search?q=query&categories=news&format=json"Videos
curl "http://localhost:8080/search?q=query&categories=videos&format=json"IT/Tech documentation
curl "http://localhost:8080/search?q=query&categories=it&format=json"Science/Academic
curl "http://localhost:8080/search?q=query&categories=science&format=json"
Search with Language/Region
curl "http://localhost:8080/search?q=query&language=en-US&format=json"
curl "http://localhost:8080/search?q=query&language=de-DE&format=json"
Paginated Results
# Page 2 (results 11-20)
curl "http://localhost:8080/search?q=query&pageno=2&format=json"
Response Format
Each result includes:
title - Result titleurl - Link to the result content - Snippet/descriptionengines - Array of search engines that returned this resultscore - Relevance score (higher = better)category - Result categoryShell Function
Add to your .zshrc or .bashrc:
searxng() {
local query="$*"
local url="${SEARXNG_URL:-http://localhost:8080}"
curl -s "${url}/search?q=$(echo "$query" | sed 's/ /+/g')&format=json" | \
jq -r '.results[:10][] | "[\(.score | floor)] \(.title)\n \(.url)\n \(.content // "No description")\n"'
}
Usage: searxng how to make sourdough bread
Docker Management
# Start
cd ~/Projects/searxng && docker compose up -dStop
docker compose downView logs
docker compose logs -f searxngRestart
docker compose restart
Troubleshooting
Container won't start:
docker compose logs searxng
JSON format not working:
Ensure formats: [html, json] is in your settings.yml
No results: Some engines may be rate-limited. Check logs for errors.
Why SearXNG?
βοΈ Configuration
Set the SearXNG URL (defaults to http://localhost:8080):
export SEARXNG_URL="http://localhost:8080"
π Tips & Best Practices
Container won't start:
docker compose logs searxng
JSON format not working:
Ensure formats: [html, json] is in your settings.yml
No results: Some engines may be rate-limited. Check logs for errors.