If you run an x402 endpoint or a directory of them, the interesting question is not how many requests you got. It is who fetched what, and what they did with it. We have our own gateway's access log, so we counted.
This is 48 hours of one marketplace, not the market. The window is 2026-10-20T12:23Z through 2026-10-22T12:24Z, and it contains 176,609 request lines from the reverse-proxy access log. Every number below is a count of requests, not unique clients: one loop is one client and ten thousand requests. User agents are self-declared and can be spoofed โ treat them as labels, not identity.
Twelve distinct automated catalog consumers announced themselves by name in that window. The volumes are lopsided:
| User agent | Requests / 48h | What it appears to be doing |
|---|---|---|
| Agent402/1.0 | 37,468 | reads the discovery files, then hits hundreds of endpoints |
| AgentRankProbe/0.1 | 8,608 | catalog probing |
| agent-collector/0.1 | 1,908 | capability survey |
| SentinelOracle/0.1 | 1,225 | liveness checks over MCP |
| mcpbeat/0.1 | 816 | MCP liveness |
| TaifoonHarvester/1.0.0 | 319 | catalog harvest |
| BrickBlueBot/0.1 | 248 | catalog harvest |
| llmrt/0.1 | 122 | reads /api/services |
| rokmcp-collector/0.2 | 112 | MCP directory |
| fiatdock-scan | 96 | catalog scan |
Search and assistant crawlers are present too, an order of magnitude smaller: ChatGPT-User 107, bingbot 96, ClaudeBot 59, PerplexityBot 47, Googlebot 36, OAI-AdsBot 21, Claude-User 20, Perplexity-User 17, GPTBot 16, OAI-SearchBot 12, Claude-SearchBot 11.
Two things follow. First, the machine files are the product's front door, because that is what the collectors read before they touch an endpoint. Second, an AI assistant already has a page of yours in context when a user asks about agent payments; that page is not your landing page but whichever article ranked.
| Path | 200s | Conditional 304s |
|---|---|---|
/mcp | 15,648 | โ |
/openapi.json | 1,130 | 74 |
/api/services | 959 | โ |
/.well-known/x402 | 765 | 158 |
/llms.txt | 207 | โ |
/AGENTS.md | 89 | โ |
/rss.xml | 55 | โ |
/sitemap.xml | 52 | โ |
The MCP endpoint dominates, and 1,084 of its responses were 202, which is the correct answer to a JSON-RPC notification rather than a request. The conditional requests matter as much as the 200s: 158 of the /.well-known/x402 fetches were answered 304 Not Modified, and 216 of the robots.txt fetches were too. A crawler that revalidates is a crawler you can keep telling the truth to, cheaply โ provided your file carries a validator and you do not rewrite it on every request.
Here is the uncomfortable part. Across the paid surface โ /x402/* and the /svc/* alias โ the window contains 134,066 requests:
| Status | Count | Share |
|---|---|---|
| 402 Payment Required | 132,347 | 98.7% |
| 429 rate-limited | 563 | 0.42% |
| 404 | 438 | 0.33% |
| 200 | 372 | 0.28% |
| 400 | 294 | 0.22% |
| 204 | 51 | 0.04% |
| 502 | 1 | <0.01% |
Of the 372 responses that carried a result, 345 came from our own monitoring address and 2 from loopback. Twenty-five came from somewhere else, from eight distinct IPs.
That is what an unpaid catalog looks like from the inside, and it is worth stating precisely because the usual x402 dashboard โ "calls served" โ will happily report 134,066 and mean almost nothing. A 402 is a cheap, correct, honest answer to a caller who did not pay. It is also not demand. The only number that separates the two is the one behind the 200s.
The busiest single user agent in the window, Agent402/1.0, made 37,465 requests across 438 distinct endpoints. 35,746 of the responses were 402s. 1,379 were 200s. 340 were 304s. It read /.well-known/x402 805 times and /openapi.json 803 times, and then walked the catalog.
That is a verifier, and a verifier is useful: it is the mechanism by which a directory can tell whether your listed endpoints still exist, still challenge correctly, and still describe themselves. But it is not a customer, and a marketplace that counts its requests as traction is measuring its own indexers.
If you are a seller: make the machine files correct and cheap to revalidate, because that is what decides whether you appear in somebody else's catalog at all. If you are reading someone else's traffic numbers: ask what fraction of their calls returned a 402.
One measurement we did not enjoy: our tools/list response is 439,656 bytes for 1,711 tools โ roughly 110,000 tokens at four bytes per token, before a client has called anything. The result object carries only tools: no nextCursor, no ttlMs, no cacheScope. Every client that wants to see the catalog pays the whole bill at once, and pays it again next session.
Two standard mitigations exist and neither is exotic. Cursor pagination lets a client ask for a page. Cache hints let a client keep what it already fetched. We are measuring this before changing it, because the trade is real: a shorter list is cheaper to read and easier to miss in.
/.well-known/x402, an OpenAPI document, a services index, and llms.txt. Collectors read them first; if a number in them is wrong, every downstream catalog is wrong.Method notes: counts are parsed from the gateway's GIN access log for the window above; paths are counted after stripping query strings; user-agent classes are substring matches on the self-declared string. Bodies were not logged, so this says nothing about what callers sent โ only what came back. For the current catalog numbers, /api/stats is the live source; for the machine view, start at /.well-known/x402.