Free multi-engine web search via ddgs CLI (DuckDuckGo, Google, Bing, Brave, Yandex, Yahoo, Wikipedia) + arXiv API search. No API keys required. Use when user needs web search, research paper discovery, or when other skills need a search backend. Drop-in replacement for web-search-plus.
523 stars
0 votes
0 copies
5 views
Added May 26, 2026
ai-agentspythongobashapibackend
Works with
cli
api
Security analysis
A96/100
mediumInstalls packages at runtime which could introduce malicious dependencies
Installs into .claude/skills of the current project.
Are you the author of Ddgs Search?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/internlm-ddgs-search)
---
name: ddgs-search
description: Free multi-engine web search via ddgs CLI (DuckDuckGo, Google, Bing, Brave, Yandex, Yahoo, Wikipedia) + arXiv API search. No API keys required. Use when user needs web search, research paper discovery, or when other skills need a search backend. Drop-in replacement for web-search-plus.
metadata: {"openclaw":{"requires":{"bins":["python3"]}}}
---
# ddgs-search
## Why This Skill?
π **Completely free** β no API keys, no subscriptions, no rate limits, no billing surprises.
π **8 search engines in one** β Google, Bing, DuckDuckGo, Brave, Yandex, Yahoo, Wikipedia, and Mojeek. Switch engines with a single flag. Most search skills only support one.
π **Built-in arXiv research search** β search academic papers directly via arXiv's free API. Returns authors, categories, abstracts, and publication dates. Perfect for researchers, students, and AI/ML practitioners.
π **Drop-in replacement** β outputs web-search-plus compatible JSON, so it works with any skill or tool that expects that format. Zero config migration.
β‘ **Lightweight** β single pip package, no browser automation, no headless Chrome. Searches complete in 1-3 seconds.
## Install
```bash
python3 scripts/install.py
```
Works on **macOS, Linux, and Windows**. Installs the `ddgs` package, verifies CLI access, and runs a quick search test.
### Manual install
```bash
pip install ddgs
```
## Web Search
### CLI wrapper (recommended)
The `ddgs-search` wrapper outputs clean JSON to stdout with no interactive prompts or abort issues:
```bash
# Google (default)
ddgs-search "your query" 5 google
# Other engines
ddgs-search "your query" 3 duckduckgo
ddgs-search "your query" 5 brave
ddgs-search "your query" 10 yandex
```
### Python script (web-search-plus compatible JSON)
```bash
# Google (default)
python3 scripts/search.py -q "your query" -m 5
# Other engines
python3 scripts/search.py -q "your query" -b duckduckgo
python3 scripts/search.py -q "your query" -b brave
python3 scripts/search.py -q "your query" -b yandex
python3 scripts/search.py -q "your query" -b yahoo
python3 scripts/search.py -q "your query" -b wikipedia
```
Output (web-search-plus compatible JSON):
```json
{
"provider": "ddgs",
"results": [
{"title": "...", "url": "...", "snippet": "...", "published_date": "..."}
]
}
```
## arXiv Search
```bash
# Search by topic
python3 scripts/arxiv_search.py -q "3D gaussian splatting" -m 10
# Field-specific search (title, abstract, category)
python3 scripts/arxiv_search.py -q "ti:transformer AND cat:cs.CV" -m 5
# Sort by relevance instead of date
python3 scripts/arxiv_search.py -q "reinforcement learning" --sort-by relevance
```
Returns authors, categories, abstracts β same JSON format.
## Direct CLI
> β οΈ The raw `ddgs text` CLI has a pagination bug (`input()` call β `Aborted!` + exit code 1 in non-TTY contexts). Use `ddgs-search` wrapper or `-o file.json` instead.
```bash
ddgs text -q "query" -m 5 -b google -o /tmp/results.json
```
## Integration
Set `WEB_SEARCH_PLUS_PATH` to use as a search backend for other skills:
```bash
export WEB_SEARCH_PLUS_PATH="path/to/ddgs-search/scripts/search.py"
```