Skip to content

DuckDuckGo Scraper

Try for free

Scrape DuckDuckGo search results for any query: title, URL, description, date, domain, site name and sitelinks, in dozens of regions, with time and safe search filters.

🦆 DuckDuckGo Scraper

Turn any DuckDuckGo search into a clean table of results: title, URL, description, publish date, domain, site name and sitelinks for every organic result. Run one query or hundreds at once, in dozens of regions, with DuckDuckGo's own time and safe search filters. No login, no API key, and 1,000 results cost about $0.45.

✨ Why use DuckDuckGo Scraper?

  • ⚡ Fast: a 10-query job with 100 results each finished in 17 seconds in our tests.
  • 📋 Many queries per run: paste a list of keywords or DuckDuckGo search URLs; duplicates are skipped for you.
  • 🌍 Every market: pick a region such as United States, Germany, Japan or Brazil, or search worldwide.
  • 🗓️ Same filters as duckduckgo.com: past day, week, month or year, a custom date range, and safe search.
  • 🧹 Clean output: plain-text descriptions (plus the original HTML), decoded titles, ranked positions and no duplicate URLs.
  • 💸 Cheap and predictable: you pay per saved result, and the default datacenter proxy keeps platform costs tiny.

🎯 Use cases

  • 🔍 SEO rank tracking: see where your pages rank on DuckDuckGo for your keywords, per region.
  • 🕵️ Competitor research: find out which domains own the first page for the searches that matter to you.
  • 📰 Monitoring: run a daily search with the "Past day" filter to catch new pages about a brand, product or topic.
  • 🤖 AI and RAG pipelines: feed fresh, privacy-friendly search results into LLM agents and research tools.
  • 📈 Lead and market research: collect lists of sites for a niche ("plumbers in Denver", "vegan bakeries") to qualify later.
  • 🎓 Academic studies: compare result sets across regions, dates or safe search settings.

🚀 How to use

  1. Enter one or more search queries, one per line. You can also paste DuckDuckGo search URLs.
  2. Set maximum results per query (20 by default, 0 for everything DuckDuckGo shows).
  3. Optionally pick a region, a time frame or custom dates, and safe search.
  4. Click Start and watch the results appear.
  5. Download the data as JSON, CSV, Excel or HTML, or read it through the API.

📥 Input

FieldWhat it does
queriesSearch queries or DuckDuckGo search URLs, one per line. Operators such as site:, quotes and -word work.
maxResultsPerQueryResults to save per query. 0 saves every result DuckDuckGo shows.
regionDuckDuckGo region code, for example us-en, uk-en, de-de, jp-jp or wt-wt (worldwide).
timeFrameany, d (past day), w (past week), m (past month) or y (past year).
dateFrom / dateToA custom date range (YYYY-MM-DD). Overrides the time frame.
safeSearchmoderate, strict or off.
proxyConfigurationProxy settings. The datacenter group is the default and works well.
{
  "queries": ["web scraping", "electric cars"],
  "maxResultsPerQuery": 20,
  "region": "us-en",
  "timeFrame": "any",
  "safeSearch": "moderate"
}

📤 Output

One row per organic result.

FieldDescription
queryThe query this result belongs to
positionRank of the result for this query (1 = top)
titlePage title
urlResult URL
displayUrlThe URL as DuckDuckGo shows it
hostnameDomain of the result
siteNameSite name shown by DuckDuckGo, when there is one
descriptionSnippet as plain text
rawDescriptionSnippet with DuckDuckGo's HTML highlighting
time / datePublish date when DuckDuckGo shows one (full timestamp and YYYY-MM-DD)
iconFavicon URL
sitelinksExtra links shown under the result (title, URL, description)
pageResults page the row came from
regionRegion used for the search
searchUrlThe DuckDuckGo search URL for this query

Example row from a real run:

{
  "query": "web scraping",
  "position": 1,
  "title": "What is Web Scraping and How to Use It? - GeeksforGeeks",
  "url": "https://www.geeksforgeeks.org/blogs/what-is-web-scraping-and-how-to-use-it/",
  "displayUrl": "www.geeksforgeeks.org/blogs/what-is-web-scraping-and-how-to-use-it/",
  "hostname": "www.geeksforgeeks.org",
  "siteName": "GeeksForGeeks",
  "description": "Web scraping is an automated method to extract large amounts of data from websites. This data, usually in HTML format, is converted into structured formats like spreadsheets or databases for further use. ...",
  "rawDescription": "<b>Web</b> <b>scraping</b> is an automated method to extract large amounts of data from websites. ...",
  "time": "2025-11-12T00:00:00.0000000",
  "date": "2025-11-12",
  "icon": "https://external-content.duckduckgo.com/ip3/www.geeksforgeeks.org.ico",
  "sitelinks": [
    {
      "title": "Introduction to Web Scraping",
      "url": "https://www.geeksforgeeks.org/web-scraping/introduction-to-web-scraping/",
      "description": null
    }
  ],
  "page": 1,
  "region": "us-en",
  "searchUrl": "https://duckduckgo.com/?q=web%20scraping&kl=us-en&kp=-1&ia=web"
}

💰 Pricing

You pay $0.45 per 1,000 results ($0.00045 per saved result). Queries with no results and failed queries add no result fees.

Platform usage (compute and proxy traffic) is billed on top and is very small: our 10 queries × 100 results test (1,000 results) used about $0.002 of platform usage, so that job came to about $0.45 in total. Set a maximum charge per run and the scraper stops cleanly when it is reached.

❓ FAQ

Is it legal to scrape DuckDuckGo? The scraper only collects public search results that anyone can see without an account. Check the rules that apply to your use case and how you use the data, especially if the results contain personal data.

Do I need a login, API key or my own proxy? No. It works without an account, and the built-in datacenter proxy is enough.

How many results can I get per query? As many as DuckDuckGo shows. In our tests that was about 175 to 300 results for narrow queries and up to about 2,000 for broad shopping queries such as "espresso machine". The scraper collects everything up to your limit and the status message tells you when a query had fewer. For more results, add more queries; there is no limit on the number of queries. One test run collected 70,366 results from 60 queries in about 11 minutes.

Why is the date or site name empty for some results? DuckDuckGo shows a publish date only for some pages (news, blogs, forums) and a site name only for some domains. The fields stay empty when DuckDuckGo has nothing to show.

Can I schedule it or use it from code? Yes. Schedule runs in the console, or start them through the API and read the dataset as JSON, CSV or Excel.

Can I reuse input from a similar actor on another platform? Mostly. A single query text and a maxRecords limit are accepted as well. Time frame values are any, d, w, m and y, and safe search values are moderate, strict and off.

⚠️ Limits

  • Organic web results only: ads, images, videos, news tabs and instant answers are not collected.
  • The scraper cannot go deeper than DuckDuckGo itself: some queries end after about 175 results, broad ones at about 2,000. On very deep queries DuckDuckGo occasionally blocks further pages; the results collected until then are kept and the run says so.
  • Results and their order can differ slightly from what you see in your own browser, because DuckDuckGo personalises by region and time.
  • The custom date range is passed to DuckDuckGo as is; DuckDuckGo decides which pages match it.

Related actors

G2
4.7/5
Excellent
Trustpilot

The internet is full of data.
Start owning yours.

Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.

No credit card. No setup calls.