DEV Community

Donny Nguyen
Donny Nguyen

Posted on

I read the on-chain receipts of 1,062 x402 sellers. Here is what AI agents actually pay for.

There is a marketplace where AI agents pay for API calls with stablecoins. It has
about 14,800 listings across 1,062 seller wallets, and every listing
publishes the address it gets paid at.

Which means the demand data is public. Nobody has to guess.

I enumerated the whole catalogue, pulled every seller's payTo address, and read
their USDC receipts on Base. Here is what agents are actually buying — and it is
not what most people are building.

What earns

Sampling the sellers with the largest catalogues, by distinct paying wallets:

distinct payers what they sell
56 forward geocoding — address → lat/long
21 live gas price across chains
7 article/PDF → clean Markdown
6 cryptographically secure randomness
6 free-text web search
5 grid carbon intensity
5 legal-entity (LEI) reference data
5 text-to-image generation
5 financial news headlines

Read that list again. It is almost entirely boring, general-purpose
utilities.
Geocoding. Weather. Search. Randomness. The things a program needs
in order to finish a task, not the things a crypto-native audience assumes an
onchain agent wants.

The single crypto-adjacent product with real traction is gas prices — and
that is arguably a utility too. It answers "which chain is cheapest right now",
which is a routing decision, not a trading one.

What does not earn

I run a multi-chain DEX data API. Prices, liquidity, pool reserves, routing,
slippage, cross-venue arbitrage — 43 paid endpoints across six chains, all
indexed in the same marketplace.

Genuine third-party queries, ever: effectively zero.

That is not a quality problem. The endpoints are correct and I have receipts for
that. It is a demand problem: the agents transacting in this market are not
looking for DEX data. I built for an audience I assumed existed.

The numbers are tiny, and that matters

The top seller — 56 distinct payers — earned $0.70 in the window I sampled.
The highest single-seller revenue I found was $6.10, for text-to-image.

This is a real market with real, repeat, unfaked payments. It is also a
sub-cent market. Anyone telling you agentic payments are a gold rush right
now is not reading the chain.

What it means practically: pricing matters less than being present and correct
when volume arrives. At $0.001–0.01 a call, the difference between charging one
cent and two is noise. The difference between working and not working is
everything.

The measurement trap I fell into twice

Two numbers nearly sent me the wrong way, and both looked authoritative.

First: my own dashboard reported ~8,762 "agents hitting the paywall". I
built product strategy on it for weeks. When I finally classified the ledger
properly: 82.7% was my own monitoring, 17.3% was catalogue crawlers walking
every route with no query string, and zero were genuine third-party queries.
39 distinct user-agents, 37 of which never sent a parameter. Being indexed is
not being shopped.

Second: while writing this, my ledger showed 4 organic settles — the first
revenue the project had ever seen. They were not real. The ledger wrote a paid
row whenever a payment-signature header was present, without ever checking that
settlement succeeded. All four had a null transaction hash, a 4xx upstream, and
no USDC ever arrived. A header is a claim, not a payment.

Both bugs share a shape: HTTP 200, plausible number, completely false. Tests
that assert on status codes and response shapes cannot catch either. I now assert
on magnitudes and cross-check sources — does this figure agree with a second,
independent measurement of the same thing?

Do this yourself

The discovery API is public and needs no key:

https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources?limit=100&offset=0
Enter fullscreen mode Exit fullscreen mode

Paginate it, collect accepts[].payTo from each listing, then read USDC
Transfer logs on Base with that address as the recipient topic. Filter out
self-payments — sellers priming their own listings is common and is not demand.

Two gotchas that cost me time: the /resources endpoint returns items while
/merchant returns resources (assuming one shape silently yields zero sellers
from 14,800 listings), and most public Base RPCs cap eth_getLogs at a
10,000-block range or refuse log queries entirely without a paid archive tier.

One thing I built and deleted: a category rollup. It reported 150–186 payers for
every category — geo, DEX, weather, sports, all within 20% of each other. That
is not uniform demand, it is an artefact: sellers running 100–1,200 listings
match every keyword bucket and get counted once per bucket. Per-listing
attribution would fix it, except the chain shows payments to a wallet, not to
a route
— so that attribution does not exist in this data. I removed the number
rather than ship it.

What I'm doing about it

Building the utilities. The research says geocoding, extraction, randomness and
search have paying customers today, and my DEX endpoints do not. Arguing with
that would be expensive.

The DEX infrastructure stays — it is correct, it is cheap to run, and it is
positioned for whenever that demand shows up. But the next thing I ship will be
something the receipts say someone actually wants.

If you are building for agents: read the receipts before you build. The data
is right there, and it disagrees with the narrative.

Top comments (0)