SearXNG Web Search
Search the web using a self-hosted SearXNG instance. This skill provides access to web search results through the SearXNG JSON API, with built-in rate limiting, error handling, and result formatting.
When to Use
Use this skill when you need to:
- •Find current information or recent news
- •Research topics beyond your knowledge cutoff
- •Look up documentation or technical references
- •Verify facts or check current status
- •Find URLs or resources on specific topics
- •Search for code examples or solutions
Configuration
Set the SEARXNG_URL environment variable to your SearXNG instance:
export SEARXNG_URL="http://localhost:8888"
Or use the default (http://localhost:8888) if not set.
Usage
Execute the search script with your query:
bb scripts/search.clj "your search query"
Advanced Options
Pass additional parameters as JSON:
bb scripts/search.clj "your query" '{"category": "news", "time_range": "day", "num_results": 10}'
Available options:
- •
category- Filter by category: general, news, images, videos, it, science - •
time_range- Time filter: day, week, month, year - •
language- Language code (default: en) - •
num_results- Number of results to return (default: 5)
Output Format
The script returns formatted search results as text:
Search Results for "your query" Found 42 total results 1. Result Title [Score: 1.85] URL: https://example.com/page Description snippet from the page... Engines: google, bing 2. Another Result [Score: 1.62] ...
Error Handling
The script handles common errors gracefully:
- •Network timeouts (30s timeout)
- •SearXNG unavailable (clear error message)
- •Invalid queries (error details)
- •Rate limiting (429 responses)
- •Empty results (informative message)
Rate Limiting
The script implements basic rate limiting:
- •Minimum 1 second between requests
- •Uses filesystem-based state (
.searxng-last-request) - •Prevents accidental spam
Examples
Basic Search
bb scripts/search.clj "NixOS configuration"
News Search
bb scripts/search.clj "AI developments" '{"category": "news", "time_range": "week"}'
Technical Search
bb scripts/search.clj "babashka http client" '{"category": "it", "num_results": 3}'
Recent Results Only
bb scripts/search.clj "product launch" '{"time_range": "day"}'
Troubleshooting
"SEARXNG_URL not set"
- •Set the environment variable:
export SEARXNG_URL="http://localhost:8888"
Connection timeout
- •Check that SearXNG is running:
curl $SEARXNG_URL/search?q=test&format=json - •Verify firewall settings
- •Check service status:
systemctl status searx
Empty results
- •Try a broader query
- •Remove filters and try again
- •Check SearXNG logs:
journalctl -u searx -n 50
Rate limit errors
- •Wait a few seconds between searches
- •The script enforces minimum 1s delay automatically
Implementation Notes
The search script (scripts/search.clj) uses:
- •
babashka.http-clientfor HTTP requests - •Clojure's
cheshire.corefor JSON parsing - •Filesystem-based rate limiting
- •30-second timeout with proper error messages
- •Result scoring and sorting for best results first
For detailed API documentation, see references/api-guide.md.