A3S Docs
A3S Search

A3S Search

Embeddable meta search engine — multi-engine aggregation, consensus ranking, proxy pool, and headless browser support

A3S Search

A3S Search is an embeddable meta search engine library inspired by SearXNG. It aggregates results from multiple search engines in parallel, deduplicates by normalized URL, and ranks them using a consensus-based scoring algorithm. Available as a Rust crate, Python package, and Node.js module.

Key Features

  • Multi-Engine Aggregation — 9 built-in engines queried in parallel with configurable per-engine timeouts.
  • Consensus Ranking — Results found by multiple engines rank higher. Per-engine weight multipliers.
  • Smart Deduplication — Merges duplicates by normalized URL, keeping the best title, snippet, and metadata.
  • Dynamic Proxy Pool — Round-robin and random rotation with pluggable ProxyProvider trait and spawn_auto_refresh.
  • Health Monitor — Automatic engine suspension after repeated failures with configurable recovery.
  • HCL Configuration — Load engine weights, health settings, and timeouts from .hcl config files.
  • Headless Browser — Chrome DevTools Protocol for JS-rendered engines (Google, Baidu, Bing China).
  • Auto-Install Chrome — Detects or downloads Chrome for Testing when no browser is found.
  • PageFetcher Abstraction — Pluggable fetching: HttpFetcher, PooledHttpFetcher, or BrowserFetcher.
  • CLI Tool — Command-line interface with multiple output formats and Homebrew distribution.
  • Native SDKs — TypeScript (NAPI-RS) and Python (PyO3) bindings with async support, dynamic proxy pool management, and headless browser engines.
  • Cross-Platform — macOS (arm64, x64), Linux (x64), and Windows (x64, x86) with auto Chrome download.

Architecture

Search
├── HealthMonitor         ← auto-suspend/recover engines by failure count
├── Engine Registry       ← 9 built-in engines (5 HTTP + 1 API + 3 headless)
│   ├── DuckDuckGo        ← HttpFetcher / PooledHttpFetcher
│   ├── Brave             ← HttpFetcher / PooledHttpFetcher
│   ├── Bing              ← HttpFetcher / PooledHttpFetcher
│   ├── Sogou / 360       ← HttpFetcher / PooledHttpFetcher
│   ├── Wikipedia         ← JSON API (no fetcher)
│   ├── Google            ← BrowserFetcher → BrowserPool
│   ├── Baidu             ← BrowserFetcher → BrowserPool
│   └── Bing China        ← BrowserFetcher → BrowserPool
├── ProxyPool             ← round-robin / random rotation, AtomicBool toggle
│   ├── PooledHttpFetcher ← per-request proxy from pool
│   └── ProxyProvider     ← trait for dynamic proxy sources + auto-refresh
├── Aggregator            ← deduplicate, merge, consensus score, sort
└── SearchResults         ← ranked output

Built-in Engines

HTTP Engines

Prop

Type

Headless Browser Engines (headless feature)

Prop

Type

Supported Languages

Prop

Type

Ranking Algorithm

score = Σ (weight / position) for each engine that found this result
weight = engine_weight × number_of_engines_found

Results found by multiple engines receive a significant score boost. Higher-weighted engines (Google at 1.5, Wikipedia at 1.2) contribute more to the final score.

Test Coverage

288 Rust tests (244 lib + 31 CLI + 13 integration) + 103 SDK tests (49 Node.js + 54 Python). Cross-platform: macOS, Linux, and Windows.

On this page