x402 API Directory — Paid Agent Endpoints & Usage Stats
Pricing
from $1.00 / 1,000 endpoint returneds
x402 API Directory — Paid Agent Endpoints & Usage Stats
Directory of live x402 (HTTP 402 stablecoin micropayment) API endpoints that AI agents pay for, from Coinbase CDP discovery: search by keyword, tag, category or domain; filter by network, asset, price, 30-day usage and liveness; optional HTTP probe and per-domain rollups.
Pricing
from $1.00 / 1,000 endpoint returneds
Rating
0.0
(0)
Developer
Samat Makatov
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
2 hours ago
Last modified
Categories
Share
x402 API Directory — paid agent endpoints with real usage stats
Every x402 endpoint (APIs that charge per call in USDC over HTTP 402) listed in Coinbase's CDP discovery / Bazaar — ~15,000 listings from ~2,000 sellers — flattened into clean JSON with the price in USD, payment networks and assets, method and example input, and the real 30-day usage (paid calls, unique payers, last call). Search by keyword, tag, category or domain; filter by network, asset, price and traction; optionally probe each endpoint to confirm it still answers 402. Aggregate by seller domain for market research. No API key, no browser, no proxy.
Use cases
- Tool discovery for agents — "find a web-search / Twitter / SEC-filings endpoint under $0.01 on Base with ≥5 real payers", then feed
inputExample/inputSchemastraight into a tool definition. - Competitive pricing — pull every endpoint in a category (
query: "sentiment"), comparepriceUsd,calls30d,payers30d. - Seller lead-gen —
mode: "domains"gives the seller list with endpoint counts, 30-day calls and price range; sort bycalls30dto find who is actually earning. - Market sizing / research — how many endpoints per network, share of Solana vs Base, median price, curated share (see
SUMMARY). - Uptime & liveness monitoring — schedule
checkLive: trueon your own domain(s) and alert whenisLiveflips to false. - New-listing watch —
updatedWithinDays: 1,sortBy: "updated"on a daily schedule.
Input
| Field | Type | Default | Notes |
|---|---|---|---|
mode | endpoints | domains | endpoints | domains aggregates matching endpoints per host. |
query | string | — | All words must appear in description/tags/service name/category/URL (case-insensitive substring). |
category | string | — | Substring match on the seller-declared category (free-form). |
tags | string[] | [] | Any-of match on seller tags (lower-cased). |
domains / domain | string[] / string | — | Only these hosts (subdomains included). |
excludeDomains | string[] | [] | Drop these hosts. |
curatedOnly | boolean | false | Only Coinbase-curated listings (~80). |
networks / network | string[] / string | — | Aliases (base, solana, polygon…), CAIP-2 (eip155:8453) or bare chain id (8453). See Reference. |
excludeTestnets | boolean | false | Drop listings that only accept Base Sepolia / Solana Devnet / Polygon Amoy. |
assets | string[] | [] | Symbols: USDC, USDT, USDT0, USD1, USDG, EURC, RLUSD… |
minPriceUsd, maxPriceUsd | string/number | — | Per-call price bounds. Endpoints with unknown/non-USD price are excluded when a bound is set. |
minPayers | integer | 1 | Unique payers in the last 30 days. 2+ removes ~73 % of the directory (self-tested listings). |
minCalls | integer | 1 | Paid calls in the last 30 days. |
calledWithinDays | integer | — | Last paid call at most N days ago. |
updatedWithinDays | integer | — | Listing (re)published at most N days ago. |
checkLive | boolean | false | HTTP-probe the returned endpoints; adds liveStatus, isLive, liveLatencyMs, liveNote. |
methods | string[] | [] | GET / POST … |
sortBy | enum | payers | payers, calls, price, price_desc, recent, updated, domain. |
limit | integer 1–5000 | 50 | Endpoints or domains returned. |
includeExamples | boolean | true | Keep inputExample / outputExample. |
includeSchemas | boolean | false | Add inputSchema / outputSchema (JSON Schema from the seller). |
includeAccepts | boolean | false | Add accepts[] with every payment option. |
maxScan | integer | 20000 | Max listings read (500 per request). |
fields | string[] | [] | Output only these fields (id always kept). |
The original inputs query, domain, network, minPayers, minCalls, maxPriceUsd, sortBy, limit are unchanged.
Reference
Networks (CAIP-2 ids seen in the directory, share of payment options)
| Alias | CAIP-2 | Share | Alias | CAIP-2 | Share |
|---|---|---|---|---|---|
base | eip155:8453 | 49 % | worldchain | eip155:480 | 3.5 % |
solana | solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | 15 % | bsc | eip155:56 | 3 % |
polygon | eip155:137 | 8 % | xlayer | eip155:196 | 3 % |
arbitrum | eip155:42161 | 7 % | algorand | algorand:wGHE2Pwdvd7S12BL5FaOP20EGYesN73ktiC1qzkkit8= | 4.5 % |
xrpl | xrpl:0 | 5 % | hyperevm | eip155:999 | 2.6 % |
monad | eip155:143 | 5 % | optimism | eip155:10 | 2 % |
avalanche | eip155:43114 | 2 % | sei | eip155:1329 | 2 % |
celo | eip155:42220 | 2 % | stellar | stellar:pubnet | 2 % |
base-sepolia (testnet) | eip155:84532 | 1.5 % | ethereum | eip155:1 | <1 % |
hedera | hedera:mainnet | <1 % | hyperliquid | hyperliquid:mainnet | <1 % |
noble | cosmos:noble-1 | <1 % | lightning | lightning:mainnet | <1 % |
Also recognised: unichain (eip155:130), sonic (146), xdc (50), etherlink (42793), peaq (3338), megaeth (4326), xrpl-evm (1440000), solana-devnet, polygon-amoy, animica, zeroclick, alipay. Legacy names some sellers still publish (base, solana, polygon) are normalised to CAIP-2 in the output.
Assets (resolved from the on-chain address; decimals used for priceUsd)
USDC on all EVM chains + Solana + Algorand ASA 31566704 + Noble uusdc + Stellar + Hedera + Hyperliquid (6–7 dec) · USDT (Base, Polygon, Solana 6 dec; BSC 18 dec) · USDT0 (X Layer) · USD1 (World Liberty, BSC, 18 dec) · USDG (Global Dollar) · USDU (United Stables) · USDm · RLUSD and USDC on XRPL · EURC (Base) · JPYC (Polygon) · XRP, XLM, SOL, ANM (non-USD → priceUsd: null). When a seller publishes extra.totalUsd that value wins.
Categories & tags (seller-declared, free-form)
Top categories: AI, finance, agent-ops-math, chain-primitives-local, utility, Infra, trading-signals, search, signal-normalize, sports, api, data-provider, marketing, financial-data, defi, domain-intelligence, security, social, news, prediction-markets, sec-filings, weather. Only ~1,200 of 15k listings declare a category — prefer query for recall.
Top tags: crypto, base, defi, x402, search, twitter, market-data, web, data, research, usdc, sec, hyperliquid, analytics, oracle, reddit, github, x, agents, smart-money, ai, on-chain, price, gas, compliance, company, derivatives, llm, trading, ethereum, social, risk, bitcoin, sanctions, enrichment, edgar, weather, travel, funding-rate, wallet, ofac.
Directory shape (snapshot, Sept 2026)
14,632 listings · 1,972 hosts · 81 curated · unique payers (30d): 1 → 73 %, 2–4 → 20 %, 5–19 → 5.5 %, 20–99 → 0.7 %, 100+ → 32 endpoints · methods: GET 54 %, POST 46 %.
Examples
Cheap, proven web-search / Twitter tools for an agent (Base or Solana)
{ "query": "twitter", "networks": ["base", "solana"], "minPayers": 3, "maxPriceUsd": "0.05", "checkLive": true, "sortBy": "calls", "limit": 12, "includeExamples": false }
Seller landscape — who actually earns
{ "mode": "domains", "minPayers": 5, "excludeTestnets": true, "limit": 100 }
Compliance / sanctions endpoints with tool schemas
{ "tags": ["sanctions", "ofac", "compliance"], "minPayers": 2, "includeSchemas": true }
Curated only, most expensive first
{ "curatedOnly": true, "sortBy": "price_desc", "minPayers": 0, "minCalls": 0 }
Monitor my own listings
{ "domains": ["api.mycompany.com"], "minPayers": 0, "minCalls": 0, "checkLive": true, "fields": ["url", "priceUsd", "payers30d", "calls30d", "lastCalledAt", "isLive", "liveStatus", "liveLatencyMs"] }
New listings in the last 24 h
{ "updatedWithinDays": 1, "sortBy": "updated", "minPayers": 0, "minCalls": 0, "limit": 200 }
Output
mode: "endpoints" — one item per endpoint (trimmed):
{"id": "b9a43b48","url": "https://api.onesource.io/api/chain/erc20-balance","domain": "api.onesource.io","path": "/api/chain/erc20-balance","serviceName": null,"description": "ERC20 token balance for any Ethereum wallet ... via balanceOf (eth_call)","category": null,"tags": [],"type": "http","method": "GET","inputExample": { "method": "GET", "queryParams": { "address": "0xd8da...", "contract": "0xdac1...", "network": "ethereum" }, "type": "http" },"outputExample": { "data": { "balance": "1234567890", "symbol": "USDT" } },"priceUsd": 0.003, "priceMinUsd": 0.003, "priceMaxUsd": 0.003,"asset": "USDC", "network": "eip155:8453", "networkName": "Base","networks": ["eip155:8453"], "networkNames": ["Base"], "assets": ["USDC"], "schemes": ["exact", "batch-settlement"],"payTo": "0x52E29e0d2Aa49bfBfC548C0A9F2196F4aa51f3ea","calls30d": 1077, "payers30d": 1070, "lastCalledAt": "2026-09-12T18:37:41.411Z", "daysSinceLastCall": 0.2,"curated": false, "bundleSlugs": [], "iconUrl": null, "x402Version": 1,"lastUpdated": "2026-09-12T20:01:11.000Z","discoveryUrl": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources","fetchedAt": "2026-09-12T23:40:02.041Z"}
| Field | Meaning |
|---|---|
id | Stable hash of the URL. |
url, domain, path | Endpoint address split for grouping. |
serviceName, description, category, tags | Seller metadata (tags lower-cased). |
method, inputExample, outputExample | From the Bazaar extension; inputSchema / outputSchema with includeSchemas. |
priceUsd | Price of the primary USD-stablecoin option; priceMinUsd / priceMaxUsd across all options; null if unknown or non-USD. |
asset, network, networkName, payTo | Primary payment option; networks, networkNames, assets, schemes list every option; accepts[] with includeAccepts. |
calls30d, payers30d, lastCalledAt, daysSinceLastCall | Facilitator usage stats. |
curated, bundleSlugs, iconUrl, x402Version, lastUpdated | Listing metadata. |
liveStatus, isLive, liveLatencyMs, liveNote | Only with checkLive. isLive = answered HTTP 402. |
mode: "domains" — one item per host: domain, endpoints, serviceNames, categories, topTags, calls30d (sum), payers30dMax, payers30dSum, priceMinUsd/priceMaxUsd/priceMedianUsd, networks, assets, curatedEndpoints, lastCalledAt, lastUpdated, sampleUrls (top-3 by payers), fetchedAt.
Key-value store SUMMARY: directory total, listings scanned, matched, criteria used.
Use it from code / agents
curl -X POST "https://api.apify.com/v2/acts/yadroo~x402-endpoints/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' -d '{"query":"web search","minPayers":3,"maxPriceUsd":"0.02"}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('yadroo/x402-endpoints').call({ mode: 'domains', minPayers: 5, limit: 100 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("yadroo/x402-endpoints").call(run_input={"tags": ["sec", "edgar"], "includeSchemas": True})items = client.dataset(run["defaultDatasetId"]).list_items().items
MCP: connect https://mcp.apify.com and call the yadroo/x402-endpoints tool with the same JSON — an agent can discover a paid tool, read inputSchema, and pay for it in one loop.
Pricing
Pay per event: $0.001 per run start + $0.001 per item returned (endpoint or domain row). The default run (50 endpoints) costs $0.051; a 500-row market scan $0.501. The whole directory is read on every run regardless of limit (30 requests, ~40–60 s) — cost only depends on rows returned, so use limit and filters.
Limits & FAQ
- Freshness — read live from Coinbase CDP discovery on every run; usage stats are the facilitator's rolling 30-day counters.
- Coverage — only endpoints registered with the Coinbase facilitator / Bazaar. x402 servers using other facilitators are not listed.
- Price accuracy — computed from the raw token amount and the asset's decimals (dictionary above). Unknown assets →
priceUsd: null; setincludeAcceptsto see the raw amount. - Liveness probe — one unpaid request per returned endpoint (GET, or POST with
{}), 10 s timeout, 6 in parallel. A healthy endpoint answers 402;200means it served without payment;404/5xx/timeout means dead or moved. Nothing is paid. - Rate limits / errors — the discovery API is retried 4× with backoff on 429/5xx; the run fails with a clear error if it stays unavailable.
- Memory — pages are shaped and filtered as they stream, so the full 15k scan fits the 512 MB default.
- Roadmap — historical snapshots (price/usage deltas between runs), facilitator-agnostic sources, category normalisation.
Made by Yadroo — more data actors for agents: wallet-intel · base-token-intel · dexscreener-tokens · coingecko-markets · defillama-protocols · crypto-news