Dev.to AI 🤖 Ai 👁 0 📖 3 min read

I crawled all 31,620 x402 Bazaar listings: most have one payer, and boring chain reads win

I crawled every resource in the Coinbase x402 Bazaar on 2026-10-13 before choosing what to sell to AI agents. The discovery API is public (GET https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources?limit=500&o

I crawled every resource in the Coinbase x402 Bazaar on 2026-10-13 before choosing what to sell to AI agents. The discovery API is public (GET https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources?limit=500&offset=N), and each entry carries a quality block with l30DaysUniquePayers and l30DaysTotalCalls. Those two fields are the closest public measure I know of for what agents actually pay for.

Most listings have one payer

Distinct payers per resource, last 30 days Resources Share
0 84 0.3%
1 14,480 45.8%
2 9,759 30.9%
3-4 5,831 18.4%
5-9 1,057 3.3%
10-49 314 1.0%
50+ 95 0.3%

That is 31,620 unique resource URLs on 2,280 hosts. 77% of them had two payers or fewer in 30 days, and only 1.3% reached ten. As far as I can tell, the Bazaar only lists a route after a payment settles through the CDP facilitator, so the lone payer behind most listings is probably the seller's own test call. Supply is not the bottleneck in this market. Buyers are.

What gets more than one buyer

I tagged resources by keywords in their URL and description. The categories overlap, and keyword tagging is crude, so read these as directions rather than measurements:

Category (keyword match) Resources Mean payers Share with 10+ payers
Chain data / RPC (balance, block, gas, tx, wallet, contract...) 7,288 4.01 2.1%
Novelty (jokes, facts, coin flips, horoscopes...) 3,949 3.43 1.4%
News / social 1,477 2.62 1.9%
Web search / scrape 4,656 2.44 1.2%
Prices / markets 12,141 2.19 0.9%
LLM / inference 2,366 2.12 0.9%
Token risk / safety 3,351 1.87 0.5%

Two things surprised me:

  1. Plain chain reads beat clever products. The most-paid host after one outlier is api.onesource.io, whose routes are thin wrappers over eth_getBalance, eth_blockNumber, balanceOf and eth_getLogs, priced at $0.001-$0.008. Each of its top routes had 200-560 distinct payers in 30 days. Meanwhile 3,351 token-risk and "safety" listings average fewer than two payers. Everyone is building the trust layer, and few agents are buying it.
  2. Novelty endpoints outsell most serious ones. Single-route Vercel apps serving random facts, coin flips and horror stories had 45-57 distinct payers each, more than 99% of the catalog.

Cheap wins, up to a point

Price per call (USDC) Resources Mean payers Share with 5+ payers
≤ $0.001 2,246 4.08 13.1%
$0.0011-$0.005 7,633 3.74 6.6%
$0.005-$0.01 14,787 1.83 2.5%
$0.0101-$0.05 4,482 3.45 4.8%
> $0.05 2,462 1.69 3.0%

$0.01 is the default price in most x402 examples, and 14,787 resources sit in that band. It has the weakest numbers in the table.

Caveat: payers are not necessarily customers

Of the 242 resources with 20 or more payers, 101 had almost exactly one call per payer (calls ≤ 1.2 × payers). That pattern fits fleets of fresh wallets that each call once, such as testing harnesses, review bots, catalog crawlers that make paid checks, or activity farming. It fits a real agent with a working use case less well. A distinct payer is a wallet, and nobody outside can prove it is a separate customer.

What I did with this

I built the boring thing the data points to. Plainchain is ten GET endpoints for agents: gas with USD cost estimates, latest block, USD prices, wallet balances with USD totals, ERC-20 token data with DEX stats, "what is this address" (EOA, EIP-7702 delegate, Safe owners and threshold, proxy implementation, token), allowance checks, decoded transactions, x402 receipt verification from a tx hash, and verifiable block-hash randomness. It covers Base, Arbitrum, Ethereum and Optimism, at $0.000942-$0.002942 per call over x402. Disclosure: I built and run it. Every settlement it receives is public at /stats, so its numbers can be checked against this post.

Three implementation notes if you are shipping your own x402 seller:

  • A Cloudflare Pages project can run the whole seller. Put a bundled _worker.js in the static output folder. @x402/hono works on Workers once you bundle it with esbuild, aliasing Node's url module to a two-line shim. The CDP facilitator wants an Ed25519-signed JWT on every verify and settle call, and WebCrypto's Ed25519 produces it without jose or Buffer.
  • Bazaar validation uses AJV, which needs eval. That is not allowed on Workers, so the SDK prints "invalid bazaar extension" warnings at startup. The extension is still sent. Validate your schemas once in Node to be sure they are actually right.
  • Registering on x402scan is free. It uses a SIWX sign-in (createSIWxPayload and encodeSIWxHeader from @x402/extensions/sign-in-with-x). The signing key needs no funds. If your OpenAPI spec has an x-payment-info block and an input schema for each route, register-origin picks up every route in one call.

The crawl summary is at plainchain.appin60.com/data/bazaar-summary.json. To reproduce it, page through the discovery endpoint with limit=500. It takes about two minutes.

📰 Read the original article on Dev.to AI

Originally published by Dev.to AI. Aggregated on AIWithGhost for educational purposes — full credit and traffic to the original publisher.