Guide · checked 2026-10-19 · about 5 minutes

How does an x402 endpoint get listed in the Bazaar? (And are your first payers real?)

Quick answer: declare extensions.bazaar metadata, check the route with Coinbase's free validate endpoint, then complete one paid call that settles through the CDP Facilitator. Coinbase's Get discovered docs say indexing runs after that settlement, takes up to 15 minutes, and that verify alone is not enough. We validated three of our own live endpoints on 19 October 2026: all three passed every required check, and none of them is in the Bazaar.

The problem: a valid 402 can still be invisible

The Bazaar is where agents look up paid APIs at runtime. If your route is not in it, agents that search the Bazaar will not find it. The catch is that being correct is not what puts you there. A payment settled through the CDP Facilitator does. Sellers who settle through another facilitator, or who verify payments themselves, can pass every check and still not appear, and nothing tells them why.

1. What we tested

We ran Coinbase's validate endpoint against three of our live paid routes, then searched the catalog for each of them.

EndpointValidate resultIn Bazaar search?
x402 Seller Kit file download ($29)valid: true, outcome accepted, every required check passedNo
Solo Newsletter OS file download ($39)valid: true, outcome accepted, every required check passedNo
Base USDC balance lookup ($0.01)valid: true, outcome accepted, every required check passedNo

The validator's response also returns index: null for each of them, and none of the three URLs appears in the catalog's list endpoint. The two file stores have facilitator settlement switched off (buyers pay from a wallet and claim the file), so a CDP settlement never happens and, by Coinbase's rules, they cannot be indexed. That is a trade-off we chose, but it costs Bazaar visibility.

# Free, no API key. Checks reachability, the 402, and your extensions.bazaar block.
curl -s -X POST https://api.cdp.coinbase.com/platform/v2/x402/validate \
  -H 'Content-Type: application/json' \
  -d '{"resource":"https://api.example.com/report","method":"GET"}' \
  | jq '{valid, outcome: .simulation.outcome, failed: [.preflight[] | select(.passed == false) | .check]}'

2. The listing checklist, from Coinbase's docs

  1. Public HTTPS route that returns 402. The payment requirements go in the PAYMENT-REQUIRED header (x402 v2).
  2. Declare extensions.bazaar. CDP's createX402Server adds a minimal declaration for every "METHOD /path" route. With other servers, register the Bazaar extension and supply input schemas and an example yourself (extension spec).
  3. Validate. The validate endpoint needs no API key. Look for valid: true and simulation.outcome: "accepted", and read the advisory checks in preflight.
  4. Keep metadata descriptive. Every resource is screened before and after indexing, and text that reads as an instruction to an agent gets it refused or removed. Validation does not run this check.
  5. Settle one paid call through the CDP Facilitator. On that call, set both paymentPayload.extensions.bazaar and paymentPayload.resource. The facilitator reports the outcome in an EXTENSION-RESPONSES header (base64 JSON): success, processing or rejected with a rejectedReason. No bazaar key means discovery was not submitted.

One trap Coinbase calls out: Bazaar sends your declared example input, or an empty body if you declared none. If your server rejects that request before the x402 middleware runs, it never sees a 402. To see your route the way a client does, run it through our free x402 endpoint checker, and use the listing checker to see which other directories already list it. Building the route first? See adding x402 to Express or Next.js or charging for an MCP tool.

# Is it indexed yet? Search by what your endpoint does, then look for your exact URL.
curl -s 'https://api.cdp.coinbase.com/platform/v2/x402/discovery/search?query=usdc%20balance%20base&type=http' \
  | jq -r '.resources[].resource' | grep -F 'https://api.example.com/report'

No line back does not prove you are unlisted, because search returns only the top matches for a busy query. A validate response with index: null is the clearer sign that a route has not been indexed.

3. Listed is not the same as bought

Coinbase ranks results by real economic use and listing quality over a rolling 30-day window, and says new endpoints rank conservatively until usage builds up. Being featured is an editorial step on top, with requirements including at least 99% measured availability over 30 days and passing the health probe. Endpoints that stop returning 402 are eventually dropped.

For the wider picture of seller income, see how much x402 sellers actually earn.

4. Are your first payers real?

Small sellers posting their first Bazaar income on 18 October 2026 show how hard this is to read:

To check a payer, open its address on a block explorer and filter to USDC transfers it sent. A wallet that has paid hundreds of different addresses within a few days, like the 973 in 4 days SWARM found, is most likely crawling the catalog, not buying from you. Count a buyer when the same wallet comes back, or when it pays more than one of your routes for a reason you can explain.

FAQ

How do I get my x402 endpoint listed in the Coinbase Bazaar?

Deploy the route on a public HTTPS URL, declare extensions.bazaar metadata (schemas and examples for any inputs), check it with the free CDP validate endpoint, make sure the metadata only describes the endpoint and does not instruct agents, then complete one successful paid call through the CDP Facilitator. Coinbase says indexing runs after the settlement and takes up to 15 minutes.

Why is my endpoint not in the Bazaar even though it returns a valid 402?

Most often because no payment has settled through the CDP Facilitator yet: Coinbase documents that verify alone does not index a route. Other causes it lists are metadata that fails JSON Schema validation (look for a bazaar status of rejected in the EXTENSION-RESPONSES header), metadata that fails its prompt-injection screening, and endpoints that validate input before the x402 middleware, so the empty or example request Bazaar sends never reaches the 402.

Is there a free way to check my endpoint before paying for a test call?

Yes. POST the resource URL and method to https://api.cdp.coinbase.com/platform/v2/x402/validate. No API key is needed. A pass returns valid: true and simulation.outcome: accepted. It does not check the metadata content policy, and it does not list you.

How many endpoints are in the Bazaar, and how many get paid?

The CDP discovery API reported 25,578 http resources on 19 October 2026. A third-party count posted the day before put 42,168 paid endpoints in the Bazaar, with 384 having 10 or more paying users in the previous 30 days and 82% of an estimated $24,881 of 30-day spend on fixed-price endpoints going to the top 20 hosts. The two counts use different methods, so treat the ratio, not the exact numbers, as the signal.

My first x402 payments came in. Are they real buyers?

Not necessarily. Sellers have reported first payers that turned out to be a wallet paying hundreds of different addresses within days (a sweeper) or a self-described prober. Open the paying wallet on a block explorer and look at its outgoing USDC transfers: a wallet that has paid hundreds of different addresses within a few days is most likely a scanner, not a customer.

Checklist and ranking rules are from Coinbase's Get discovered docs and the x402 Bazaar extension spec, read on 2026-10-19. Validation and search results are from Coinbase's public endpoints on the same day (about 09:00 UTC). Seller figures are as reported by the sellers in public posts; we did not verify their wallets. Rules change; re-run the commands before relying on them.