AI AgentsCrawlersRate Limiting

AI Crawler Rate Limiting Explained: How Sites Can Manage Machine Traffic

A busy AI crawler can look a lot like a small denial-of-service attack: thousands of requests, aimed at your slowest pages, arriving in bursts. Blocking every bot is one answer, but it also removes you from AI search results. Rate limiting is the middle path. This guide explains what it is, which tools actually work on which bots, and how to set limits that protect your servers without switching off your visibility.

A rack of servers in a data center
Machine traffic lands on your servers exactly like human traffic, and it does not take weekends off.
Rows of illuminated server racks in a data center
Limits work best when they are tiered by purpose, not applied to every bot the same way.
Published September 2026By the AI Help Guide editorial team11 min read
429
the HTTP status code that tells a client it is sending too many requests
Retry-After
the header that tells a well-behaved client how long to wait
Ignored
by Googlebot: the robots.txt Crawl-delay directive

What Is AI Crawler Rate Limiting?

Rate limiting caps how many requests a client may make in a given period and answers extra requests with an HTTP 429 status instead of the page. For AI crawlers, it means slowing heavy machine traffic so your servers stay fast for people, without blocking the bots that bring you visibility.

The difference from blocking matters. A block says "go away." A limit says "slow down." A well-behaved crawler that receives a 429 with a Retry-After header waits and tries again, so the content still gets collected, just at a pace your infrastructure can afford.


Why Machine Traffic Needs Managing

Search engines have crawled the web for decades, and most sites learned to live with them. AI systems add more visitors, and they do not all behave alike. Some collect pages to train models. Some build search indexes. Some fetch a single page because a person just asked a question. Each has different volume, timing and value to you.

The cost lands in a few places. Dynamic pages that hit a database, internal search results, filtered product listings and calendar views are expensive to generate and easy to crawl endlessly. If you pay per request or per gigabyte at a host or CDN, the bill follows. If your site slows down under load, human visitors and Googlebot both notice.

Blocking is tempting but blunt. Blocking a training crawler is a policy choice about your content. Blocking a search crawler can remove your pages from AI answers, and blocking a user-triggered fetcher can make an assistant fail when a customer asks about you. Rate limiting lets you separate those cases. For the wider question of who these visitors are, read how to separate human visitors from AI agent traffic.


Sort Bots by Purpose Before Setting Limits

The same company often runs several bots with different jobs. Operators publish this in their documentation, and it changes, so confirm the current names before writing rules.

PurposeExamples named in operator documentationTypical stance
Training data collectionGPTBot, ClaudeBot, CCBotYour call: allow, limit or disallow
AI search indexingOAI-SearchBot, Claude-SearchBot, PerplexityBotUsually allow with generous limits
Fetching on a user's requestChatGPT-User, Claude-User, Google-AgentAllow, with modest per-client limits
Classic searchGooglebot, bingbotAllow; do not rate limit by accident

OpenAI documents GPTBot, OAI-SearchBot and ChatGPT-User as separate agents controlled separately in robots.txt, and Anthropic documents ClaudeBot, Claude-User and Claude-SearchBot the same way. Google lists Google-Agent among its user-triggered fetchers and says such fetchers generally ignore robots.txt because a person requested the fetch. So a rule that works for one group may do nothing for another.


Four Layers of Control

Think in layers, from politest to firmest.

  1. robots.txt. A voluntary signal telling crawlers which paths to fetch. Good for scope, weak for speed.
  2. Crawl-delay. A robots.txt line asking a bot to wait between requests. Anthropic's documentation says ClaudeBot honors it and Bing has long supported it. Google does not.
  3. Response codes. Answering with 429 or 503 tells bots to back off. Googlebot treats these as a signal to reduce its crawl rate, and well-built AI crawlers do the same.
  4. Network-level rules. CDN or firewall rate limits and bot rules enforce the limit no matter what the client wants.

Start at the top and move down only as needed. Most sites get far with robots.txt scoping plus a CDN rule. A snippet that scopes some bots and slows another looks like this:

User-agent: GPTBot
Disallow: /

User-agent: OAI-SearchBot Allow: /

User-agent: ClaudeBot Crawl-delay: 10 Disallow: /internal-search/ ```

Robots.txt changes are not instant. OpenAI notes that updates can take some time to be reflected, so give it a day before judging the effect.


Setting Limits at the Server or CDN

For real enforcement you need a rule that runs on your side. Every CDN and web server has one. Here is an nginx example that limits only requests whose user agent claims to be a known AI bot, leaving everyone else alone:

map $http_user_agent $ai_bot {
    default "";
    ~*(GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|Claude-SearchBot|PerplexityBot|CCBot) $binary_remote_addr;
}
limit_req_zone $ai_bot zone=aibots:10m rate=30r/m;

server { location / { limit_req zone=aibots burst=10 nodelay; limit_req_status 429; } } ```

The empty default key means non-matching visitors are never counted. The rule allows 30 requests a minute per IP address claiming to be an AI bot, with a small burst. Tune the numbers to your capacity and traffic. Nginx returns 503 by default when a limit trips, which is why the example sets 429 explicitly.

When you send the 429, add a Retry-After header with a number of seconds. It costs nothing and gives compliant crawlers a clear instruction. A user agent match alone is easy to spoof, so pair it with IP or signature checks where the operator supports them. Cloudflare's AI Crawl Control and similar CDN products let you see, allow or block AI crawlers by category and adjust responses without editing server config, and Cloudflare has also described a pay-per-crawl option built on HTTP 402 responses. Product details evolve, so check current documentation before relying on any of it.


Fix What Makes Crawling Costly

Limits treat symptoms. It is worth also reducing what is expensive to crawl.


How to Roll Out Limits Safely

  1. Read your logs first. Identify which bots hit which paths and at what rate. Set limits above normal legitimate peaks.
  2. Start in log-only mode. Many CDNs let you record what a rule would block before enforcing it.
  3. Exempt verified search crawlers. Confirm Googlebot and bingbot through reverse DNS, and never rate limit them by user agent alone. Search Console's crawl stats report shows whether Googlebot is being slowed.
  4. Watch for false positives. Check that customers using assistant features are not being refused.
  5. Alert on 429 volume. A sudden jump means either a new bot or a rule that is too tight.

Test with curl by sending a request with a bot user agent repeatedly and confirming you get a 429 and a Retry-After header.


A Tiered Policy for a Mid-Sized Content Site

Picture a publisher with a few thousand articles, a slow internal search page and a hosting plan that charges for bandwidth. The details are hypothetical, but the reasoning applies widely.

Tier one: search and classic crawlers. Googlebot, bingbot and AI search bots such as OAI-SearchBot are allowed everywhere except the internal search path. No user-agent rate limit is applied to Googlebot and bingbot once verified by reverse DNS. The AI search bots get a generous limit that only trips during unusual bursts.

Tier two: training crawlers. The publisher decides it will allow some training crawlers to read public articles but not the archive of subscriber-only content. Robots.txt disallows the archive path for each named bot, and the CDN caps request rates at a modest level with a 429 and a Retry-After value.

Tier three: user-triggered fetchers. These are allowed, because they represent a person asking about an article. A per-IP limit prevents any single address from pulling thousands of pages, which no real user request would need.

Tier four: unverified claims. Anything that names a well-known bot but fails IP or signature checks gets a strict limit and, if it keeps going, a challenge or block.

The policy is a page of notes, three CDN rules and a robots.txt file. It also gives the publisher a sentence to say when someone asks why a bot was slowed: because of purpose, not because it is an AI.


What About Licensing and Pay-Per-Crawl?

Rate limiting manages load. It does not decide whether machine access should cost money. Some infrastructure providers have started offering ways to charge crawlers, for instance Cloudflare's pay-per-crawl approach, which uses the HTTP 402 Payment Required status to tell a client that a fee applies. Other publishers negotiate licensing deals directly. These options are new, uneven and mostly relevant to large content owners, so most small sites can ignore them for now.

What everyone can do is publish clear terms. Robots.txt handles crawling permissions, and newer proposals such as the Content Signals Policy that Cloudflare introduced in 2025 add lines describing how content may be used, for example for search, for AI input or for training. These are declarations of preference, not technical barriers, and support varies. We cover the options in how to create machine-readable policies for AI agents.


Common Mistakes to Avoid

Start small. A sensible first step is one CDN rule that limits unverified AI-bot claims to a modest rate, one robots.txt file that scopes training bots the way you want, and a monthly look at the logs. That covers most of the risk with little effort, and it keeps you visible where visibility helps.

Frequently Asked Questions

What is rate limiting for AI crawlers?

It is a rule that caps how many requests a single client can make in a set time window, usually enforced at a CDN, firewall or web server. When a client goes over the cap, the site answers with an HTTP 429 status and, ideally, a Retry-After header.

Does robots.txt control crawl speed?

Only partly. Some crawlers honor a Crawl-delay line, and Anthropic's documentation says its crawler does, but Google's crawler ignores it. Robots.txt is a voluntary request about what to fetch, so use server-side limits for anything you must enforce.

Will rate limiting hurt my AI search visibility?

Moderate limits on verified search bots rarely do, because they can retry later. Blocking or throttling them so hard that pages cannot be fetched can remove you from results. Give search-related bots generous limits and reserve strict limits for training crawlers and unverified clients.

Should I return 429 or 503?

Use 429 when a specific client is going over its allowance, because it is precise and signals that retrying later is fine. Use 503 for site-wide overload or maintenance. Both can slow Googlebot, which treats them as a signal to reduce crawl rate.

How do I know a request really came from an AI company?

Check the claimed bot against the operator's published IP ranges or reverse DNS records where they exist, or against signed requests where supported. A user agent string alone proves nothing, because any client can copy it.

Still Have a Question About AI Crawler Limits?

Our AI assistant knows every guide on this site. Type a question and it will answer, or take you straight to the right article.

More AI Guides, Written Clearly

Browse our full library of AI explainers and how-tos, updated as the tools change.

Sources: OpenAI — crawler documentation · Anthropic Help Center — crawler and robots.txt information · RFC 6585 — Additional HTTP Status Codes (429 Too Many Requests) · Cloudflare — AI Crawl Control documentation · Video — Cloudflare launches Kitesurf, a browser built for AI agents
OTHER PROJECTS

More from the creator

Explore two other projects from the same creator.