Bot observatory · updated hourly

5,654,873 requests were refused in the last 24 hours

Everything automated that reaches our sites, what we let through, and what we turn away: by site, by network, and by name. Also the incidents, including the ones that were our fault, and what it all costs. Read the incidents · What the numbers mean

5,654,873
Refused in the last 24 hours
exact, from the firewall stream
50%
Of all requests
allowed traffic is a 10% sample, scaled
17,853
Networks seen this week
autonomous systems, by source address
16
Sites watched
every production host in the constellation

Every day since the drain went live

refused allowed (est.)
2026-09-192026-10-18

By site

Refused counts are exact. Request totals include allowed traffic scaled from a 10% sample, marked with a tilde.

SiteRequests, 7 daysRefusedShareRefused, 24 h
aboutus.com~39,319,85926,547,78968%5,647,080
time.io~4,495,56272,1621.6%7,354
dns.pizza~3,232,8433,4530.1%425
the.com~1,576,027370.0%8
par.is~132,48000.0%0
lodo.com~79,63000.0%0
how.is~76,31000.0%0
ayd.yoga~49,15000.0%0
northhavenhousing.org~9,40000.0%0
ashtanga.yoga~9,14000.0%0
bathm.at~2,85110.0%0
activeseries.yoga~2,77000.0%0
overheard.com~1,582422.7%6
word.io~1,51000.0%0
sailorsbakery.com~70000.0%0
untaken.zone~63000.0%0

By name

Crawlers that announce themselves, grouped by what they are for, with the policy our firewall states for each. The share refused shows whether the policy is holding. Per address-hour is requests per source address per hour: a fleet on rented addresses sits near 1.

AI crawlers
~2,399,504 · 22 families
Search engines
~1,752,406 · 19 families
SEO crawlers
~238,288 · 12 families
Scripts & headless browsers
~984,922 · 21 families
Internet scanners
~317 · 9 families
Link previews
~112,139 · 16 families
Archives & research
~5,447 · 6 families
Monitors
~136,107 · 5 families
Other self-declared bots
~768,704 · 745 families
No user-agent
~4,668 · 1 family
Browser user-agents
~42,569,156 · 1 family
BotKindOur policyRequests, 7 daysRefusedNetworksPer address-hour
Bingbot
aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +6
Search enginesNo rule~1,237,7100.0%121.4
ClaudeBot
aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +8
AI crawlersNo rule~1,118,7870.0%6102.2
Node.js (fetch/undici)
aboutus.com · ayd.yoga · dns.pizza · how.is +4
Scripts & headless browsersNo rule~924,4920.0%2625.1
Meta-WebIndexer
ayd.yoga · dns.pizza · par.is · sailorsbakery.com +3
AI crawlersNo rule~862,7300.0%15.5
Applebot
aboutus.com · ashtanga.yoga · ayd.yoga · bathm.at +7
Search enginesNo rule~324,7300.0%11.1
shapbot
aboutus.com · dns.pizza · par.is · the.com +1
Other self-declared botsNo rule~236,3750.0%143.3
Amazonbot
aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +4
AI crawlersChallenged~192,1441.1%21.1
reflectionbot
aboutus.com · dns.pizza · how.is · lodo.com +4
Other self-declared botsNo rule~191,38318%01.7
Unrecognised user-agent
aboutus.com · ashtanga.yoga · ayd.yoga · bathm.at +11
Other self-declared botsNo rule~140,8982.8%4232.3
Vercel internal
how.is · the.com
MonitorsNo rule~131,2200.0%22.5
AhrefsBot
aboutus.com · ashtanga.yoga · ayd.yoga · how.is +7
SEO crawlersDenied~106,1232.0%41.2
facebookexternalhit
aboutus.com · ashtanga.yoga · ayd.yoga · bathm.at +10
Link previewsNo rule~87,2700.0%11
Googlebot
aboutus.com · ashtanga.yoga · ayd.yoga · bathm.at +12
Search enginesNo rule~78,0220.2%24.5
aionbot
aboutus.com · dns.pizza · lodo.com · the.com +1
Other self-declared botsNo rule~60,5311.8%17.3
SemrushBot
aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +5
SEO crawlersDenied~52,67191%55.8
OAI-SearchBot
aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +8
AI crawlersNo rule~51,5980.1%42.4
HeadlessChrome
aboutus.com · activeseries.yoga · ayd.yoga · how.is +6
Scripts & headless browsersNo rule~45,09614%664.1
PerplexityBot
aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +4
AI crawlersNo rule~42,9420.1%53.8
PetalBot (Huawei)
aboutus.com · ashtanga.yoga · ayd.yoga · bathm.at +5
Search enginesChallenged~42,5980.7%11.6
ExaSearchBot
aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +5
AI crawlersNo rule~41,2200.0%91.2
Bytespider (ByteDance)
aboutus.com · ashtanga.yoga · ayd.yoga · the.com +1
AI crawlersChallenged~40,8680.6%101.3
Sogou
aboutus.com · ashtanga.yoga · ayd.yoga · the.com +1
Search enginesNo rule~33,69991%61.1
DataForSeoBot
aboutus.com · time.io
SEO crawlersDenied~29,9052.0%118.2
Meta-ExternalAgent
ashtanga.yoga · ayd.yoga · lodo.com · the.com +1
AI crawlersDenied~29,45089%12.2
DotBot (Moz)
aboutus.com · ashtanga.yoga · ayd.yoga · the.com +1
SEO crawlersDenied~27,2020.1%110.2
daum
aboutus.com
Other self-declared botsNo rule~20,074100%1542.5
WhatsApp
aboutus.com · how.is · par.is · the.com +1
Link previewsNo rule~18,5230.0%4121.2
Baiduspider
ashtanga.yoga · ayd.yoga · dns.pizza · par.is +2
Search enginesNo rule~18,3900.0%21.1
kakaobot
aboutus.com
Other self-declared botsNo rule~12,978100%11
dns.pizza
aboutus.com · ayd.yoga · dns.pizza · how.is +1
Other self-declared botsNo rule~12,8000.0%41.6
Barkrowler (Babbar)
aboutus.com · ayd.yoga · dns.pizza · lodo.com +4
SEO crawlersDenied~12,3040.1%11.5
facebookexternalhit impostor (wrong network)
aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +6
impostorNo rule~10,5200.4%2181.1
sentryuptimebot
dns.pizza
Other self-declared botsNo rule~9,8500.0%12.2
elevenlabscrawler
aboutus.com · the.com
Other self-declared botsNo rule~8,1810.3%65.7
serpstatbot
aboutus.com · how.is
SEO crawlersNo rule~8,028100%1308.4
DuckAssistBot
aboutus.com · ashtanga.yoga · par.is · time.io
AI crawlersNo rule~7,4940.9%35
SeznamBot
aboutus.com · ayd.yoga · dns.pizza · par.is +2
Search enginesNo rule~7,2230.0%12.7
Qwantify
aboutus.com · ashtanga.yoga · ayd.yoga · par.is +2
Search enginesNo rule~6,9600.0%11.2
Python (requests/httpx/aiohttp)
aboutus.com · activeseries.yoga · ashtanga.yoga · ayd.yoga +10
Scripts & headless browsersNo rule~6,56560%1167.9
linkupbot
aboutus.com · par.is · the.com · time.io
Other self-declared botsNo rule~6,5000.0%17.7

By network

Where the requests come from, by autonomous system. A residential ISP with real customers shows several requests per address per hour and is mostly allowed. A cloud or hosting network sending browser-shaped requests at one per address per hour is a fleet, and gets challenged.

NetworkRequests, 7 daysRefusedPer address-hourMostlySites
BYTEPLUS-AS-AP Byteplus Pte. Ltd.
AS150436
~18,535,088100%39.1browser user-agentaboutus.com, ayd.yoga, the.com +1
ASN-CXA-ALL-CCI-22773-RDC
AS22773
~7,609,1230.2%5.2browser user-agentaboutus.com, ayd.yoga, dns.pizza +5
ZEN-NET
AS4229
~6,314,053100%39.2browser user-agentaboutus.com, ashtanga.yoga, the.com
AS-WAVE-1
AS11404
~1,597,5670.4%3.3browser user-agentaboutus.com, dns.pizza, how.is +3
MICROSOFT-CORP-MSN-AS-BLOCK
AS8075
~1,354,8330.2%12.5Bingbotaboutus.com, ashtanga.yoga, ayd.yoga +11
AMAZON-AES
AS14618
~1,347,9870.5%3.6Node.js (fetch/undici)aboutus.com, activeseries.yoga, ashtanga.yoga +12
OSL-188
AS398781
~1,287,6992.3%2.7browser user-agentaboutus.com, dns.pizza, lodo.com +2
AMAZON-02
AS16509
~1,287,3360.3%12.4ClaudeBotaboutus.com, activeseries.yoga, ashtanga.yoga +13
FACEBOOK
AS32934
~981,1402.7%3.3Meta-WebIndexeraboutus.com, ashtanga.yoga, ayd.yoga +11
CDNEXT
AS212238
~345,8644.1%2.7browser user-agentaboutus.com, activeseries.yoga, ashtanga.yoga +10
APPLE-ENGINEERING
AS714
~325,4990.0%1.1Applebotaboutus.com, ashtanga.yoga, ayd.yoga +8
HETZNER-AS
AS24940
~301,7653.8%7.7browser user-agentaboutus.com, activeseries.yoga, ashtanga.yoga +15
GOOGLE-CLOUD-PLATFORM
AS396982
~286,3615.3%4.9shapbotaboutus.com, activeseries.yoga, ashtanga.yoga +12
RCN-AS
AS6079
~256,9560.9%3browser user-agentaboutus.com, ashtanga.yoga, ayd.yoga +7
TENCENT-NET-AP-CN Tencent Building, Kejizhongyi Avenue
AS132203
~256,78317%1.5browser user-agentaboutus.com, activeseries.yoga, ashtanga.yoga +16
COMCAST-7922
AS7922
~243,5055.8%2browser user-agentaboutus.com, ashtanga.yoga, ayd.yoga +7
ALIBABA-CN-NET Alibaba US Technology Co., Ltd.
AS45102 · fleet-shaped
~232,47798%1.5browser user-agentaboutus.com, ashtanga.yoga, ayd.yoga +7
M247
AS9009
~217,9316.1%2.4browser user-agentaboutus.com, activeseries.yoga, ashtanga.yoga +9
GTT-BACKBONE GTT
AS3257
~208,2123.5%2.8browser user-agentaboutus.com, ashtanga.yoga, bathm.at +5
VDSINA
AS216071
~207,012100%899.7browser user-agentaboutus.com, ashtanga.yoga, dns.pizza
DTAG Internet service provider operations
AS3320
~192,7901.1%2.8browser user-agentaboutus.com, ashtanga.yoga, dns.pizza +4
GOOGLE
AS15169
~164,2900.4%2.2Googlebotaboutus.com, ashtanga.yoga, ayd.yoga +14
HOSTROYALE
AS203020
~137,8558.8%2.8browser user-agentaboutus.com, ashtanga.yoga, ayd.yoga +4
UUNET
AS701
~133,1767.0%1.9browser user-agentaboutus.com, ayd.yoga, dns.pizza +5
WEB2OBJECTS
AS62874
~131,3693.4%2.5browser user-agentaboutus.com, ayd.yoga, dns.pizza +5
OVH
AS16276
~117,0695.6%1.4AhrefsBotaboutus.com, activeseries.yoga, ashtanga.yoga +13
BITE-US
AS210906
~105,9532.5%3.1browser user-agentaboutus.com, ashtanga.yoga, ayd.yoga +3
ATT-INTERNET4
AS7018
~101,3987.2%2browser user-agentaboutus.com, ashtanga.yoga, ayd.yoga +9
CHINA169-BACKBONE CHINA UNICOM China169 Backbone
AS4837
~96,56420%1.3Sogouaboutus.com, ashtanga.yoga, ayd.yoga +6
ORACLE-BMC-31898
AS31898
~95,6624.1%5.6aionbotaboutus.com, ashtanga.yoga, ayd.yoga +7

Incidents

What actually happened, dated, newest first. The ones marked as our mistake are here because a firewall that blocks people is a worse problem than any scraper.

  1. ·Abusive traffic·time.io

    Tencent cloud addresses rate-limited on time.io

    A burst from Tencent's cloud network (AS132203) hit time.io's pages at a rate no person browses at. The warden's proposal was applied through its normal pipeline: 60 requests per minute per address on that network, six-hour expiry.

    Verified afterwards with a real browser: time.io still answered 200 to a person. That check is the whole point of the pipeline.

  2. ·Policy·aboutus.com, dns.pizza, time.io, the.com, par.is

    Sixty-one percent of everything is denied, and it still bills

    Reading the August invoice: about 1.5 million requests a day across the constellation, 61% of them bots we refuse. A denied request still counts as an edge request, an observability event and, when it is rate-limited, a rate-limit charge.

    Web Analytics had grown 244% in a month. On aboutus.com, 98,000 "visitors" viewing 5.5 pages each were crawlers that execute JavaScript, so they show up as people in the analytics.

    Blocking is not free. The cheapest bot is the one that never gets a response, which is why the observatory tracks cost, not just counts.

  3. ·Our mistake·the.com, aboutus.com

    We blocked 3,864 real people in a day and nobody knew

    the.com had a 100-per-minute rate limit keyed on the TLS fingerprint (JA4). Every user of one browser build shares one fingerprint, so desktop Chrome worldwide was a single bucket. A second rule capped page requests at 30 per minute per address, and one page load is about eight requests.

    Measured from the log drain: 3,864 people received a 429 in 24 hours, from 229 networks over the week. The same night aboutus.com was returning 403 to Chrome 151 users on a consumer-VPN provider's exits, including someone on the pricing page.

    Both rules were loosened the moment it was seen. An hourly check now pages if a deny or rate-limit ever lands on a fingerprint that real browsers use.

    Never key a rate limit on a TLS fingerprint below thousands per minute. Never go under 120 per minute per address on paths a browser loads. Firewalls that stop people cost more than any scraper.

  4. ·Blind spot·time.io

    The alarm that fired 37 times for the rule working

    A new check paged 37 times in two hours, at high priority, because Meta's AI crawler (meta-externalagent) was being denied on time.io. That deny was the rule doing precisely its job.

    The fix was to publish intent: the warden now reads the live firewall rules and tells the watcher which crawlers are blocked on purpose. A deny that a live rule explains is not a page. Identity is now the network and the user-agent together, because one cloud (AS8075) is Microsoft's Bingbot and also every Azure tenant running GPTBot.

    An alarm that fires on intended behaviour is how the alarm for unintended behaviour gets ignored.

  5. ·Blind spot·aboutus.com, dns.pizza, time.io

    Moving off the metrics API to a log drain

    Vercel caps observability metrics queries at roughly 500 a day per team. The traffic watch hit it on 2026-08-15 and went blind. Support confirmed the cap is fixed on the Pro plan.

    Since 2026-08-19 every request to every site is delivered as a log drain to a small box that rolls it up hourly. The firewall stream is delivered in full; the rest is sampled at 10%. That box is what this page reads.

  6. ·Abusive traffic·aboutus.com

    The fleets that pretend to be desktop Chrome

    The largest thing in the logs is not a named crawler. It is millions of requests a week wearing a stock desktop-Chrome user-agent, arriving from cloud and hosting networks (ByteDance's BytePlus and ZEN-NET each send about three million a week), with roughly one request per address per hour.

    A person makes several requests from one address in an hour. A rented fleet makes one from each of thousands. The per-address rate is the tell, and it separates a fleet from a residential ISP whose customers are real.

    These get a challenge rather than a deny: a real browser solves it, and the fleet does not.

  7. ·Abusive traffic·aboutus.com, dns.pizza

    A crawler load turned into 66,000 partner-API errors

    aboutus.com renders six dns.pizza partner-API panels on every profile page. Under crawler load that fan-out became a sustained 3 to 5% error rate on the partner API, and 66,000 502s before anyone saw it. The API's own response-code distribution was not being watched.

    Fixed on both sides: a circuit breaker in aboutus.com so a wobble cannot become a stampede, and hourly response-code buckets on the partner API with a watchdog.

  8. ·Abusive traffic·aboutus.com, dns.pizza

    Crawler page views exhausted a 250,000-a-day quota by breakfast

    With 1.7 million profile pages and six panel calls per view, crawlers walking aboutus.com used the entire daily partner quota by 09:40 UTC, and the panels went dark for everyone else for the rest of the day.

    The quota was raised to a backstop that only abuse could reach. Quotas between our own properties are there to catch a runaway, not to ration a product.

What bots cost

A refused request is not free: it is billed as an edge request and an observability event before the firewall decides.

$171
of a $711 August 2026 bill attributable to refused traffic
49%
of requests refused over the last 30 days, the share used to split the traffic lines
$2.41
per million refused requests, at ~2,364,486 a day
Invoice lineBilledTo botsWhy
Observability events$220$108Every request, refused or not, is an event.
Vercel Agent (code review)$130–Not traffic. Turned off on 2026-08-31.
Fluid compute (CPU + memory)$123–A refused request never reaches a function. Allowed crawlers do, but that share is not attributed here.
Edge requests$71$35Billed before the firewall decides.
ISR writes$54–Page regeneration; driven partly by allowed crawlers, not attributed here.
Firewall rate-limit evaluations$28$28Only exists because of the fleets. Up 121% month on month.
Web Analytics$21–Up 244%: JavaScript-executing crawlers count as visitors. Not attributed here because they were allowed.

Lines are from the Vercel invoice for the cycle ending 2026-09-03. Traffic lines are split by the refused share measured here; the rate-limit line is attributed in full. Compute, ISR and analytics driven by allowed crawlers are not counted, so this is a floor.

How this is measured

Every request to every site in the constellation is delivered by Vercel as a log drain to one small server that holds no credentials. The firewall stream (deny, challenge, rate-limit) is delivered in full, so every refused count on this page is exact. Everything else is head-sampled at 10% and scaled back up, so allowed totals are estimates and are marked with a tilde.

Networks come from the source address via the iptoasn.com table. Bot names come from the user-agent, matched against a substring table we maintain. A browser-shaped user-agent is exactly that: a fleet on rented addresses sends one too, so the network and the requests per address per hour are what separate people from fleets. Our stated policy per bot is read from the live firewall rules, not from a list that could drift.

Not published: client IP addresses (personal data, and one address on a carrier-grade NAT is a crowd), TLS fingerprints, and firewall rule names. The last two tell an operator exactly what to change. They are available to partners through the partner API.

Feed generated 2026-10-18 20:25:01 UTC, through hour 20261018-19. Coverage since 2026-08-19; named-bot table since 20260826. Policy snapshot 2026-10-18T19:35:32Z.

The long version is its own page: what the numbers mean — what counts as one request and what never does, why the refused counts are exact while the allowed ones are a ten-times estimate, an hour of logs audited against Vercel's own request IDs, the error to attach to any figure here, and how the whole constellation measures up against a single second of the web.

The public feed behind this page is at n1.snowc.one/public/bots.json. Partners get the deeper tier (TLS fingerprints, rule names, hourly series) through /api/partner/v1/bots. See also Newborn domains, the daily zone census.