DuckDuckGo Search Scraper - No Captcha, Multi-Query
Pricing
$2.00 / 1,000 result scrapeds
DuckDuckGo Search Scraper - No Captcha, Multi-Query
Scrape DuckDuckGo search results: title, URL, snippet, position and domain. Batch multiple queries per run, with region, time and safe-search filters. No captchas. $0.002 per result, no actor-start fee.
Pricing
$2.00 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Gio
Maintained by CommunityActor stats
0
Bookmarked
15
Total users
5
Monthly active users
12 days ago
Last modified
Categories
Share
Why use this scraper
Search results are a common input for SEO research, competitive monitoring, lead lists and LLM research agents, but search engines increasingly gate automated access behind captchas and strict rate limits. DuckDuckGo publishes a lightweight, no-JavaScript results page built for exactly this kind of plain HTTP access, with none of the captcha walls search automation usually runs into.
This actor takes one or more search queries and returns DuckDuckGo's own organic results for each: title, destination URL, snippet, position and domain, with optional region, time-range and safe-search filters. Batch dozens of queries in a single run instead of scripting one request at a time.
DuckDuckGo does not personalize results the way a logged-in Google search does, which makes its rankings a more consistent baseline for comparing how different terms, regions or time windows perform against each other, run after run.
Overview
Give the actor an array of search queries plus optional region, safe-search and time-range filters, and a cap on total results. It fetches DuckDuckGo's results page for each query, paginates automatically up to the cap, and returns one dataset record per result with its rank position preserved. A handful of queries typically complete in a few seconds each. Pricing is pay-per-result at $0.002 per result, with no separate actor-start fee, so a 100-result run costs $0.20.
Supported inputs
| Field | Type | Description |
|---|---|---|
queries | array, required | Search queries to run. Each query is fetched and paginated independently, up to the shared maxItems cap. |
region | string | DuckDuckGo region code, e.g. us-en, uk-en, br-pt, de-de, fr-fr, jp-jp. Default us-en. |
safeSearch | string | off, moderate or strict. Default moderate. |
timeFilter | string | Restrict to results published in the past day (d), week (w), month (m) or year (y). Omit for no restriction. |
maxItems | integer | Total result cap shared across all queries. Default 30. |
Use cases
- SEO and SERP tracking. Check where a site or page ranks for a set of target keywords, across different regions by changing
region. - Competitive and brand monitoring. Batch a list of competitor names or product names and review what currently surfaces for each.
- Lead and company research. Search a list of company names or niches and collect the resulting URLs and snippets as a starting point for further enrichment.
- LLM agent and RAG pipelines. Give an agent live web search results as grounding context for a question, instead of relying on stale training data.
- Content and news monitoring. Combine
timeFilterwith a topic query to pull only results published in the last day or week. - Backlink and citation discovery. Search for a brand or domain name to see which pages mention or link to it outside of a dedicated backlink tool.
How it works
The actor requests DuckDuckGo's lightweight HTML results page directly, the same no-JavaScript endpoint DuckDuckGo itself serves for simplified access, rather than driving a browser against the full interactive site. It decodes DuckDuckGo's redirect-wrapped links back into the real destination URL, and paginates through DuckDuckGo's own "next page" parameter until it hits the requested result cap or runs out of results for that query.
Input configuration
Search two queries at once:
{"queries": ["apify web scraping", "playwright tutorial"],"region": "us-en","maxItems": 60}
Search restricted to results from the past month:
{"queries": ["AI agent frameworks"],"timeFilter": "m","maxItems": 30}
Search a non-English region:
{"queries": ["imóveis em leilão"],"region": "br-pt","maxItems": 20}
Output sample
Real records from a search for "apify web scraping":
[{"query": "apify web scraping","title": "Web Scraper - Apify","url": "https://apify.com/apify/web-scraper","displayUrl": "apify.com/apify/web-scraper","domain": "apify.com","snippet": "What is Web Scraper? Web Scraper is a tool for extracting data from any website. It can navigate pages, render JavaScript, and extract structured data using a few simple commands...","scrapedAt": "2026-10-02T09:40:29.718Z","position": 1},{"query": "apify web scraping","title": "Getting started with Apify scrapers | Academy | Apify Documentation","url": "https://docs.apify.com/academy/apify-scrapers/getting-started","displayUrl": "docs.apify.com/academy/apify-scrapers/getting-started","domain": "docs.apify.com","snippet": "Step-by-step tutorial that will help you get started with all Apify Scrapers. Learn the foundations of scraping the web with Apify and creating your own Actors.","scrapedAt": "2026-10-02T09:40:29.721Z","position": 3}]
Key output fields
| Field | Type | Description |
|---|---|---|
query | string | The search query that produced this row, useful when batching several queries in one run. |
position | integer | 1-based rank position within that query's results. |
title | string | Result title as DuckDuckGo displays it. |
url | string | The real destination URL, decoded from DuckDuckGo's redirect wrapper. |
displayUrl | string | DuckDuckGo's own shortened display URL. |
domain | string | Hostname of the result. |
snippet | string | Text excerpt shown under the result. |
scrapedAt | string | ISO timestamp of the scrape. |
Pricing
Pay per event, per result returned. No actor-start fee.
| Event | Price |
|---|---|
| Result scraped | $0.002 |
100 results cost $0.20; 1,000 results cost $2.00.
What makes this richer than the competition
- runtime/duckduckgo-search-scraper (3 users in the last 30 days, the same as this actor) charges $0.006 per result on its free tier, 3x this actor's $0.002, for a broader feature set (news, image and video search); if organic web results are all you need, this actor covers that at a third of the price.
- scrapeunblocker/duckduckgo-search-scraper charges $0.0005 per result, cheaper than this actor; this actor's differentiator against it is batching multiple queries in a single run with per-query position tracking and region, time-range and safe-search filters built into the input, rather than one query per run.
- Multi-query batching means one run can cover an entire keyword list or competitor list, with each result tagged by the query that produced it, instead of orchestrating one run per query from your own code.
Notes & limitations
- Results come from DuckDuckGo's own ranking for the query, region and filters given; they are not deduplicated against or merged with any other search engine's results.
timeFilterrestricts by DuckDuckGo's own publish-date signal for that result, which is not available for every page DuckDuckGo indexes.- Very high
maxItemsvalues on a broad query take longer, since DuckDuckGo serves roughly 30 results per page and each additional page is a separate fetch. - This actor returns organic web results only; it does not include DuckDuckGo's instant-answer box, ads, or image/video/news result types.
- Running the same query again later can return a different result set and different positions, the same way a human searching DuckDuckGo at a different time would see a different page; treat a single run as a snapshot, not a permanent ranking.
FAQ
Can I run multiple search queries in one call?
Yes. Pass an array to queries; each one is searched and paginated independently, sharing the single maxItems cap across all of them.
Does this hit any captcha or block issues like other search scrapers? It uses DuckDuckGo's own lightweight, no-JavaScript results page, which does not present the captcha challenges common on heavier, JavaScript-driven search front ends.
Can I restrict results to a specific country or language?
Yes, set region to DuckDuckGo's region code (e.g. br-pt for Brazilian Portuguese, de-de for Germany).
Can I filter to only recent results?
Yes, set timeFilter to d, w, m or y for the past day, week, month or year.
Does it return images, videos or news results? No, only DuckDuckGo's organic web search results, not the separate image, video or news tabs.
What happens if a query returns fewer results than maxItems?
The actor returns everything DuckDuckGo has for that query instead of padding the output; you are only charged for what comes back.
Can I tell which result came from which query, after batching several together?
Yes, every record carries the query field it was found for, so a single run across many queries can still be grouped back out per query afterward.
For AI Agents & LLM Apps
This actor is available as an Apify MCP server tool, so an LLM agent can call it directly as a live web search tool:
https://mcp.apify.com/?actors=YOUR_USERNAME/duckduckgo-search-scraper
It also supports a direct synchronous API call that returns the dataset items in the response body, useful for grounding an agent's answer in live search results with a single tool call:
curl "https://api.apify.com/v2/acts/YOUR_USERNAME~duckduckgo-search-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"queries": ["apify web scraping"], "maxItems": 10}'
Disclaimer
This actor is an independent tool that extracts publicly available DuckDuckGo search results. It is not affiliated with, endorsed by or sponsored by DuckDuckGo.
SEO Keywords
duckduckgo search scraper, duckduckgo api, serp scraper no captcha, scrape search results, duckduckgo scraping api, web search for ai agents