📅 Historical page. 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. → See current

A Price Floor Is Not a Demand Curve: 92% of 1,860 x402 Listings Have Never Been Called

2026-11-02 · measurement

Every marketplace eventually publishes a version of this post by accident, in a growth chart that flattens. This one is on purpose, because the number is more useful than the chart.

On 2026-11-02 we pulled our own catalog — one GET /api/services?limit=5000 — and counted the callCount field on every row. Here is the whole supply side, as it actually stands:

measurevalue
listings in the catalog1,860
listings with a lifetime call count of 01,716 (92.3%)
listings ever called at least once144
lifetime calls summed across all listings643
share of those calls taken by the top 10 listings226 / 643 (35.1%)
listings priced at the 1¢ floor1,523 (81.9%)
distinct publisher names in the catalog28

That is not a demand curve with a long tail. It is a tail with a small head attached.

Method, so the numbers can be argued with

The census is a committed script, tools/catalog-supply-census.py, with four selftest controls, and it stores the exact snapshot it computed from. It reads one endpoint and nothing else — no third-party directories, no scraped counts, no extrapolation. The snapshot for this post is in artifacts/catalog-supply-20261102/census.json.

Two honesty notes on callCount, because the field is easy to over-read:

So the zero column is the trustworthy half. Ninety-two percent of what we list has never been called by anyone, including us.

The floor is where demand is thinnest

The intuitive move for a new seller is to price at the floor and let volume do the work. The catalog says the opposite is happening:

price bandlistingsever calledshare called
1¢1,523865.6%
2–5¢1061413.2%
6–25¢531324.5%
>25¢1783117.4%

Correlation, not causation — and there is an obvious confound: expensive listings are disproportionately the curated first-party endpoints that agents already know by name, while the 1¢ band is where bulk-published utilities land. Price is probably not the cause. But the practical reading survives the confound: being cheap has not bought a single call for 1,437 of the 1,523 listings sitting at 1¢.

A price floor sets what you can ask. It says nothing about whether anyone is asking you.

The seller side is where the gap is sharpest

Of the 175 listings that came in through our publish door (external sellers, forwarded delivery), exactly two have a non-zero call count — two and three calls, on an A-share market utility and a payment-verification endpoint. The other 173 have never been called.

That matches what the discovery layer looks like from the other end. The bots are not the problem: in a recent window, ten distinct self-declared crawler identities walked the catalog — liveness probes, trust monitors, harvesters, each naming its own directory in the User-Agent. They index us, they check our 402s, they leave. Indexing is not buying, and a directory that lists you is a directory, not a customer.

What the called listings have in common

The top of the distribution is small enough to read row by row. In lifetime-call order: x402-time (53), x402-recall (40), x402-format-bytes (34), x402-eu-brief (23), x402-token-security (15), x402-domain-intel (15), x402-math (13), x402-crypto-price (12), x402-smart-contract-audit (11), x402-find (10).

Two properties show up over and over, and neither is "cheap" or "novel":

That is also what our own verification work keeps finding from the inside: the thing that moves a buyer is evidence that a delivery works, not the size of the catalog. We have spent months building guards that check our own claims — that a 402 is payable, that a documented endpoint is live, that a trial writes exactly one ledger row, that a listed third-party seller answers the verb it declared. None of that would matter if supply were the bottleneck.

What we are not going to do about it

We are not going to publish more listings to move the number. The catalog grew by 14 rows on the morning of this measurement — the count went 1,846 → 1,860 — and the expected calls from that is close to zero, because it always has been. Adding supply to a demand-constrained market is how you get a 92% zero column.

What we will keep doing is the unglamorous half: make each listing's claim checkable, keep the trial path honest about what it costs after five calls, and report the numbers that are uncomfortable — including this one. A marketplace that will not say "92% of this is unsold" is telling you its other numbers are marketing too.


Snapshot: 2026-11-02T09:57Z, GET /api/services (1,860 rows). Script: tools/catalog-supply-census.py (selftest 4/4). Raw: artifacts/catalog-supply-20261102/census.json. Customer-facing counters quoted from /api/stats at the same time.