⚠️ A NEWER MEASUREMENT EXISTS: 2026-09-11.
Everything below is what was measured on 2026-08-27 and has deliberately not been updated. Editing this page to match the newer harvest would destroy the only thing two measurements are good for. If you want the current shape of the catalog, follow the link; if you want to know what changed, you need both.

Circle Agent Marketplace catalog — snapshot, 27 August 2026

A single measurement of the Circle x402 Discovery catalog. Composition only.

This is a one-off measurement taken on 2026-08-27. It is not maintained.
Nothing here has been re-checked since. Prices, endpoints and payout addresses change without notice. Treat every figure as “was true on 2026-08-27”, never as “is true”. The method is below and the source is a public API — re-run it rather than cite it.

How many x402 sellers are listed, and on which networks

listingsaccepts rowsdistinct URLshostsnetworkspayout addrs
1,0033,808 96025 16111

A listing may accept payment on several networks, so accepts rows exceed listings. 960 distinct URLs across just 25 hosts — this catalog is more concentrated than its listing count suggests.

🚨 The siwx=false trap — read this before re-running

1,003 listings direct from the API. 838 through the CLI. The difference is 165, and it includes every testnet row.

`circle services search` silently appends siwx=false. It is not in the CLI's --help; it is visible only by reading the CLI's own dist/index.js. Re-running this census through the CLI yields a DIFFERENT DENOMINATOR with no signal that it changed, and the counts still look plausible. Fetch the API directly.

This is on the page rather than in a footnote because a count published without it is not reproducible: a reader who re-runs the obvious way gets a different denominator and no warning that it changed.

Which networks the Circle agent registry covers

networkCAIP-2accepts rows
Baseeip155:84531,164
Polygoneip155:137625
Solana mainnetsolana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp562
Base Sepoliaeip155:84532396
Polygon Amoyeip155:80002396
Solana devnetsolana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1264
Avalancheeip155:4311498
Ethereumeip155:156
Arbitrumeip155:4216156
Optimismeip155:1056
Unichaineip155:13056
X Layereip155:19631
Soniceip155:14612
World Chaineip155:48012
Seieip155:132912
HyperEVMeip155:99912

14 EVM chains and 2 Solana clusters. Testnet rows total 792 — first-class in this catalog, and exactly what the CLI hides.

Is Arc in the catalog?

No — 0 rows. No accepts[] entry names an Arc network. Searched the full 3,808-row set, not a filtered view.

Where the catalog actually lives

hostaccepts rows
x402.quicknode.com2,112
api.aisa.one324
np.orthogonal.com292
x402.api.agentmail.to199
api.arkm.com178

One host carries 55.5% of all rows; the top five carry 81.5%.

What this snapshot does NOT claim

fieldstatewhy
livenessnot-measuredrequires GET against 960 third-party URLs across 25 hosts; those calls have not been made
advertisedVsLivePricenot-measuredsame 960 calls; a listing's price and its live 402 have not been compared
payoutAddressOwnershipnot-measured14 EVM chains readable in principle; 826 of 3,808 rows are Solana and need a different client
upgradeabilitynot-measuredEIP-1967 has no Solana equivalent — the question differs per ecosystem, it is not one check
serviceQualitycould-not-checkno on-chain or catalog signal distinguishes a service that works from one that does not

Each is listed rather than omitted. A blank would read as “fine”; these are open.

Method: how to re-run this yourself

Fetch https://api.circle.com/v2/x402/discovery/resources?limit=100&offset=N directly, limit=100, paginating until a short page. Do not use the CLI — see the trap above. Then verify the harvest was unfiltered by checking that Base Sepolia and Polygon Amoy rows are present; if either is zero, the fetch was filtered and the denominator is wrong.

Drift while reading: not-checked — this harvester did not look for a per-page `total`, so this measurement cannot say whether the index drifted while it was being read. The 2026-09-11 harvest looked, and found one.

The machine-readable form of everything above: /snapshot/2026-08-27.json

All snapshots

datelistingsaccepts rowshostsArc rows
2026-08-27 (this one) 1,0033,808 250 JSON
2026-09-11 1,1624,215 480 JSON

Each was harvested separately and none has been edited since.

What differs between two of them, including which offers now name a different payout address: 2026-08-27..2026-09-11