A unified CLI for querying several web search engines in parallel and
returning a normalized result list. Built on httpx and beautifulsoup4
(both already in OpenSquilla default dependencies, so no extra install
beyond pip install opensquilla).
deep-research round with diverse engine coveragepython {baseDir}/scripts/search.py \
--query "openclaw skill registry" \
--engines duckduckgo,brave \
--limit 10 \
--json
Output:
{
"query": "...",
"results": [
{
"engine": "duckduckgo",
"title": "...",
"url": "https://...",
"snippet": "...",
"rank": 1
}
],
"errors": [
{"engine": "brave", "reason": "BRAVE_SEARCH_API_KEY/BRAVE_API_KEY not set; skipping"}
]
}
| Engine | Needs key | Key env var | Strength |
|---|---|---|---|
duckduckgo |
no | — | Privacy-friendly, no rate limit by default |
bing |
no | — | HTML scrape; respect rate limits |
baidu |
no | — | Chinese-language web |
sogou |
no | — | Chinese-language web |
360 |
no | — | Chinese-language web |
brave |
yes | BRAVE_SEARCH_API_KEY or legacy BRAVE_API_KEY |
High-quality results, generous free tier |
tavily |
yes | TAVILY_API_KEY |
Designed for AI agents, returns clean JSON |
serpapi |
yes | SERPAPI_API_KEY |
Aggregator across many engines |
The script never errors out when an API-key engine's key is missing — it
records a per-engine errors entry and continues with the rest. Pass
--strict to fail fast when any requested engine is unavailable.
The host should pick engines by language and availability:
duckduckgo, brave, bing (one or two for triangulation)baidu plus optionally sogou for cross-checkbrave (recency filter) or tavily
engines.md has the full per-engine guidance.