DuckDuckGo Search MCP server
Registry name: io.github.johnisanerd/duckduckgo. Maintained by AlphaOSINT (Apify developer johnvc, GitHub johnisanerd).
What it does
Run DuckDuckGo searches with region, safe-search and date filters and get organic results, ads, knowledge graph, news, images, videos and related searches.
A low-cost general web search tool for agents that need search results without a Google dependency, plus DuckDuckGo rank tracking.
Paid service on Apify’s hosted endpoint
This server is not self-hosted. It runs on Apify’s hosted MCP endpoint (mcp.apify.com), which starts the Apify Actor johnvc/DuckDuckGo-Scraper-for-serp-rankings for each tool call. You need an Apify account, and every call is billed to that account at the Actor’s prices below. Apify’s own pricing and terms apply to the account.
| Charge | Price (USD) | What it covers |
|---|---|---|
| Setup | $0.00006 | One-time setup fee per Actor run |
| Search result | $0.0004 | One DuckDuckGo search result delivered (organic, ad, news, knowledge-graph, image or video item). Only delivered results are billed; cached results bill the same. |
Prices shown are Apify’s free-plan rates; paid Apify plans get lower per-event prices. Apify also bills a token amount per run start and per stored row ($0.00001). Prices change from time to time; the Actor’s page on Apify shows the current ones.
Data source and terms
DuckDuckGo public search results, collected by scraping. The server returns the data as published at the time of the call. You are responsible for using it in line with the source’s terms and the laws that apply to you. AlphaOSINT is not affiliated with the source.
Endpoint
- Transport: Streamable HTTP
- URL:
https://mcp.apify.com/?tools=johnvc/DuckDuckGo-Scraper-for-serp-rankings - Auth: Apify OAuth, or
Authorization: Bearer <APIFY_TOKEN>
Setup
Claude Code
claude mcp add --transport http duckduckgo "https://mcp.apify.com/?tools=johnvc/DuckDuckGo-Scraper-for-serp-rankings"
VS Code (.vscode/mcp.json)
{
"servers": {
"duckduckgo": {
"type": "http",
"url": "https://mcp.apify.com/?tools=johnvc/DuckDuckGo-Scraper-for-serp-rankings"
}
}
}
Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"duckduckgo": {
"url": "https://mcp.apify.com/?tools=johnvc/DuckDuckGo-Scraper-for-serp-rankings"
}
}
}
Claude Desktop (Settings → Connectors → Add custom connector, paste the URL). Older versions without remote connectors can bridge through mcp-remote in claude_desktop_config.json:
{
"mcpServers": {
"duckduckgo": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.apify.com/?tools=johnvc/DuckDuckGo-Scraper-for-serp-rankings"
]
}
}
}
Each client opens an Apify sign-in (OAuth) on first use. To use a token instead, send Authorization: Bearer <APIFY_TOKEN> as a header; create one under Apify Console → Settings → API & Integrations.
Tools
| Tool | What it does |
|---|---|
johnvc--DuckDuckGo-Scraper-for-serp-rankings |
Runs the Actor with the parameters below and returns the result rows. |
get-actor-run |
Status of a run started by the tool, for long runs. |
get-dataset-items |
Pages through a run’s full output by datasetId when it is larger than the inline result. |
get-key-value-store-record |
Reads a record a run stored, such as a run report. |
abort-actor-run |
Stops a run. |
Apify’s endpoint adds the four helper tools automatically whenever an Actor tool is loaded.
Parameters of johnvc--DuckDuckGo-Scraper-for-serp-rankings
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query |
string | yes | "The Siliconimist Podcast" |
Search DuckDuckGo for this term (up to 500 characters). Identical searches are served from a 7-day cache. |
localization |
string: us-en, uk-en, ca-en, au-en, de-de, fr-fr … | "us-en" |
Set the region and language for search results (e.g. us-en, uk-en, fr-fr, de-de, jp-jp). Defaults to us-en (United States English). |
|
safe |
string: strict, moderate, off | "moderate" |
Set the safe-search filter level. Use strict to block adult content, moderate for default filtering, or off for no filtering. |
|
date_filter |
string | Filter results by date. Use d for the past day, w for the past week, m for the past month, y for the past year, or a custom range like 2026-01-01..2026-05-01. |
||
max_pages |
integer | 1 |
Set the maximum number of result pages to fetch. The first page holds 10 results and each later page 15. Use 0 for as many pages as exist (up to 200 pages, about 3,000 results). You pay only for results actually deliv… |
|
output_file |
string | Save results to this filename in the run’s key-value store in addition to the dataset. Leave empty to skip the file output. |
Example arguments:
{
"helloWorld": 123
}
Output
The tool returns JSON rows with these fields.
| Field | Type | Description |
|---|---|---|
query |
string | Search Query |
localization |
string | Localization/Region |
safe_search |
integer | 1=Strict, -1=Moderate, -2=Off |
date_filter |
string | Date Filter |
max_pages |
integer | Maximum Pages |
search_timestamp |
string | Search Timestamp |
total_results_found |
integer | Total Results Found |
pages_processed |
integer | Pages Processed |
page_number |
integer | Current Page Number |
search_metadata |
object | Search Metadata |
search_metadata.localization |
string | Localization Used |
search_metadata.localization_name |
string | Localization Name |
search_metadata.safe_search |
integer | Safe Search Level |
search_metadata.safe_search_description |
string | Safe Search Description |
search_metadata.date_filter |
string | Date Filter Used |
search_metadata.max_pages |
integer | Maximum Pages Set |
pagination_info |
object | Pagination Information |
pagination_info.page_number |
integer | Page Number |
pagination_info.start_offset |
integer | Result Offset This Page Starts At |
pagination_info.organic_results_on_page |
integer | Organic Results on This Page |
organic_results |
array | Organic Search Results |
ads |
array | Advertisement Results |
knowledge_graph |
array | Knowledge Graph Results |
news_results |
array | News Results |
inline_images |
array | Inline Image Results |
inline_videos |
array | Inline Video Results |
related_searches |
array | Related Searches |
results_count |
integer | Results Delivered on This Page (billed per result) |
cached |
boolean | Served From the 7-Day Cache |
fetchedAt |
string | When the Page Was Fetched (UTC) |
cacheAgeDays |
number | Cache Age in Days |
Links
- Actor on Apify: johnvc/DuckDuckGo-Scraper-for-serp-rankings
- Data source page on AlphaOSINT: /sources/duckduckgo/
- All AlphaOSINT MCP servers: /mcp/