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
ProxyProvidertrait andspawn_auto_refresh. - Health Monitor — Automatic engine suspension after repeated failures with configurable recovery.
- HCL Configuration — Load engine weights, health settings, and timeouts from
.hclconfig 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, orBrowserFetcher. - 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 outputBuilt-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_foundResults 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.