DuckDuckGo Scraper
Pricing
from $0.01 / 1,000 results
DuckDuckGo Scraper
DuckDuckGo search scraper that extracts comprehensive search results including organic results, ads, knowledge graph, news, inline images, videos, and related searches. Features localization, safe search, and date. Perfect for market research, SEO analysis, and competitive intelligence.
Pricing
from $0.01 / 1,000 results
Rating
5.0
(3)
Developer
John
Maintained by CommunityActor stats
8
Bookmarked
55
Total users
4
Monthly active users
2 days ago
Last modified
Categories
Share
DuckDuckGo Search Scraper
Scrape DuckDuckGo search results as structured JSON. Returns organic results, ads, knowledge graph, news, inline images, inline videos, and related searches in a single dataset item per page. Localize across 40+ regions, filter by date or safe-search level, and paginate with a configurable page cap.
Built for SEO researchers, AI agents, and developers who need a reliable DuckDuckGo SERP API without monthly rental fees.
What you get
Each dataset item is one page of search results. Per page, the Actor returns:
- Organic results - title, link, snippet, position, displayed link, favicon, date, rich snippet, sitelinks
- Ads - same fields where DuckDuckGo surfaces sponsored entries
- Knowledge graph - entity panel data when DuckDuckGo includes one
- News results - headline, source, date, link, thumbnail
- Inline images and inline videos - in-SERP media blocks
- Related searches - DuckDuckGo's suggested follow-up queries
- Pagination metadata - page number, total found, whether the page cap stopped the run
On the Output tab, the default Search Results view shows one row per organic result - rank, favicon, title, clickable URL, and snippet - so you can scan rankings at a glance. The Overview view keeps the raw one-item-per-page shape for programmatic use.
Use cases
- SEO research - track rankings for target keywords across regions
- AI agent grounding - feed live DuckDuckGo results into an LLM via the Apify MCP server
- Competitive monitoring - capture ads and knowledge graph entries for brand terms
- News monitoring - filter to the past day or week for fresh coverage
- Privacy-conscious search analytics - DuckDuckGo does not personalize results, so output is consistent across runs
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | yes | "The Siliconimist Podcast" | Search term to query on DuckDuckGo |
localization | string | no | "us-en" | Region/language code from 40+ supported regions (e.g. uk-en, fr-fr, de-de, jp-jp) |
safe | string | no | "moderate" | Safe-search level: strict, moderate, or off |
date_filter | string | no | (none) | d (24h), w (week), m (month), y (year), or a custom range YYYY-MM-DD..YYYY-MM-DD |
max_pages | integer | no | 2 | Maximum pages to fetch. 0 means no limit (paginate until DuckDuckGo runs out of results) |
output_file | string | no | (none) | Optional custom filename if you want a single JSON file in addition to the dataset |
Example input
Basic:
{"query": "The Siliconimist Podcast"}
Localized with date and safe-search filter, 3 pages:
{"query": "machine learning","localization": "uk-en","safe": "strict","date_filter": "w","max_pages": 3}
Example output
One dataset item per page. Abbreviated:
{"query": "machine learning","localization": "uk-en","safe_search": 1,"date_filter": "w","max_pages": 3,"page_number": 1,"total_results_found": 150,"pages_processed": 3,"search_metadata": {"localization": "uk-en","localization_name": "United Kingdom (English)","safe_search": 1,"safe_search_description": "Strict","date_filter": "w","max_pages": 3,"pagination_limit_reached": false},"pagination_info": {"total_pages": 3,"max_pages_set": 3,"pagination_stopped_by_limit": false,"results_per_page": {"first_page": 30,"subsequent_pages": 50}},"organic_results": [{"position": 1,"title": "Machine Learning Tutorial","link": "https://example.com/ml-tutorial","displayed_link": "example.com","snippet": "Learn machine learning fundamentals...","favicon": "https://favicon.url","date": "2026-04-15","rich_snippet": "Rich snippet content...","sitelinks": []}],"ads": [],"knowledge_graph": [],"news_results": [],"inline_images": [],"inline_videos": [],"related_searches": []}
Pricing
Pay-per-event. No monthly rental.
| Event | Cost | When charged |
|---|---|---|
setup | $0.01 | Once per run |
page_processed | $0.02 | Once per page returned |
Typical cost: a 3-page run is $0.07 ($0.01 setup + 3 x $0.02 pages). The first page typically returns 30 results; subsequent pages return up to 50 each.
Getting started
- Open the Actor's Apify Store page and click Try for free.
- Enter a
query(the only required field). Optionally setlocalization,safe,date_filter, andmax_pages. - Click Start - the run takes 5-15 seconds per page.
- Open the Dataset tab to view, filter, or export results as JSON, CSV, or Excel.
For copy-paste client code and setup guides, see the example repo with a Python quick-start and MCP walkthrough.
Programmatic use - via the Apify API:
curl -X POST "https://api.apify.com/v2/acts/johnvc~DuckDuckGo-Scraper-for-serp-rankings/runs?token=<APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"query":"python tutorial","localization":"us-en","max_pages":2}'
For AI agents - the Actor is discoverable through the Apify MCP server. Connect Cursor, Claude.ai, VS Code, Claude Code (free trial), or any MCP-compatible client to https://mcp.apify.com and call search-actors with "duckduckgo search results".
🔌 Integrations: Automate DuckDuckGo Rank Tracking
A single run gives you one snapshot of the SERP. The real value comes from running the same queries on a schedule and watching rankings move over time. The Apify platform turns this Actor into a monitoring pipeline. See all Apify platform integrations.
Scheduled rank tracking with Tasks
Save one task per query or market you want to watch (for example "my domain in us-en" and "my domain in uk-en"), then attach a single schedule that runs them all. From the Actor, open Actions, then Schedule. Useful cron values: 0 7 * * * for daily at 7 AM, 0 */6 * * * for every six hours, 0 9 * * 1 for Monday mornings. One schedule can trigger many tasks, so a whole keyword set updates in one place.
n8n
The Actor ships an n8n community node, n8n-nodes-duckduckgo-search-api. In n8n, open Settings, then Community Nodes, install n8n-nodes-duckduckgo-search-api, and build a four-step workflow: Schedule Trigger, then the DuckDuckGo node, then a Filter that checks whether your domain's position changed, then a Slack or email node for the alert. The node also works as an AI Agent tool.
Make and Zapier
The same pattern works with Make and Zapier: trigger on a schedule, run the Actor, and route the results to a sheet or a chat channel.
Store rankings in Supabase
Keep a history so you can chart positions over time. The no-code path is the n8n Actor node into a Supabase node. In code, run the Actor and bulk-insert the flat rows:
from apify_client import ApifyClientfrom supabase import create_clientapify = ApifyClient("<APIFY_TOKEN>")supabase = create_client("<SUPABASE_URL>", "<SUPABASE_KEY>")run = apify.actor("johnvc/DuckDuckGo-Scraper-for-serp-rankings").call(run_input={"query": "your brand", "localization": "us-en", "max_pages": 2})rows = []for page in apify.dataset(run["defaultDatasetId"]).iterate_items():for r in page.get("organic_results", []):rows.append({"query": page["query"],"localization": page["localization"],"position": r["position"],"title": r["title"],"link": r["link"],"page_number": page["page_number"],})supabase.table("ddg_rankings").insert(rows).execute()
Use it from an AI agent (MCP)
Add the Actor to any MCP client (Claude, Cursor, and others) through the hosted Apify MCP server. The Actor-specific URL is https://mcp.apify.com/?tools=actors,docs,johnvc/DuckDuckGo-Scraper-for-serp-rankings. An agent can then answer questions like "where does example.com rank on DuckDuckGo for privacy tools this week?" Connect it in Claude Code (free trial) or Claude Cowork (free trial).
Webhooks
For anything custom, add an Apify webhook on ACTOR.RUN.SUCCEEDED to push each finished run into your own service.
🔗 Related Tools
Track rankings and answers across more of the search landscape with these related APIs:
- Baidu Search Scraper - the same structured SERP data for Baidu, the leading search engine in China.
- Yandex Search Scraper - organic results, ads, and knowledge graph from Yandex, the leading search engine in Russia.
- Google AI Overview API - capture Google's AI-generated answer and its cited sources for any query.
- Google News API - structured news results for monitoring coverage and fresh content.
Comparing DuckDuckGo tools? Barebones options exist, such as this DuckDuckGo SERP Actor, which ships with no description and returns organic results only. This Actor is documented end to end, returns every SERP block (organic, ads, knowledge graph, news, images, videos, and related searches), and localizes across 40+ regions.
❓ FAQ
Can I schedule this DuckDuckGo Scraper?
Yes, and it is the main reason to use it. Rankings only mean something when you watch them over time. Save a task with your query and market, then attach a schedule from Actions, then Schedule. Use 0 7 * * * for a daily 7 AM check, 0 */6 * * * for every six hours, or 0 9 * * 1 for Monday mornings. One schedule can drive many tasks, so you can watch a whole keyword set at once. See the Integrations section above for the full monitoring recipe.
Should I use an API or a Web Scraper for DuckDuckGo?
DuckDuckGo has no official public search API, so a web scraper is how you get the data. This Actor gives you the best of both: it works as a no-code scraper in the Apify Console and as a clean API endpoint you call from code, with no quotas or key management on your side.
Can I integrate this DuckDuckGo Scraper with other apps?
Yes. The Actor connects to almost any cloud service through Apify integrations, including Make, Zapier, Slack, and more. For custom actions, use webhooks to fire on ACTOR.RUN.SUCCEEDED. The Integrations section above has ready-to-use recipes.
Can I use this DuckDuckGo Scraper with the Apify API?
Yes. The Apify API runs the Actor, schedules it, and returns datasets programmatically. Use the apify-client package for Python or Node.js, or call the REST endpoint directly (see the Getting started example above).
Can I use DuckDuckGo search through an MCP server?
Yes. Add the Actor as a tool in any MCP client (Claude, Cursor, and others) through the hosted Apify MCP server. The Actor-specific URL is https://mcp.apify.com/?tools=actors,docs,johnvc/DuckDuckGo-Scraper-for-serp-rankings. It works in Claude Code (free trial) and Claude Cowork (free trial). Learn more in the Apify MCP docs.
How can I track rankings on other search engines?
DuckDuckGo is one piece of the picture. To watch the same terms elsewhere, pair this Actor with the Baidu Search Scraper for China, the Yandex Search Scraper for Russia, and the Google AI Overview API to see how AI answers cite your domain. See Related Tools above for the full list.
Do I need my own API keys to use this Scraper?
No. You do not need any keys, accounts, or logins for DuckDuckGo. Provide a query, run the Actor, and billing is handled by the Apify platform.
How many results does each page return?
DuckDuckGo returns about 30 organic results on page 1 and up to 50 on subsequent pages. The exact count varies by query and region.
Why is max_pages: 0 slow?
Setting 0 means "no cap", so the Actor paginates until DuckDuckGo exhausts results, which can be 10+ pages for broad queries. Use max_pages: 5 if you only need the top results.
Can I filter to a specific date range?
Yes. Pass date_filter as YYYY-MM-DD..YYYY-MM-DD (e.g. 2026-01-01..2026-05-01). For relative ranges use d, w, m, or y.
What regions does localization support?
40+ region and language combinations. Common values: us-en, uk-en, ca-en, au-en, de-de, fr-fr, es-es, it-it, jp-jp, cn-zh, ru-ru. The full list is in the input dropdown. Results come from DuckDuckGo for the region you choose.
The Scraper returned 0 results, what happened?
DuckDuckGo returned nothing for that query, locale, and date combination. Try broadening the query, removing date_filter, or switching to localization: "us-en".
Where do I report a bug or request a feature?
Open an issue on the example GitHub repo or contact the maintainer through the Apify Store page.
Applications
Ready-to-run examples that show this API solving a specific problem. Open any one and run it on your account in a click.
Add DuckDuckGo web search to Claude via MCP
Live DuckDuckGo web search inside Claude chat via MCP. Run this task
Scrape DuckDuckGo search results to CSV
Every DuckDuckGo result with position, title, link, and snippet, export ready. Run this task
Check your domain rankings on DuckDuckGo
DuckDuckGo positions for any query so you can track rankings beyond Google. Run this task
Check your podcast's search rankings on DuckDuckGo
See where a podcast ranks in DuckDuckGo search to monitor podcast SEO and discoverability. Run this task
Resources
- Example repo: Python quick-start and MCP walkthrough - copy-paste client code and setup guides.
- DuckDuckGo - the search engine this Actor reads.
- Apify MCP integration docs
Last Updated: 2026.07.10