This content reflects minia2a as of its publication date and is kept for the record. Current model: x402 pay-per-call in USDC on Base only, 5 free trial calls per signed wallet, no credits and no top-up rail.
121,785 Requests, One Buyer: A Day of x402 Discovery Traffic
2026-11-10 · x402 operations
Every x402 catalog owner can quote a request count. Almost none can quote a
buyer count, and the two numbers are not the same population. We parsed 24 hours
of our own ingress — 2026-11-09T02:05Z to 2026-11-10T02:05Z — and the shape is
worth writing down, because it changes what a catalog should report.
What we measured
Nginx access log, all paths, one calendar day. Client attribution uses the
address our edge reports in xff, never the edge address that
connects to the origin. Caller classes come from the declared
User-Agent, which any client can set — these are announcements, not
fingerprints. Rows with no xff are counted as unknown
and never guessed into either bucket.
121,785 request lines parsed, 0 unparsed.
The whole day in four lines
status : 402:98507 200:19889 404:1213 202:724 304:540 400:278 …
origin : external:92765 ours:29020
class : third-indexer:46385 other:32413 own-guard:13312
third-probe:11817 curl:8617 browser:6965 no-ua:2276
2xx on a paid path (/x402|/svc) — external callers: 1, requests: 1
80.9% of everything that hit the site was a 402 challenge. That
is expected and it is the product: a machine-readable payment contract is what
an agent reads before it decides whether to pay. The interesting number
is further down.
Most of the audience is machinery
| Declared class | Requests | Share |
|---|---|---|
| third-indexer | 46,385 | 38.1% |
| other | 32,413 | 26.6% |
| own-guard | 13,312 | 10.9% |
| third-probe | 11,817 | 9.7% |
| curl | 8,617 | 7.1% |
| browser | 6,965 | 5.7% |
| no-ua | 2,276 | 1.9% |
Indexers, probes and our own guards are 58.7% of the day. Add the browsers
that read the landing page and you have almost the entire log. The
curl bucket — often the first sign of a developer trying an
endpoint by hand — is 7.1%, and a chunk of that is our own tooling.
This is not a complaint about indexers. They are why a catalog exists: an
agent that has never heard of you has to be able to find the challenge without
you. But it does mean that "requests grew" is a statement about crawlers.
One outside caller reached a paid path with a 2xx
Filter to the only thing that resembles a purchase — a 200 or
202 on /x402/… or /svc/… — and sort by
who was allowed to ask. Seventy such answers exist. Sixty-nine of them went to
callers we classify as internal or unknown: our guards, our own agent's probes,
and rows that carried no client address at all. One went to an outside caller.
Its User-Agent was a PaidProbe from a third-party indexer: a
verification bot that pays a cent to confirm a listing is deliverable. That is
useful work — it is how a directory proves a seller exists — but a paid probe
is not a buyer. It settles one call, once, on behalf of nobody.
The request count for the day is 121,785. The number of outside
parties that received a successful paid response is one, and it was a robot
checking that the door opens.
Why this matters to sellers
If you list a service in four directories, you will see traffic from four
crawlers and possibly from one verification bot per directory. None of that is
a funnel. The 402 is being read; the wallet behind it is not being opened.
Two habits follow from the measurement:
- Report buyers, not requests. A daily "requests" number is a proxy for how often machines re-index you. A daily "distinct paying wallets" number is the only quantity that can go up for a reason you care about.
- Treat a paid probe as a liveness signal, not demand. The probe proves your 402 parses and your delivery path runs. It does not prove anyone wants the answer.
How this number can be wrong
Three ways worth naming. Self-declared User-Agents misclassify anyone who
lies; a client that omits xff lands in unknown and is
excluded from both sides rather than guessed. Paid calls are attributed by
wallet, and wallets carry no source column — a payment settled by a
verification probe counts exactly like a payment settled by a buyer. And a
24-hour window is one day: it describes the discovery layer's steady state, not
a trend.
We publish the buyer number alongside the request number for the same
reason we publish the challenges: if the only metric a catalog will show you is
the one that crawlers move, you learn nothing about whether anyone wants what
you sell.
Originally published at minia2a.uk.
Top comments (0)