How many B2B SaaS sites block AI crawlers?

Measured 30 July 2026 · 80 domains attempted, 76 readable · raw data and scripts below

7 of 76 B2B SaaS domains (9.2%) disallow at least one named AI crawler in robots.txt. Only 1 of 76 (1.3%) disallows a crawler used for answering rather than training.

None of the blocks were accidental. Every one came from a rule naming a specific bot. Not a single domain caught an AI crawler through a catch-all User-agent: * rule, which is the failure mode usually assumed when this topic comes up.

Two limits on this result are serious enough to state before the detail rather than after it. First, this sample is large, well-resourced SaaS companies — the population most likely to have already thought about this. It says nothing about small business sites. Second, the edge-layer probe further down cannot verify itself as a real bot, so it measures something narrower than it appears to. Both are expanded in Limits.

Looking for what to actually do? The robots.txt guide gives copy-paste rules that block training crawlers while keeping you eligible for AI answers.

Summary

MeasureCountRate
Domains blocking ≥1 AI crawler (robots.txt)7 / 769.2%
Domains blocking ≥1 search/answer crawler1 / 761.3%
Blocks arising from a wildcard rule0 / 70%
Domains that would not serve robots.txt at all4 / 805.0%
Domains treating AI-bot-shaped requests differently at the edge4 / 745.4%
— of those, a hard 403 rather than rate limiting3 / 744.1%

Method

80 B2B SaaS domains were selected across seven product categories — project management, CRM and marketing automation, HR and payroll, design and collaboration, e-signature and documents, developer tooling, and billing. The list is published with the data. Selection was by category coverage, not by traffic rank, and it was fixed before any measurement was taken.

For each domain, robots.txt was fetched and parsed into user-agent groups. Applicability was resolved the way the standard specifies: longest matching user-agent group wins, a bot's own group takes precedence over *, and an Allow beats a Disallow of equal specificity. The question asked of each group was whether / is disallowed for that crawler.

Sixteen named crawlers were tested, split into two classes, because the distinction is what makes the result interesting:

Training crawlers (10)

GPTBot, ClaudeBot, anthropic-ai, CCBot, Google-Extended, Applebot-Extended, Bytespider, meta-externalagent, Amazonbot, Diffbot. Blocking these keeps your content out of model training. It is a legitimate editorial choice and costs you nothing in visibility.

Search and answer crawlers (6)

OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot, Perplexity-User. These fetch pages in order to cite them in answers. Blocking these removes you from AI answers entirely, which is usually not what anyone intends.

Results: robots.txt

Per-crawler block rates were low across the board, with a maximum of 3.9%.

CrawlerClassBlocked byRate
GPTBottraining33.9%
CCBottraining33.9%
Amazonbottraining33.9%
anthropic-aitraining22.6%
ClaudeBottraining11.3%
Google-Extendedtraining11.3%
Applebot-Extendedtraining11.3%
Bytespidertraining11.3%
meta-externalagenttraining11.3%
Diffbottraining11.3%
OAI-SearchBotsearch11.3%
ChatGPT-Usersearch11.3%
Claude-SearchBotsearch11.3%
PerplexityBotsearch11.3%
Claude-Usersearch00%
Perplexity-Usersearch00%

The seven domains, and what each blocks

Listed because a rate without the underlying cases is not checkable. Each of these is a public robots.txt you can read yourself.

DomainBots blockedWhich
canva.com8GPTBot, ClaudeBot, anthropic-ai, CCBot, Applebot-Extended, Bytespider, meta-externalagent, Diffbot
figma.com8GPTBot, anthropic-ai, CCBot, Google-Extended, OAI-SearchBot, ChatGPT-User, Claude-SearchBot, PerplexityBot
calendly.com1CCBot
notion.com1Amazonbot
activecampaign.com1Amazonbot
pandadoc.com1Amazonbot
loom.com1GPTBot

The two patterns worth noticing. Canva blocks training crawlers and leaves every search crawler free — content stays out of training sets while remaining quotable in AI answers. That is a coherent policy, and it is the one most sites appear to want.

Figma is the only domain in the sample that blocks search and answer crawlers, covering OpenAI, Anthropic and Perplexity's fetchers. Whether that is deliberate is not something a robots.txt file can tell you. It is the single case in 76 where the "you may be invisible to AI answers without knowing it" concern actually describes a real site.

Four domains would not serve robots.txt

gusto.com and justworks.com returned 403; brevo.com and drift.com returned 404. These are excluded from all robots.txt percentages above rather than counted as non-blocking. A 403 on robots.txt is its own kind of finding: a crawler that cannot read your rules does not get to follow them.

Results: the edge-layer probe

A robots.txt file is a request, not an enforcement mechanism. CDN bot-management rules can block a crawler at the edge without appearing in robots.txt at all — so a site owner reading their own robots.txt can be looking at rules that no longer describe what their server does.

To test that, a real page was requested from each domain four times, using user agents carrying the GPTBot, OAI-SearchBot, ClaudeBot and PerplexityBot tokens, and the status codes compared against an ordinary browser baseline. 74 of 80 domains returned a clean 200 baseline and are included.

DomainGPTBotOAI-SearchBotClaudeBotPerplexityBot
rippling.com403403403403
bamboohr.com403403403403
lemonsqueezy.com403403403403
dropbox.com200200429429

4 of 74 domains (5.4%) responded differently, and only 3 (4.1%) with a hard block. Dropbox returned 429 — rate limiting, not a block, and a different thing entirely.

The three 403 responses were uniform across all four bots, which reads as a deliberate policy rather than an accident. Edge-layer blocking was not more common than robots.txt blocking in this sample. It was less common — which is the opposite of what the "invisible blocking" framing predicts.

Limits

1. The sample is not the population most people care about

These are established SaaS companies with staff who own their robots.txt. That is the group most likely to have already made a deliberate choice, and the low rate here is consistent with competence rather than with the problem not existing. A sample of small business sites on hosted platforms could produce a completely different number in either direction, and nothing here should be read as describing them.

2. The edge probe is an unverified bot claim, and this matters

Cloudflare and comparable services verify crawlers by IP range and request signature, not by user-agent string alone. This probe sent bot-identifying user agents from an ordinary IP address, so it was an unverified bot claim throughout.

Real verified crawlers may be treated more permissively than this probe was, and unverified ones more harshly. So the correct reading of the edge result is "does this origin treat AI-bot-shaped requests differently" — not "would GPTBot be blocked." Those are different questions and only the first was measured.

3. One point in time

Every figure describes 30 July 2026. robots.txt files and CDN rules both change without announcement, and a single snapshot cannot distinguish a standing policy from a temporary one.

4. Blocking is a choice, not an error

Nothing here treats a block as a mistake. Keeping content out of training corpora is a reasonable position, and the data cannot tell you which of these blocks were intended. The only case where intent is genuinely in question is a site blocking search crawlers while permitting training crawlers, and that pattern did not occur even once.

Raw data and reproduction

Every percentage on this page is derived from those two files and can be recomputed from them. For example, the headline figure:

node -e "const a=require('./ai-crawler-robots-2026-07.json');
const ok=a.filter(d=>d.ok), bots=Object.keys(ok[0].bots);
const hit=ok.filter(d=>bots.some(b=>d.bots[b].blocked));
console.log(hit.length+'/'+ok.length, (100*hit.length/ok.length).toFixed(1)+'%');"
// 7/76 9.2%

The data is published under CC BY 4.0. If you quote a number from it, a link back to this page is all that is asked.