Cloudflare Demo Shop

Bot Management & Rate Limiting

Distinguish real users from scrapers, credential stuffers, and inventory hoarders with machine-learning bot scores — then rate-limit, challenge, or block based on policy.

How do you tell a real customer from an automated attacker pretending to be one?

Modern bots are sophisticated. They run real browsers via headless Chromium, rotate residential IPs, solve CAPTCHAs with cheap human labor or ML, and mimic human mouse movement. Block too aggressively and you lose conversions. Block too leniently and bots steal inventory (sneakers, concert tickets), stuff credentials, scrape pricing, or DDoS your login endpoint. Meanwhile, your origin pays for every request — bot or not.

How it fits together

Bot management decision flow⤢ Click to enlarge
Every request gets a 1–99 bot score; policies decide what to do with each band.

How Cloudflare solves it

Bot Fight Mode vs. Super Bot Fight Mode vs. Bot Management

Four products, one detection engine — the difference is how deep the detection goes and how much control you get over the response.

All four products run on the same underlying bot-detection engine — what changes per plan is how deep the detection goes, how much control you get over the action taken, and how much visibility you have into what got caught.

Free

Bot Fight Mode

One-click hygiene against obvious bots. Challenge action only, no configuration.

Pro

Super Bot Fight Mode

Choose allow, block, or challenge for definitely-automated traffic, plus a Bot Report.

Business (or Enterprise without the add-on)

Super Bot Fight Mode

Adds detection of likely-automated bots and a dedicated Bot Analytics tool.

Enterprise add-on

Bot Management

Per-request 1–99 bot score, custom rules, fingerprinting, and origin forwarding.

Feature Bot Fight Mode Free Super Bot Fight Mode Pro Super Bot Fight Mode Business (or Enterprise without the add-on) Bot Management Enterprise add-on
Detects simple bots & headless browsers Cloud-hosting-provider traffic, scripted clients, unmasked headless Chromium.
Detects sophisticated, ML-evasive bots Bots that mimic human behavior closely enough to fool simple heuristics.
Choose the action (allow / block / challenge) Free issues a fixed challenge; paid tiers let you pick per bot category. Challenge only
Block or challenge definitely-automated traffic Score band representing obvious automation. Via custom rules
Block or challenge likely-automated traffic Score band for harder-to-detect automation — not available on Pro. Via custom rules
Verified-bot allow / block controls Explicit control over Googlebot, Bingbot, uptime monitors, etc.
Static resource protection Exempt images, CSS, and other static file types from bot checks.
JavaScript Detections Client-side signals injected to catch bots that don't run JS. Forced on
Optimize for WordPress Reduces false positives against common WordPress plugin traffic.
WAF custom-rule exceptions (Skip action) Runs on the Ruleset Engine, so you can carve out approved automated traffic.
Bot traffic analytics Depth of reporting on what's hitting your domain. Bot Report Bot Analytics tool Bot Analytics + BotBase
Granular 1–99 bot score in custom rules Write rules against the exact score, not just a fixed category.
JA3 / JA4 fingerprinting & bot tags Identify clients by TLS handshake signature or named bot tag.
Detection IDs (target individual bots) Write rules against a specific detection, not just a score band.
Restrict scope by path, IP, and more Apply bot logic surgically instead of domain-wide.
Forward bot score to origin Send the score to your app/SIEM via Transform Rules or Snippets.
AI bot controls (block, AI Labyrinth, robots.txt) Presets to manage AI crawlers, agents, and training scrapers.
Included Label Included, with a caveat Not available
Heads up: Bot Fight Mode (Free) has no explicit verified-bot controls, so it can occasionally challenge or block Googlebot and similar crawlers. Run it in log mode first, or confirm your verified-bots allowance before enabling it in production.

Common questions

Will this affect good bots like Googlebot or Bingbot?
No. Cloudflare maintains a curated list of verified bots, and they're tagged with cf.client.bot. Default rules let verified bots through; you write your blocks to apply only to cf.bot_management.score < 30 AND NOT cf.client.bot. Search engines, RSS aggregators, and monitoring services keep working.
How is bot management different from rate limiting?
Bot management classifies *what* the requester is. Rate limiting controls *how often* anyone can do something. They're complementary — you typically use bot management to challenge or block obvious bots, and rate limiting to catch credential-stuffing or scraping attempts that slip through with low-volume distributed requests.
What if my real users score low?
It happens — privacy-focused browsers, ad blockers, or unusual networks can produce lower scores. Best practice is to start in log mode, examine the score distribution for your real traffic, and tune thresholds. Most customers find <30 is a safe 'definitely bot' band.
Does this also stop the AI scrapers training on my content?
Yes. Cloudflare ships a one-click 'Block AI Scrapers' rule that uses bot scores, JA fingerprints, and a curated list of AI crawler identifiers (GPTBot, ClaudeBot, PerplexityBot, etc.) — and ML detection for the ones lying about who they are.

Try it live

Your current request's bot management score is shown below (injected by the site middleware). Hit the rate-limit endpoint repeatedly to trigger a 429.

Your current bot management score

Read from the _cfbm cookie set by Cloudflare on each request to this site. 1 = definitely bot, 99 = definitely human. The site middleware injects this so we can show it on the page.

Bot Score

Verified Bot

Verified bots (Googlebot, Bingbot, monitoring tools) are explicitly allowed by default.

Rate limiting test

Hit the rate-limit endpoint as fast as you can. A rate-limit rule configured on /api/rate-limit-test will return 429 once you cross the threshold.

Firing...
Sent
200 OK
429 / 503

Docs & blogs

← Back to all solutions