← Bot Directory/DuckDuckBot
Bot directory / search-engine

DuckDuckBot: Robots.txt & Crawl Policy Reference

Technical reference for DuckDuckBot, the official web crawler for the DuckDuckGo search engine. Learn how to verify its traffic and manage its access.

AI Summary: DuckDuckBot is the official web crawler for DuckDuckGo, a privacy-focused search engine. It crawls the web to build DuckDuckGo's search index and improve search results. It respects standard robots.txt directives. Because it is a major search engine, blocking DuckDuckBot will prevent your site from appearing in DuckDuckGo search results. Verify its traffic using reverse DNS lookups to ensure the IPs belong to *.duckduckgo.com.

Role and policy boundary

DuckDuckBot is the primary crawler for the DuckDuckGo search engine. It discovers and indexes web pages to provide search results to users. The crawler identifies itself using variations of the User-Agent string, most commonly containing DuckDuckBot (e.g., DuckDuckBot/1.0; (+http://duckduckgo.com/duckduckbot.html)).

As a major search engine crawler, its primary purpose is public indexing. Blocking DuckDuckBot means your content will not be discoverable by users searching on DuckDuckGo. Do not infer that its primary purpose is AI training, though like all major search engines, indexed data may inform their broader ecosystem (including DuckAssist).

If your logs confirm an exact DuckDuckBot token and you want to prevent your site from appearing in DuckDuckGo search results, publish:

configuration / code
User-agent: DuckDuckBot
Disallow: /

For selective access (e.g., hiding private sections from search):

configuration / code
User-agent: DuckDuckBot
Allow: /
Disallow: /private/
Disallow: /internal/
Disallow: /api/

Robots.txt is advisory and cannot protect private or licensed content. Use authentication, authorization, signed URLs, and origin controls for those boundaries.

Layered verification

Start with raw access logs and preserve the complete User-Agent, source IP, ASN, reverse DNS, method, path, status, response size, redirects, timestamp, and request rate. Because DuckDuckBot is a search engine crawler, it may be spoofed by malicious scrapers, so you must verify its authenticity.

DuckDuckGo provides a verification method via reverse DNS. Perform a reverse DNS (PTR) lookup on the accessing IP address. A genuine DuckDuckBot IP will resolve to a hostname ending in *.duckduckgo.com. You can then perform a forward DNS lookup on that hostname to ensure it matches the original IP.

Analyze behavior without assigning purpose prematurely. Requests for public pages, feeds, sitemaps, and metadata resemble authorized search indexing; deep traversal of private areas, high concurrency ignoring crawl delays, repeated retries, or private API access may indicate spoofing. These patterns demonstrate operational impact but cannot prove the operator or downstream use.

Evaluate /robots.txt independently. Confirm the canonical host, response status, content type, exact user-agent group, and path match. A page-level directive may express a discoverability preference:

configuration / code
<meta name="DuckDuckBot" content="noindex, nofollow">
configuration / code
X-Robots-Tag: noindex, nofollow

These signals do not establish an opt-out for an undocumented client and do not secure private routes. Use authenticated delivery, signed URLs, and application authorization.

WAF and Nginx remediation examples

Once logs confirm an exact unwanted token (e.g., a spoofed bot failing reverse DNS verification, or if you intentionally want to block DuckDuckGo globally), a narrow WAF rule can block the declared identity. Replace the example expression if your observed header differs:

configuration / code
{
  "description": "Block observed DuckDuckBot token",
  "expression": "lower(http.user_agent) contains \"duckduckbot\"",
  "action": "block"
}

For Nginx, scope enforcement to private and high-cost routes while investigating public access:

configuration / code
map $http_user_agent $block_duckduckbot {
    default 0;
    ~*DuckDuckBot 1;
}

server {
    location ~ ^/(private|internal|account|uploads|paywall|api)/ {
        if ($block_duckduckbot) { return 403; }
        try_files $uri $uri/ =404;
    }
}

A User-Agent rule is easy to spoof or evade and may block a legitimate client using the substring. Do not create an IP allowlist or broad network block without current operator evidence. Test browsers, social previews, feed readers, search crawlers, approved monitors, and customer integrations. Pair edge matching with authentication, rate limits, signed assets, and anomaly detection.

Review checklist

Search logs for every exact header that may be associated with DuckDuckBot and preserve representative requests. Record paths, response sizes, statuses, source networks, timing, and rate. Verify the traffic by performing a reverse DNS lookup to ensure the hostname ends in *.duckduckgo.com.

Decide whether your objective is to preserve search visibility on DuckDuckGo, prevent extraction, protect private content, or reduce crawl load. Publish a targeted robots group only for the exact observed token, enforce sensitive routes with WAF and application controls, and test docs, media, feeds, sitemaps, uploads, and APIs separately.

References

  1. DuckDuckBot Official Documentation — official documentation portal for DuckDuckBot.
  2. Google Robots.txt Introduction — general explanation of crawler directives and their limitations.
  3. RFC 9309 — Robots Exclusion Protocol standard; it does not authenticate a User-Agent.

Need to optimize your entire site for AI search visibility? Run a comprehensive audit with Geolify.ai.