SearXNG Self-Hosted Search

Search the web using a self-hosted SearXNG instance. Privacy-respecting metasearch that aggregates results from multiple engines.

MIT-0 · Free to use, modify, and redistribute. No attribution required.
2 · 2.1k · 0 current installs · 0 all-time installs
MIT-0
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the runtime instructions: the SKILL.md explains how to run a self-hosted SearXNG instance, query its JSON API, and add a shell helper. Nothing in the instructions asks for unrelated credentials or capabilities.
Instruction Scope
SKILL.md contains step-by-step Docker compose, configuration, curl/jq examples, and a shell function. These instructions stay within the stated purpose (installing and querying SearXNG). Two minor scope notes: (1) the compose file binds SearXNG to 0.0.0.0:8080 which exposes the service to the network — the doc does not explicitly advise securing it or using a reverse proxy; (2) the examples and shell function use command-line tools (docker, docker compose, curl, jq, sed) but the skill metadata declares no required binaries.
Install Mechanism
This is instruction-only (no install spec), so nothing is automatically written to disk by the registry. The instructions pull the official Docker image (searxng/searxng:latest) using docker compose — expected for self-hosting and a low-risk, standard mechanism.
Credentials
The skill declares no required secrets and only an optional environment variable (SEARXNG_URL) used to point at the instance. This is proportionate. Minor inconsistency: the metadata lists SEARXNG_URL as optional, but the SKILL.md suggests exporting it; overall this is harmless.
Persistence & Privilege
The skill is not forced-always, does not request persistent privileges, and is user-invocable only. It does not attempt to modify other skills or system-wide agent settings.
Assessment
This skill is an instruction-only guide for running and querying a self-hosted SearXNG instance and appears coherent. Before following it, ensure you: (1) have Docker and docker compose installed and are comfortable with pulling images from Docker Hub; (2) secure the instance if you don't want it exposed — binding to 0.0.0.0:8080 exposes the service network-wide, so consider binding to localhost or putting it behind a reverse proxy/firewall and use a strong server.secret_key; (3) install required CLI tools referenced (curl, jq, sed) since the skill examples and shell function assume them even though the registry metadata doesn't list required binaries; (4) review and customize settings.yml (do not leave secret_key as "change-me-to-random-string"); and (5) be aware that this skill is only documentation — it will not install or run anything for you automatically and does not request any credentials from the agent platform.

Like a lobster shell, security has layers — review code before you run it.

Current versionv1.0.0
Download zip
latestvk978gj77gq015qsbgz5a3qnpy9801j24

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

SKILL.md

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/searxng

# Create 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
EOF

# Create 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
EOF

# Start 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 title
  • url - Link to the result
  • content - Snippet/description
  • engines - Array of search engines that returned this result
  • score - Relevance score (higher = better)
  • category - Result category

Shell 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 -d

# Stop
docker compose down

# View logs
docker compose logs -f searxng

# Restart
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?

  • Privacy: No tracking, no ads, no data collection
  • Aggregation: Combines results from 70+ search engines
  • Self-hosted: Your data stays on your machine
  • API: JSON output for automation
  • Free: No API keys or rate limits

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…