searxng-crystal

Crystal language reimplementation of SearXNG with round-robin scheduling and caching

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