A metasearch library that aggregates results from diverse web search services
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"ddgs": {
"args": [
"mcp"
],
"command": "ddgs"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
A metasearch library that aggregates results from diverse web search services.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in search
Web and local search using Brave Search API
Production ready MCP server with real-time search, extract, map & crawl.
The official MCP server implementation for the Perplexity API Platform
mini cli search engine for your docs, knowledge bases, meeting notes, whatever. Tracking current sota approaches while being all local
MCP Security Weekly
Get CVE alerts and security updates for Ddgs and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A metasearch library that aggregates results from diverse web search services.
pip install -U ddgs # Base install
pip install -U ddgs[api] # API server (FastAPI)
pip install -U ddgs[mcp] # MCP server (stdio)
ddgs --help
-- Install
pip install -U ddgs[api]
-- CLI
ddgs api # Start server in foreground
ddgs api -d # Start in detached mode (background)
ddgs api -s # Stop detached server
ddgs api --host 127.0.0.1 --port 4479 # Default port 4479
ddgs api -pr socks5h://127.0.0.1:9150 # With proxy
-- Docker compose
git clone https://github.com/deedy5/ddgs && cd ddgs
docker-compose up --build
-- Bash script
git clone https://github.com/deedy5/ddgs && cd ddgs
chmod +x start_api.sh
./start_api.sh
| Endpoint | Method | Description |
|---|---|---|
/search/text | GET, POST | Text search |
/search/images | GET, POST | Image search |
/search/news | GET, POST | News search |
/search/videos | GET, POST | Video search |
/search/books | GET, POST | Book search |
/extract | GET, POST | Extract content from URL |
/health | GET | Health check |
/docs | GET | Swagger UI |
/redoc | GET | ReDoc documentation |
pip install -U ddgs[mcp]
ddgs mcp # Start MCP server (stdio transport)
ddgs mcp -pr socks5h://127.0.0.1:9150 # With proxy
| Tool | Description |
|---|---|
search_text | Web text search |
search_images | Image search |
search_news | News search |
search_videos | Video search |
search_books | Book search |
extract_content | Extract content from a URL |
For MCP clients like Cursor or Claude Desktop:
{
"mcpServers": {
"ddgs": {
"command": "ddgs",
"args": ["mcp"]
}
}
}
| DDGS function | Available backends |
|---|---|
| text() | bing, brave, duckduckgo, google, grokipedia, mojeek, startpage, yandex, yahoo, wikipedia |
| images() | bing, duckduckgo |
| videos() | duckduckgo |
| news() | bing, duckduckgo, yahoo |
| books() | annasarchive |
DDGS class is lazy-loaded.
class DDGS:
"""Dux Distributed Global Search. A metasearch library that aggregates results from diverse web search services.
Args:
proxy (str, optional): proxy for the HTTP client, supports http/https/socks5 protocols.
example: "http://user:pass@example.com:3128". Defaults to None.
timeout (int, optional): Timeout value for the HTTP client. Defaults to 5.
verify: (bool | str): True to verify, False to skip, or a str path to a PEM file. Defaults to True.
"""
Here is an example of initializing the DDGS class.
from ddgs import DDGS
results = DDGS().text("python programming", max_results=5)
print(results)
def text(
query: str,
region: str = "us-en",
safesearch: st
... [View full README on GitHub](https://github.com/deedy5/ddgs#readme)