searxng-crystal
SearXNG-Crystal
A lightweight meta-search server written in Crystal. Queries multiple search engines in round-robin and returns a SearXNG-compatible JSON response. No JavaScript, no tracking, no API keys required.
Engines
| Engine | Method | Status |
|---|---|---|
| DuckDuckGo | HTTP + lexbor | ✅ Default |
| Startpage | HTTP + lexbor | ✅ Default |
| Brave | HTTP + lexbor | ✅ Default |
| Mojeek | HTTP + lexbor | ✅ Default |
| Yahoo | HTTP + lexbor | ✅ Default |
| Bing | HTTP + lexbor | Available (off by default — result quality varies by IP) |
Requirements
- Crystal >= 1.20.1
shards install
Running
shards build
./bin/searxng
Reads config.toml from the working directory.
API
GET /search?q=<query>&count=<n>
| Param | Default | Notes |
|---|---|---|
q |
— | Required. Search query. |
count |
5 | Number of results (1–10). |
format |
json | Only JSON is supported. |
Response (SearXNG-compatible):
{
"query": "crystal programming language",
"number_of_results": 5,
"results": [
{
"title": "The Crystal Programming Language",
"url": "https://crystal-lang.org/",
"content": "Crystal is a general-purpose...",
"engine": "duckduckgo"
}
]
}
Configuration
[server]
host = "0.0.0.0"
port = 8080
[cache]
enabled = true
ttl_seconds = 300 # How long results are cached
max_entries = 500 # Max cached queries; oldest evicted when full
[engines]
enabled = ["duckduckgo", "startpage", "brave", "mojeek", "yahoo"]
Logging
Set LOG_LEVEL=DEBUG to see cache hit/miss and per-engine activity.
LOG_LEVEL=DEBUG ./bin/searxng
License
AGPL-3.0 — portions ported from SearXNG.
Repository
searxng-crystal
Owner
Statistic
- 0
- 0
- 0
- 0
- 3
- 5 days ago
- May 3, 2026
License
Other
Links
Synced at
Sun, 14 Jun 2026 03:29:46 GMT
Languages