DuckDuckGo rarely gets the primary slot when teams resolve where to track rankings or pull SERP data, since Google and Bing often take the budget. That is an oversight value fixing. A privacy-minded audience, a results page assembled in a different way from Google’s, and a question stream that doubles as a window into Bing’s index all make DuckDuckGo a useful data source for search engine optimization and market research. The practical obstacle is that collecting that data at any real volume means putting a proxy for DuckDuckGo in front of your requests. This guide explains why proxies are needed, which sort matches the job, how to localize results by market, and the way to construct a set workflow that holds up past the primary few hundred queries.
Why DuckDuckGo data is value collecting
The scale is smaller than Google’s, nevertheless it will not be a rounding error. Independent trackers and analytics roundups put DuckDuckGo at roughly 100 million searches a day, about 3 billion a month, with a world share within the 0.6 to 0.9 percent range and a stronger 1.8 to 2.1 percent within the United States, where it ranks because the second most-used mobile search engine. DuckDuckGo stopped publishing exact traffic in 2022, so treat any precise figure as an estimate reasonably than an audited number.
Two things make that traffic interesting for data teams. First, the audience skews privacy-conscious and US-heavy: roughly half of all queries originate within the United States, followed by Germany, the UK, and India, and the 25 to 34 group is the most important segment. If your product or content targets those users, DuckDuckGo visibility matters greater than the worldwide percentage suggests. Second, because DuckDuckGo’s traditional web results come largely from Bing, monitoring the DuckDuckGo SERP gives you an affordable, secondary read on how Bing’s index ranks your pages, which is beneficial if you cannot or don’t want to scrape Bing directly.
Typical jobs that justify a DuckDuckGo data pipeline:
- Rank tracking for a privacy-first or US-heavy audience.
- SERP feature monitoring, including fast answers, the AI summary, and which sources get cited.
- Ad verification, confirming that sponsored placements show up accurately per market. DuckDuckGo’s average cost-per-click is reported near $0.41, far below Google’s, so it’s an actual channel for some advertisers.
- Market and competitor research, where a non-personalized results set is a bonus: DuckDuckGo doesn’t tailor results to a profile, so two clean requests for the identical query and region should return the identical rating.
How DuckDuckGo serves results
You cannot construct a stable scraper without understanding what you’re scraping. DuckDuckGo will not be a single index. It blends results from “over 400 sources,” with the majority of the usual ten blue links coming from Bing, supplemented by its own crawler (DuckDuckBot), instant-answer providers equivalent to Wikipedia, Wolfram Alpha and Apple Maps, and, since 2023, an AI answer layer that attracts on models from OpenAI and Anthropic. The Bing dependency will not be theoretical: during a Bing API outage in 2024, DuckDuckGo briefly stopped returning results altogether.
For collection purposes, an important detail is that DuckDuckGo exposes a couple of front door. The foremost duckduckgo.com interface is JavaScript-heavy and gates pagination behind a dynamic vqd token, which makes it the toughest to script. DuckDuckGo also maintains stripped-down HTML and “lite” versions, originally built for browsers without JavaScript, and people are far friendlier to a server-side parser.
| Endpoint | What it returns | JavaScript | Best for |
| duckduckgo.com/ | Full SERP: organic results, fast answers, ads, AI summary | Yes (vqd token + JS) | Capturing wealthy features and ad units |
| html.duckduckgo.com/html/ | Static HTML organic results | No | Standard server-side parsing |
| lite.duckduckgo.com/lite/ | Minimal, fastest-loading results | No | High-volume rank checks |
DuckDuckBot will not be the identical as scraping DuckDuckGo
This trips people up continually, so it’s value stating plainly. DuckDuckBot is DuckDuckGo’s own crawler visiting your site; you control it through robots.txt the identical way you’d Googlebot, and it’s widely reported as one in every of the more compliant, low-aggression crawlers on the net. Scraping DuckDuckGo is the other: you send automated requests to DuckDuckGo’s SERP to collect data. The two don’t have anything to do with one another operationally, and only the second needs a proxy. If your goal is solely to be certain DuckDuckGo indexes your pages, the lever that matters most is being indexed in Bing, nothing proxy-related.
Why you wish proxies for DuckDuckGo
DuckDuckGo’s results are anonymous by design, with no account, no profile, and no personalized rating. That removes one problem, because you never need to manage logged-in sessions, nevertheless it leaves the one that truly stops automated collection: rate limiting tied to your IP address.

DuckDuckGo actively pushes back on automated traffic to its HTML endpoints. In practice you will note 202, 403, and similar responses once a single address sends too many requests too quickly. There is not any officially published threshold, and the community consensus, reflected in the favored duckduckgo-search (now ddgs) Python library, is to rotate proxies, stay well under about 30 requests per minute per IP, and space requests with randomized delays. Independent scraping write-ups rate DuckDuckGo as only moderate difficulty, with rate limiting as the first defense and light-weight TLS-fingerprint checks layered on top.
The fix is easy in principle. You spread the workload across many IP addresses in order that no single one trips the per-IP limit, and also you rotate addresses as you go. This will not be about disguising who you’re. It is about staying contained in the request budget DuckDuckGo tolerates and never degrading the service for anyone else. A handful of queries from one machine is tremendous and not using a proxy; a rank-tracking job covering 1000’s of keyword-region pairs will not be.
Choosing the proper proxy type
Not every proxy behaves the identical against DuckDuckGo’s rate limiting. The decision often comes down to detection risk versus cost and speed, so understanding how to use a proxy with DuckDuckGo can allow you to select the proper option for your workload.
| Proxy type | Detection risk on DuckDuckGo | Relative cost | Speed | Best fit |
| Datacenter | Higher; flagged faster under sustained load | Lowest | Fastest | Low-volume, non-time-sensitive monitoring |
| Residential (rotating) | Low | Medium | Medium | Sustained, large-scale SERP collection |
| Mobile | Lowest | Highest | Medium | Hardest jobs, or when residential IPs get flagged |

A few protocol notes affect implementation greater than people expect. IPv4 is the protected default. IPv6 is cheaper but more likely to be treated as suspect by some endpoints, so test it on a small batch before committing a big job to it. On the transport layer, HTTP(S) proxies cover most scraping stacks, but some toolchains route cleanly only over SOCKS5, so it pays to confirm each can be found before you wire every little thing together. Providers that expose datacenter, residential and mobile IPv4 from a single account, proxys.io amongst them, make this easier in practice, because you’ll be able to start a job on inexpensive datacenter addresses for light monitoring and move the identical job to residential or mobile IPs the moment DuckDuckGo starts returning 202s under load.
Localizing results by market
DuckDuckGo allows you to pin the SERP to a market with the kl region parameter: us-en for the United States, uk-en for the United Kingdom, de-de for Germany, fr-fr for France, wt-wt for worldwide, and so forth. For rank tracking and ad verification, that is the parameter that allows you to see the page roughly as a searcher in that market would.
| Region code (kl) | Market |
| us-en | United States (English) |
| uk-en | United Kingdom |
| de-de | Germany |
| fr-fr | France |
| ru-ru | Russia |
| wt-wt | No region / worldwide |
The subtle part is consistency. The kl value sets the locale of the outcomes, however the IP address you connect from still carries a geographic signal, and a mismatch between the 2 can introduce noise into your sample, which is precisely what you don’t want when the purpose is an accurate, repeatable read on a particular market. The clean approach is to align your exit IP’s country with the region code you send, so the request is internally coherent. Coverage breadth is the sensible limit here: a pool that lists exit locations across the US, UK, Germany, France, Spain, Poland, the Netherlands, Canada, Brazil and India (the country list proxys.io publishes is a representative example) is frequently enough to pair an IP with each region code an search engine optimization team tracks. Where a rustic will not be offered, the more honest option is to drop that locale from the run reasonably than send a mismatched IP that quietly skews the info.
A practical collection workflow
Here is a workflow that holds up well for medium-scale DuckDuckGo collection. It assumes you’re using one in every of the no-JavaScript endpoints, which removes many of the fragility.
1. Pick the endpoint to match the info you wish. Use lite.duckduckgo.com for raw rankings at volume, html.duckduckgo.com if you desire a bit more structure, and the foremost site only when you specifically need ads, fast answers, or the AI summary.
2. Set the region with kl, and align the proxy’s exit country to it.
3. Rotate the proxy on every request, or not less than on every recent job, and cap concurrency so that you stay under the roughly 30-requests-per-minute-per-IP guideline.
4. Add randomized delays between requests reasonably than a set interval, since a relentless cadence is itself a detectable pattern.
5. Handle pagination rigorously. An initial request returns up to about 35 organic results; using an offset can return up to about 50, but higher offsets also raise the chances of duplicated or variable result counts, so de-duplicate on the way in which in. On the foremost site, pagination relies on the vqd token; if it expires, pagination simply fails, so re-fetch the primary page to pull a fresh token and retry.
6. Back off on errors. Treat 202 and 403 as a signal to pause, rotate to a brand new IP, and decelerate, not to retry harder.
A minimal illustration of the request layer, with a rotating proxy and a region code:
| import random, time, requests PROXIES = [ … ] # your rotating pool, e.g. http://user:pass@host:port def fetch(query, kl=”us-en”): proxy = random.alternative(PROXIES) r = requests.get( “https://html.duckduckgo.com/html/”, params={“q”: query, “kl”: kl}, proxies={“http”: proxy, “https”: proxy}, headers={“User-Agent”: “Mozilla/5.0 … Chrome/120 Safari/537.36”}, timeout=30, ) if r.status_code in (202, 403): time.sleep(random.uniform(5, 12)) # back off, then rotate next call return None return r.text # hand off to BeautifulSoup for parsing |
Parsing itself is undramatic. DuckDuckGo’s lite and HTML pages are static, so a typical request plus BeautifulSoup pass extracts titles, links, and snippets without browser automation. Reserve headless browsers for the cases where you genuinely need JavaScript-rendered features.
Limitations, trade-offs, and responsible use
A proxy solves the IP rate-limit problem. It doesn’t make scraping consequence-free, and an honest guide has to say so.
It sits in a legal and policy gray area. Collecting publicly available data is lawful in most jurisdictions, but DuckDuckGo’s terms prohibit automated, non-personal use of the positioning, and the corporate states plainly that it really works to block scrapers. Respect robots.txt, keep request rates modest, collect only public data, and get legal advice in case your use case is business or large-scale. Restraint here will not be just compliance theater. Overloading the endpoints degrades the service for real users, which is the behavior the speed limiting exists to prevent.
Custom scrapers are brittle. When DuckDuckGo changes its HTML structure, a hand-rolled parser breaks, and the vqd token mechanics on the foremost site change periodically. The upside of owning the scraper is that you would be able to patch it on your individual schedule. The upside of a library like ddgs is that another person maintains it, but then you definitely wait for their fix when it breaks. There is not any free lunch, only a alternative about who carries the upkeep burden.
There is not any official SERP API. DuckDuckGo offers an Instant Answer API, nevertheless it returns fast answers, not the total web results most teams want, and business use requires identifying your app, attributing results, and getting email approval first. (DuckDuckGo is, to its credit, known to actually answer those emails.) For full SERP data you’re either scraping the HTML endpoints yourself or paying a managed SERP-API vendor that does the scraping and proxy rotation for you. That build-versus-buy call hinges on volume, in-house engineering capability, and the way much you value control over reliability.
The Bing dependency is a standing risk. Because a lot of DuckDuckGo’s result set comes from Bing, upstream changes ripple downward. Microsoft’s 2025 moves around its search APIs are a reminder that the info source you’re monitoring will not be fully in DuckDuckGo’s hands, and due to this fact not fully in yours.
A few lessons that tend to repeat across projects: start slower than you think that you wish to and ramp up; rotate IPs and vary timing, because rate limiting keys on patterns and not only volume; align proxy geography with the kl region or accept noisier data; and de-duplicate aggressively when you page past the primary set of results.
FAQ
Do I would like a proxy to scrape DuckDuckGo?
For a number of one-off queries, no. For anything consistent or at scale, yes: rate limiting is tied to your IP, and rotating proxies keep you contained in the request budget DuckDuckGo tolerates.
How many requests per minute per IP is protected?
DuckDuckGo publishes no official limit. A common rule of thumb is under roughly 30 per minute per IP, with randomized delays, backing off immediately on 202 or 403 responses.
Which proxy type works best for DuckDuckGo?
Rotating residential proxies are the reliable default for sustained collection. Mobile IPs are essentially the most resilient however the priciest. Datacenter addresses suit low-volume monitoring.
Does DuckDuckGo have an official API for search results?
Not for full web results. The Instant Answer API covers fast answers only. Full SERP data comes from scraping the HTML or lite endpoints, or from a third-party SERP API.
Can I get country-specific DuckDuckGo results?
Yes. The kl parameter sets the market (for example us-en, uk-en, de-de). For accurate results, align the exit country of your proxy with the region code you send.
Read the total article here










