modelmarket.dev · blog

We tried to buy one call from 100 x402 sellers. Most delivered. Almost nobody is buying.

2026-10-06 · 6 min read #x402#web3#ai#api

74 of 85 paid calls returned a genuine answer; 4 of 85 charged for nothing useful; 9 sellers failed after payment and charged nothing.

Coinbase's x402 Bazaar lists 34,768 paid endpoints today, and a small industry of trust scores has grown around them. Our own x402 routes are probed by more than twenty of those indexes: uptime monitors, censuses, "trust" scanners. Their user agents say it plainly: never pays, no payment attached, reachability only.

That tells you whether a seller answers with a price. It tells you nothing about what the money buys. So we paid.

How we picked and paid

What came back

Outcome Sellers
Answer accepted by the jury 74
Answer rejected by the jury, buyer charged 3
Answer received, jury not confident either way 8
Error after payment, buyer not charged 9
Error after payment, buyer charged 1
Not bought 5

Funnel: 100 drawn, 96 payable 402, 95 payments signed, 85 charged on chain, 74 genuine answers.

Totals: - 95 payments signed, for $0.536. - 85 executed on chain, for $0.489. - 74 of the 85 paid calls (87%) returned a real answer. Among those we checked by hand: a 768-number embedding, a Wikipedia article, Product Hunt data, a correct inverse Web Mercator projection. - 4 of the 85 took the money for nothing useful.

Not fraud: broken examples

The commonest defect was not a scam. It was the listing. About one seller in ten advertises an example request that does not work: - the service rejects its own sample input; - a required field is missing from the example; - the call needs a header the listing never mentions; - the example URL points at a page that does not exist; - the "example" holds placeholders instead of values.

Most of these sellers did the right thing on failure and did not settle. Several even say so in the error body: you were not charged. That is good engineering.

But for an agent, the listing is the API contract. If the documented call fails, the agent stops there, and the seller never learns that it lost a customer.

Four times the money went for nothing

That is $0.022 out of $0.489. The sums are small because the prices are small. What matters is that a probe that never pays could not have seen any of it.

What a 402 probe cannot see

An unpaid probe sees 96 of 100 sellers answer with a price. Only a paid call shows broken examples, failures after payment, charges for nothing, a false settlement header, a v1/v2 mix, a payee mismatch and a price above the listing.

A few things surfaced only because money moved:

The real finding: almost nobody is buying

34,768 Bazaar listings by paying wallets in 30 days: 65 none, 22,559 exactly one, 11,748 two to nine, 396 ten or more.

The Bazaar publishes its own 30-day counters: - 65% of all listings had exactly one paying wallet. The Bazaar lists a route after its first payment, so that one payer is most likely the seller itself. - Only 1.1% had ten payers or more. - In our sample, 23 of the 74 sellers that delivered a genuine answer had exactly one payer.

The services mostly work. The buyers are not there yet. Our own paid routes tell the same story: during the test, they were visited by more index bots than customers.

If you sell on x402

You can check yourself with the same tool; the unpaid step is free:

cd scripts/delivery-survey && npm ci
node survey.mjs catalog --out bazaar.json
node survey.mjs sample --catalog bazaar.json --host your.host --cap 0.01 --seed self --out plan.json
node survey.mjs probe --plan plan.json --out probe.jsonl      # unpaid: your own example and your 402
node survey.mjs buy --plan plan.json --probe probe.jsonl --out buy.jsonl --budget 0.05 \
  --payer 0xYourBuyer --key-file wallet.json                   # one paid call per listing
node survey.mjs chain --buy buy.jsonl --out chain.json         # charged or not, by the chain

Why we don't name anyone

One paid call on one day is thin evidence about a business, and our request may not be the use a seller had in mind.

Our interest, and the limits

Links: - Full report, in English, Русский, Español, Français and 中文. - Tool, open source, 22 tests: scripts/delivery-survey. - Anonymized data: results/2026-10-05.json.

If a payment of your own fails, modelmarket.dev/tools/x402-check rebuilds the EIP-712 digest, recovers the signer and names the domain a failing signature was really made for. Free, no account.

If you build one of those trust indexes and want paid-and-judged data next to your uptime numbers, open an issue on alexar76/aicom. We would rather add to your scores than build another one.

Questions or corrections? The discussion is on dev.to.