Research · Study
Cloudflare AI crawler settings across 1,000 small-business domains
Cloudflare introduced a one-click block for AI crawlers in July 2024 and made blocking the default for new domains in July 2025. This study measures, each quarter, what share of a sample of 1,000 small-business domains served through Cloudflare disallow or block each named AI crawler, whether through robots.txt or at the edge, and how that share changes over time. The method and the collection script are published here before any data is collected. No results are stated on this page until the first collection is complete and reviewed.
Status: Method published; data collection scheduled; the script and domain-selection rule are published below · Cadence: quarterly
Research question
What the study answers.
What proportion of small-business websites served through Cloudflare are unreachable to the search crawlers that answer engines rely on, how much of that is a deliberate robots.txt decision versus an edge default, and is the proportion rising or falling quarter to quarter?
Method
How the data is collected and analyzed.
- Sample: 1,000 domains of US small businesses in professional and technical categories, drawn from public business registers by a documented random procedure, with the selection rule and the exclusion list published with the results. Domains are never named individually.
- Cloudflare detection: a domain is classified as served through Cloudflare when response headers carry a Cloudflare server identifier or a cf-ray header on the robots.txt or home page fetch.
- robots.txt observation: the served robots.txt is fetched and parsed under RFC 9309 rules for each named crawler (GPTBot, OAI-SearchBot, ClaudeBot, PerplexityBot, Google-Extended, Googlebot as control) and classified as allowed, disallowed for all paths, or no applicable rule. A marker is recorded where the file appears to be a managed robots.txt.
- Edge observation: the home page is fetched once per crawler with that crawler’s documented user agent string and the status code and any challenge page are recorded. One request per crawler per domain, a delay between domains, no retries, from a disclosed egress address.
- Classification: each domain-crawler pair is recorded as reachable, robots-disallowed, edge-blocked (403, 429, 503 or challenge), or unreachable for other reasons (DNS, TLS, timeout), with a timestamp.
- Analysis: shares by crawler, by Cloudflare versus non-Cloudflare domains, and by quarter; the control crawler (Googlebot) separates AI-specific blocks from general bot protection.
Data tables
The tables the study will populate. No values are shown until collection is complete.
Table 1. Reachability by crawler (Cloudflare domains, n = [pending])
| Crawler | Reachable | robots-disallowed | Edge-blocked or challenged | Unreachable (other) |
|---|---|---|---|---|
| GPTBot | [pending] | [pending] | [pending] | [pending] |
| OAI-SearchBot | [pending] | [pending] | [pending] | [pending] |
| ClaudeBot | [pending] | [pending] | [pending] | [pending] |
| PerplexityBot | [pending] | [pending] | [pending] | [pending] |
| Google-Extended | [pending] | [pending] | [pending] | [pending] |
| Googlebot (control) | [pending] | [pending] | [pending] | [pending] |
Table 2. Cloudflare versus non-Cloudflare domains, share with at least one AI search crawler blocked
| Group | Domains | Any AI search crawler blocked | robots.txt only | Edge only | Both |
|---|---|---|---|---|---|
| Cloudflare | [pending] | [pending] | [pending] | [pending] | [pending] |
| Not Cloudflare | [pending] | [pending] | [pending] | [pending] | [pending] |
Table 3. Quarter-on-quarter change
| Quarter | Collection date | Cloudflare domains | Share blocking OAI-SearchBot | Share blocking ClaudeBot | Share blocking PerplexityBot |
|---|---|---|---|---|---|
| [first collection] | [pending] | [pending] | [pending] | [pending] | [pending] |
Findings
Published when collection is complete.
No findings are stated until the first quarterly collection is complete, reviewed against the method and signed. This page will then carry the findings with their collection date, and the tables above will be populated. Earlier collections remain visible as the series grows.
Limitations
What the study cannot show.
- The sample is small businesses in selected categories and does not represent all websites.
- A fetch from one egress address on one day is a snapshot; bot-protection behavior can vary by source network, by time and by request pattern, and a challenge page may reflect reputation of the egress address rather than a crawler-specific rule.
- User agent strings are the documented ones; a site may treat the real crawler differently because it also verifies the source IP range.
- robots.txt parsing follows RFC 9309; sites with non-standard files may be classified conservatively.
- Cloudflare detection by headers can miss domains behind other proxies in front of Cloudflare.
- The study measures reachability, not citation; a reachable site is not necessarily cited.
Data collection script
Open method.
The collection script is open: scripts/research/cloudflare_ai_crawler_settings.py in the site repository takes a domain list and writes one observation row per domain and crawler with a timestamp. It makes one request per crawler per domain with a delay, no retries and a short timeout, and records exactly what was observed. The domain selection rule and the egress address are published with each quarter’s results so that the collection can be repeated by anyone.
By David Selakovic · Published 2026-10-16 · Revised 2026-10-16 · Reviewed every 90 days