Anti-Bot Difficulty Index Methodology
This page documents exactly how the Anti-Bot Difficulty Index on the benchmark page is computed. It is dated and versioned so any number cited from it can be traced back to a specific methodology, not a moving target.
What the Index Measures
For each anti-bot vendor AlterLab encounters in production (Cloudflare, DataDome, Akamai, PerimeterX/HUMAN, Kasada, Shape/F5, Imperva, and others), we aggregate real scrape outcomes over a trailing window and publish a single normalized difficulty score from 0 (trivial) to 100 (hardest to bypass).
Difficulty Score Formula
difficulty_score = (1 - success_rate) * 100, clamped to [0, 100] and rounded to one decimal place. success_rate is the fraction of scrape attempts against that vendor which succeeded during the window. We publish only the normalized score, never the raw success rate, so the index reads as a neutral “how hard is this vendor right now” signal rather than a live scoreboard of exactly how well any one operator evades a specific vendor.
Trend (Week-over-Week Change)
Each vendor's current-period difficulty score is compared against the immediately preceding period of equal length. delta is the signed change in difficulty score; direction is up (harder to bypass than last period), down (easier), or flat (no change, or no qualifying prior-period data for that vendor).
Minimum Sample Floor
Vendors with fewer than the minimum sample threshold of scrape encounters in the window are excluded from the public index entirely, to avoid publishing a statistically unreliable score based on a handful of requests.
What Is Deliberately Excluded
The public index reports vendor-level aggregates only. It never includes: per-domain rows, proxy cost or bandwidth figures, raw (non-normalized) bypass success percentages, or any customer, job, or billing identifiers. Only vendor, difficulty_score, trend, sample_size, and a small set of non-identifying operational aggregates (average handling time, average escalations, most common tier) are published.
Update Frequency
The index is recomputed continuously from live production telemetry and served from a 15-minute cache, so the number you see is never more than 15 minutes stale.
Your first scrape.
Sixty seconds.
$1 free credit — up to 5,000 scrapes. No credit card.
Just a POST request.
No credit card required · $1 free credit, up to 5,000 scrapes · Balance never expires