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
Every day since the drain went live
By site
Refused counts are exact. Request totals include allowed traffic scaled from a 10% sample, marked with a tilde.
| Site | Requests, 7 days | Refused | Share | Refused, 24 h |
|---|---|---|---|---|
| aboutus.com | ~39,319,859 | 26,547,789 | 68% | 5,647,080 |
| time.io | ~4,495,562 | 72,162 | 1.6% | 7,354 |
| dns.pizza | ~3,232,843 | 3,453 | 0.1% | 425 |
| the.com | ~1,576,027 | 37 | 0.0% | 8 |
| par.is | ~132,480 | 0 | 0.0% | 0 |
| lodo.com | ~79,630 | 0 | 0.0% | 0 |
| how.is | ~76,310 | 0 | 0.0% | 0 |
| ayd.yoga | ~49,150 | 0 | 0.0% | 0 |
| northhavenhousing.org | ~9,400 | 0 | 0.0% | 0 |
| ashtanga.yoga | ~9,140 | 0 | 0.0% | 0 |
| bathm.at | ~2,851 | 1 | 0.0% | 0 |
| activeseries.yoga | ~2,770 | 0 | 0.0% | 0 |
| overheard.com | ~1,582 | 42 | 2.7% | 6 |
| word.io | ~1,510 | 0 | 0.0% | 0 |
| sailorsbakery.com | ~700 | 0 | 0.0% | 0 |
| untaken.zone | ~630 | 0 | 0.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.
| Bot | Kind | Our policy | Requests, 7 days | Refused | Networks | Per address-hour |
|---|---|---|---|---|---|---|
Bingbot aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +6 | Search engines | No rule | ~1,237,710 | 0.0% | 1 | 21.4 |
ClaudeBot aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +8 | AI crawlers | No rule | ~1,118,787 | 0.0% | 6 | 102.2 |
Node.js (fetch/undici) aboutus.com · ayd.yoga · dns.pizza · how.is +4 | Scripts & headless browsers | No rule | ~924,492 | 0.0% | 26 | 25.1 |
Meta-WebIndexer ayd.yoga · dns.pizza · par.is · sailorsbakery.com +3 | AI crawlers | No rule | ~862,730 | 0.0% | 1 | 5.5 |
Applebot aboutus.com · ashtanga.yoga · ayd.yoga · bathm.at +7 | Search engines | No rule | ~324,730 | 0.0% | 1 | 1.1 |
shapbot aboutus.com · dns.pizza · par.is · the.com +1 | Other self-declared bots | No rule | ~236,375 | 0.0% | 1 | 43.3 |
Amazonbot aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +4 | AI crawlers | Challenged | ~192,144 | 1.1% | 2 | 1.1 |
reflectionbot aboutus.com · dns.pizza · how.is · lodo.com +4 | Other self-declared bots | No rule | ~191,383 | 18% | 0 | 1.7 |
Unrecognised user-agent aboutus.com · ashtanga.yoga · ayd.yoga · bathm.at +11 | Other self-declared bots | No rule | ~140,898 | 2.8% | 423 | 2.3 |
Vercel internal how.is · the.com | Monitors | No rule | ~131,220 | 0.0% | 2 | 2.5 |
AhrefsBot aboutus.com · ashtanga.yoga · ayd.yoga · how.is +7 | SEO crawlers | Denied | ~106,123 | 2.0% | 4 | 1.2 |
facebookexternalhit aboutus.com · ashtanga.yoga · ayd.yoga · bathm.at +10 | Link previews | No rule | ~87,270 | 0.0% | 1 | 1 |
Googlebot aboutus.com · ashtanga.yoga · ayd.yoga · bathm.at +12 | Search engines | No rule | ~78,022 | 0.2% | 2 | 4.5 |
aionbot aboutus.com · dns.pizza · lodo.com · the.com +1 | Other self-declared bots | No rule | ~60,531 | 1.8% | 1 | 7.3 |
SemrushBot aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +5 | SEO crawlers | Denied | ~52,671 | 91% | 5 | 5.8 |
OAI-SearchBot aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +8 | AI crawlers | No rule | ~51,598 | 0.1% | 4 | 2.4 |
HeadlessChrome aboutus.com · activeseries.yoga · ayd.yoga · how.is +6 | Scripts & headless browsers | No rule | ~45,096 | 14% | 66 | 4.1 |
PerplexityBot aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +4 | AI crawlers | No rule | ~42,942 | 0.1% | 5 | 3.8 |
PetalBot (Huawei) aboutus.com · ashtanga.yoga · ayd.yoga · bathm.at +5 | Search engines | Challenged | ~42,598 | 0.7% | 1 | 1.6 |
ExaSearchBot aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +5 | AI crawlers | No rule | ~41,220 | 0.0% | 9 | 1.2 |
Bytespider (ByteDance) aboutus.com · ashtanga.yoga · ayd.yoga · the.com +1 | AI crawlers | Challenged | ~40,868 | 0.6% | 10 | 1.3 |
Sogou aboutus.com · ashtanga.yoga · ayd.yoga · the.com +1 | Search engines | No rule | ~33,699 | 91% | 6 | 1.1 |
DataForSeoBot aboutus.com · time.io | SEO crawlers | Denied | ~29,905 | 2.0% | 1 | 18.2 |
Meta-ExternalAgent ashtanga.yoga · ayd.yoga · lodo.com · the.com +1 | AI crawlers | Denied | ~29,450 | 89% | 1 | 2.2 |
DotBot (Moz) aboutus.com · ashtanga.yoga · ayd.yoga · the.com +1 | SEO crawlers | Denied | ~27,202 | 0.1% | 1 | 10.2 |
daum aboutus.com | Other self-declared bots | No rule | ~20,074 | 100% | 1 | 542.5 |
WhatsApp aboutus.com · how.is · par.is · the.com +1 | Link previews | No rule | ~18,523 | 0.0% | 412 | 1.2 |
Baiduspider ashtanga.yoga · ayd.yoga · dns.pizza · par.is +2 | Search engines | No rule | ~18,390 | 0.0% | 2 | 1.1 |
kakaobot aboutus.com | Other self-declared bots | No rule | ~12,978 | 100% | 1 | 1 |
dns.pizza aboutus.com · ayd.yoga · dns.pizza · how.is +1 | Other self-declared bots | No rule | ~12,800 | 0.0% | 4 | 1.6 |
Barkrowler (Babbar) aboutus.com · ayd.yoga · dns.pizza · lodo.com +4 | SEO crawlers | Denied | ~12,304 | 0.1% | 1 | 1.5 |
facebookexternalhit impostor (wrong network) aboutus.com · ashtanga.yoga · ayd.yoga · dns.pizza +6 | impostor | No rule | ~10,520 | 0.4% | 218 | 1.1 |
sentryuptimebot dns.pizza | Other self-declared bots | No rule | ~9,850 | 0.0% | 1 | 2.2 |
elevenlabscrawler aboutus.com · the.com | Other self-declared bots | No rule | ~8,181 | 0.3% | 6 | 5.7 |
serpstatbot aboutus.com · how.is | SEO crawlers | No rule | ~8,028 | 100% | 1 | 308.4 |
DuckAssistBot aboutus.com · ashtanga.yoga · par.is · time.io | AI crawlers | No rule | ~7,494 | 0.9% | 3 | 5 |
SeznamBot aboutus.com · ayd.yoga · dns.pizza · par.is +2 | Search engines | No rule | ~7,223 | 0.0% | 1 | 2.7 |
Qwantify aboutus.com · ashtanga.yoga · ayd.yoga · par.is +2 | Search engines | No rule | ~6,960 | 0.0% | 1 | 1.2 |
Python (requests/httpx/aiohttp) aboutus.com · activeseries.yoga · ashtanga.yoga · ayd.yoga +10 | Scripts & headless browsers | No rule | ~6,565 | 60% | 116 | 7.9 |
linkupbot aboutus.com · par.is · the.com · time.io | Other self-declared bots | No rule | ~6,500 | 0.0% | 1 | 7.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.
| Network | Requests, 7 days | Refused | Per address-hour | Mostly | Sites |
|---|---|---|---|---|---|
BYTEPLUS-AS-AP Byteplus Pte. Ltd. AS150436 | ~18,535,088 | 100% | 39.1 | browser user-agent | aboutus.com, ayd.yoga, the.com +1 |
ASN-CXA-ALL-CCI-22773-RDC AS22773 | ~7,609,123 | 0.2% | 5.2 | browser user-agent | aboutus.com, ayd.yoga, dns.pizza +5 |
ZEN-NET AS4229 | ~6,314,053 | 100% | 39.2 | browser user-agent | aboutus.com, ashtanga.yoga, the.com |
AS-WAVE-1 AS11404 | ~1,597,567 | 0.4% | 3.3 | browser user-agent | aboutus.com, dns.pizza, how.is +3 |
MICROSOFT-CORP-MSN-AS-BLOCK AS8075 | ~1,354,833 | 0.2% | 12.5 | Bingbot | aboutus.com, ashtanga.yoga, ayd.yoga +11 |
AMAZON-AES AS14618 | ~1,347,987 | 0.5% | 3.6 | Node.js (fetch/undici) | aboutus.com, activeseries.yoga, ashtanga.yoga +12 |
OSL-188 AS398781 | ~1,287,699 | 2.3% | 2.7 | browser user-agent | aboutus.com, dns.pizza, lodo.com +2 |
AMAZON-02 AS16509 | ~1,287,336 | 0.3% | 12.4 | ClaudeBot | aboutus.com, activeseries.yoga, ashtanga.yoga +13 |
FACEBOOK AS32934 | ~981,140 | 2.7% | 3.3 | Meta-WebIndexer | aboutus.com, ashtanga.yoga, ayd.yoga +11 |
CDNEXT AS212238 | ~345,864 | 4.1% | 2.7 | browser user-agent | aboutus.com, activeseries.yoga, ashtanga.yoga +10 |
APPLE-ENGINEERING AS714 | ~325,499 | 0.0% | 1.1 | Applebot | aboutus.com, ashtanga.yoga, ayd.yoga +8 |
HETZNER-AS AS24940 | ~301,765 | 3.8% | 7.7 | browser user-agent | aboutus.com, activeseries.yoga, ashtanga.yoga +15 |
GOOGLE-CLOUD-PLATFORM AS396982 | ~286,361 | 5.3% | 4.9 | shapbot | aboutus.com, activeseries.yoga, ashtanga.yoga +12 |
RCN-AS AS6079 | ~256,956 | 0.9% | 3 | browser user-agent | aboutus.com, ashtanga.yoga, ayd.yoga +7 |
TENCENT-NET-AP-CN Tencent Building, Kejizhongyi Avenue AS132203 | ~256,783 | 17% | 1.5 | browser user-agent | aboutus.com, activeseries.yoga, ashtanga.yoga +16 |
COMCAST-7922 AS7922 | ~243,505 | 5.8% | 2 | browser user-agent | aboutus.com, ashtanga.yoga, ayd.yoga +7 |
ALIBABA-CN-NET Alibaba US Technology Co., Ltd. AS45102 · fleet-shaped | ~232,477 | 98% | 1.5 | browser user-agent | aboutus.com, ashtanga.yoga, ayd.yoga +7 |
M247 AS9009 | ~217,931 | 6.1% | 2.4 | browser user-agent | aboutus.com, activeseries.yoga, ashtanga.yoga +9 |
GTT-BACKBONE GTT AS3257 | ~208,212 | 3.5% | 2.8 | browser user-agent | aboutus.com, ashtanga.yoga, bathm.at +5 |
VDSINA AS216071 | ~207,012 | 100% | 899.7 | browser user-agent | aboutus.com, ashtanga.yoga, dns.pizza |
DTAG Internet service provider operations AS3320 | ~192,790 | 1.1% | 2.8 | browser user-agent | aboutus.com, ashtanga.yoga, dns.pizza +4 |
GOOGLE AS15169 | ~164,290 | 0.4% | 2.2 | Googlebot | aboutus.com, ashtanga.yoga, ayd.yoga +14 |
HOSTROYALE AS203020 | ~137,855 | 8.8% | 2.8 | browser user-agent | aboutus.com, ashtanga.yoga, ayd.yoga +4 |
UUNET AS701 | ~133,176 | 7.0% | 1.9 | browser user-agent | aboutus.com, ayd.yoga, dns.pizza +5 |
WEB2OBJECTS AS62874 | ~131,369 | 3.4% | 2.5 | browser user-agent | aboutus.com, ayd.yoga, dns.pizza +5 |
OVH AS16276 | ~117,069 | 5.6% | 1.4 | AhrefsBot | aboutus.com, activeseries.yoga, ashtanga.yoga +13 |
BITE-US AS210906 | ~105,953 | 2.5% | 3.1 | browser user-agent | aboutus.com, ashtanga.yoga, ayd.yoga +3 |
ATT-INTERNET4 AS7018 | ~101,398 | 7.2% | 2 | browser user-agent | aboutus.com, ashtanga.yoga, ayd.yoga +9 |
CHINA169-BACKBONE CHINA UNICOM China169 Backbone AS4837 | ~96,564 | 20% | 1.3 | Sogou | aboutus.com, ashtanga.yoga, ayd.yoga +6 |
ORACLE-BMC-31898 AS31898 | ~95,662 | 4.1% | 5.6 | aionbot | aboutus.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.
- ·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.
- ·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.
- ·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.
- ·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.
- ·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.
- ·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.
- ·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.
- ·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.
| Invoice line | Billed | To bots | Why |
|---|---|---|---|
| Observability events | $220 | $108 | Every 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 | $35 | Billed before the firewall decides. |
| ISR writes | $54 | – | Page regeneration; driven partly by allowed crawlers, not attributed here. |
| Firewall rate-limit evaluations | $28 | $28 | Only 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.