ClawSkills logoClawSkills

SearXNG Local

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

Introduction

# 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:

```bash 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): ```bash export SEARXNG_URL="http://localhost:8080" ```

## Usage Examples

### Basic Search ```bash curl "http://localhost:8080/search?q=your+query&format=json" | jq '.results[:5]' ```

### Search with Categories ```bash # 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 ```bash 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 ```bash # 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`:

```bash 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

```bash # 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:** ```bash 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

More Products