Answers · AI crawlers
An AI crawler is overloading my server. How do I slow it down without hurting my Google rankings?
Last updated
TL;DR: Find out exactly which bot is causing the load first, then slow only that bot, so Googlebot keeps crawling at its normal rate. Check the user agent against the operator's published IP list or reverse DNS, because scrapers borrow big-bot names. Then pick the lightest tool that bot actually honors. Anthropic says ClaudeBot supports the non-standard Crawl-delay line, and Bingbot honors it too. Google doesn't: its robots.txt docs say fields such as crawl-delay aren't supported. OpenAI's and Perplexity's crawler pages don't mention it, so for those bots use a path Disallow or a per-bot rate limit at your edge. For a short emergency with Googlebot itself, Google says to return 500, 503 or 429 with an optional Retry-After header for a couple of hours or 1 to 2 days, not longer, because URLs that keep returning errors for days can drop out of the index. One trap to avoid: a new User-agent: ClaudeBot group that holds only Crawl-delay replaces your User-agent: * rules for that bot. Copy your Disallow lines into it.
What should I check, step by step?
1. Measure before you act: group the last hour or day of access logs by user-agent token, source IP and path, and find the one or two clients behind the spike. Google says sharp crawl increases are often caused by the site itself (faceted navigation, calendars with endless date URLs), so look at which URLs are being hit too.
- Verify the claimed bot: compare the IP with the operator's published list (OpenAI publishes gptbot.json and searchbot.json, Perplexity perplexitybot.json, Anthropic a bots.json linked from its crawler article), or for Googlebot and Bingbot use reverse DNS plus a forward lookup. Unverified traffic using a bot's name is a scraper; block or rate-limit it without touching the real bot.
- Slow bots that honor Crawl-delay with a named group: User-agent: ClaudeBot then Crawl-delay: 1 (Anthropic's own example), or Crawl-delay for Bingbot. Bing's help page describes the value as a time window in which it crawls at most one URL: 5 means about 17,280 URLs a day, 10 about 8,640.
- Copy your rules into every named group you add. RFC 9309 says a crawler obeys the group that names it and only falls back to User-agent: * when none does, and Anthropic says rules that name ClaudeBot take priority over the general ones. A Crawl-delay-only ClaudeBot group leaves ClaudeBot with no Disallow lines at all.
- Don't add Crawl-delay for Googlebot. Google ignores it. If Googlebot is the cause and it's an emergency, return 503 or 429 (with Retry-After in seconds or as an HTTP date) to some crawl requests for hours, at most 1 to 2 days, and stop once the load drops. Google lowers the crawl rate for the whole hostname and raises it again on its own.
- Never use 401 or 403 to slow Google. Google says 4xx codes other than 429 have no effect on crawl rate, and a robots.txt that returns 4xx is treated as if there were no robots.txt at all.
- For bots that don't document Crawl-delay (GPTBot, OAI-SearchBot, PerplexityBot), cut the URL space with Disallow on heavy or low-value paths (search results, filters, endless calendars, raw data dumps), or put a per-bot rate limit at your CDN that returns 429 with Retry-After for that user agent and its verified IPs only.
- Keep robots.txt itself fast and returning 200. Google stops crawling for the first 12 hours if robots.txt returns 5xx and then uses its last good copy for up to 30 days, so an overloaded server that also fails on robots.txt pauses your Google crawling.
- Still overloaded? Contact the operator with log samples: Anthropic lists claudebot@anthropic.com, Google has a form for reporting an unusually high crawl rate (it can take several days and you can't request more crawling), and Bing Webmaster Tools offers Crawl Control by hour of day plus a 'Bing is crawling too much' support option.
Which crawlers honor Crawl-delay, and what slows Googlebot, Bingbot, ClaudeBot, GPTBot and PerplexityBot?
Googlebot: no Crawl-delay. Google lists the robots.txt fields it supports and says other fields such as crawl-delay aren't supported. Its levers are fixing crawl traps on your site, short-term 500/503/429 responses, and the special crawl-rate request form.
- Bingbot: honors Crawl-delay whether it's in a Bingbot group or the * group, an exception to its usual one-group rule. Crawl Control in Bing Webmaster Tools sets speed per hour of the day, but a Crawl-delay line in robots.txt takes precedence over it.
- ClaudeBot: Anthropic says it supports the non-standard Crawl-delay extension and aims to be thoughtful about how quickly it crawls the same domains. It also warns that blocking its IPs instead of using robots.txt may not work reliably, because the bot then can't read your robots.txt.
- GPTBot, OAI-SearchBot and PerplexityBot: as of November 9, 2026, OpenAI's and Perplexity's crawler pages don't mention Crawl-delay. Use robots.txt Disallow for the paths you don't want crawled and an edge rate limit for volume. Blocking OAI-SearchBot or PerplexityBot outright removes you from those AI search products, and that's a separate decision from managing load.
How long can I return 503 or 429 to Googlebot before it hurts my rankings?
Google's crawl-rate page says many 500, 503 or 429 responses make it slow down across the whole hostname, including URLs that still return content, and it speeds up again on its own when the errors stop.
- The same page warns against doing this for longer than 1 to 2 days: if Googlebot sees these codes on the same URL for multiple days, the URL may be dropped from Google's index. Lowering the crawl rate also means new pages are found more slowly and changes such as prices take longer to show in Search.
- Retry-After comes from RFC 9110 HTTP Semantics. It can be a number of seconds (Retry-After: 120) or an HTTP date, and Google says its crawlers read it on 503 and 429 responses.
How do I add Crawl-delay for one bot in robots.txt without dropping my other rules for it?
Say your * group has Disallow: /search/ and Disallow: /api/. If you add 'User-agent: ClaudeBot' with only 'Crawl-delay: 1', ClaudeBot now matches that group and nothing else, so /search/ and /api/ are open to it. Put both Disallow lines under the ClaudeBot group as well.
- Bing has the same rule: if a Bingbot group exists, Bingbot discards everything else in the file, except that it still reads Crawl-delay from the * group. Its help pages recommend repeating the generic directives in any bot-specific group.
How do I ask Rightshold about this (free, no key)?
Add the MCP server https://www.rightshold.com/mcp to Claude, Cursor, ChatGPT, Grok or VS Code, then ask: “After my robots.txt change, which group does each AI crawler match on /search/, and is it still disallowed there?”
{
"tool": "read_ai_policy",
"arguments": {
"domain": "example.com",
"path": "/search/"
}
}- Free, no key, cached 6 hours. For each AI crawler and user-fetch agent it applies the RFC 9309 group choice (a group that names the bot, else *), then says whether that path is allowed and which group matched, so a new bot-specific group that drops your * Disallow lines shows up as allowed.
- It reports access rules and Content-Signal lines; it doesn't report Crawl-delay values, read your logs or measure load.
Rightshold reads your published robots.txt and AI signals on request. It doesn't see your traffic, rate-limit crawlers or contact bot operators for you. Crawl behaviour is each operator's own; the support statements above are from their documentation as of November 9, 2026.
What are the sources?
- Google Search Central: Reduce the Google crawl rate (500/503/429 for a couple of hours or 1-2 days, Retry-After, hostname-wide, index risk)
- Google Search Central: How Google interprets the robots.txt specification (crawl-delay not supported; 4xx and 5xx handling; 12 hours / 30 days)
- RFC 9309: Robots Exclusion Protocol (obey the matching group, fall back to *)
- RFC 9110: HTTP Semantics (Retry-After)
- Anthropic: Does Anthropic crawl data from the web, and how can site owners block the crawler? (Crawl-delay support, ClaudeBot rule priority, claudebot@anthropic.com)
- Bing Webmaster Tools: How to report an issue with Bingbot (crawl-delay windows, 17,280 / 8,640 URLs a day)
- Bing Webmaster Tools: Crawl Control (robots.txt crawl-delay takes precedence)
- Bing Webmaster Blog: To crawl or not to crawl, that is BingBot's question (one group; Crawl-delay exception)
- OpenAI: Overview of OpenAI crawlers
- Perplexity: Perplexity crawlers
Related
- How to catch crawlers that ignore robots.txt with a disallowed trap URL
- How to set per-agent rate limits and quotas that do not throttle human browsers
- How to block spoofed ChatGPT-User and Perplexity-User requests at the edge without blocking the real ones
- How to block AI training crawlers in robots.txt without leaving AI search
Not legal advice. JSON · Markdown · All answers
Get a free API key in one call
No card and no email needed. 100 free credits; the license and policy checks stay free without a key.
curl -s -X POST https://www.rightshold.com/v1/accounts/signup -H "Content-Type: application/json" -d '{"accept_terms":true}'
export RIGHTSHOLD_API_KEY=rs_... # the api_key from the reply (shown once)
curl -s https://www.rightshold.com/v1/licenses/check -H "Authorization: Bearer $RIGHTSHOLD_API_KEY" \
-H "Content-Type: application/json" -d '{"license":"MIT","intended_use":{"commercial_use":true}}'
