Data / Agentic x402
Data your agent can buy on its own.
x402 is HTTP status 402 Payment Required, made real. Point an x402-capable agent at any ParseData endpoint and it settles a per-request USDC payment on Base or Solana in-band — no signup, no key, no card, no human. The response comes back with a settlement receipt attached. The same 60 endpoints, the same signed data — priced in stablecoin, gated by a wallet instead of an account.
Not a developer, just want the leads? Start on the homepage — build a Parse in plain English and we deliver matches to your inbox, no code.
Why x402
No account is the feature
Autonomous
An agent needs one thing to pay: a funded USDC wallet on Base or Solana. No onboarding form, no key to store, no monthly invoice to reconcile. It discovers a resource, pays for it, uses it.
Priced per request
A single-record lookup, screen, or dossier quotes its flat band price. A list or feed pull is priced per row — x402 is prepaid, so the 402 challenge quotes the requested page size at $0.05/row (a 25-row page = $1.25 = 1,250,000 atomic USDC units). Either way the agent knows the exact cost before it commits.
Provable both ways
The agent gets a settlement receipt; the response body carries our signed _meta attestation of source and vintage. Payment proof and data provenance in one round trip.
The flow
One worked 402 challenge
Here is a real exchange against a live endpoint. The client makes an unpaid request; the gateway answers 402 with a PAYMENT-REQUIRED header (base64 of the v2 challenge) advertising both a Base and a Solana USDC option; the client picks one, signs the matching USDC transfer (EIP-3009 on Base, an SPL transfer on Solana) and retries with a PAYMENT-SIGNATURE header; the gateway verifies and settles through the same CDP facilitator and returns the data plus a PAYMENT-RESPONSE receipt.
Step 1 — unpaid request
curl -i "https://api.govparse.io/v1/carriers/80321"HTTP/1.1 402 Payment Required
PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6Miwi… (base64 of the JSON below)
{
"x402Version": 2,
"error": "payment_required",
"resource": {
"url": "https://api.govparse.io/v1/carriers/80321",
"description": "What does the FMCSA census record show for this USDOT number?",
"mimeType": "application/json"
},
"accepts": [{
"scheme": "exact",
"network": "eip155:8453", // Base mainnet
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // native USDC
"payTo": "0x3873d15CF3209c32aaA8d9AA542164E658567129", // govparse Base payTo
"amount": "10000", // 0.01 USDC (6 decimals)
"maxTimeoutSeconds": 300,
"extra": { "name": "USD Coin", "version": "2" }
}, {
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", // Solana mainnet
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", // USDC SPL mint
"payTo": "BdcZbENFdEyEUMqv9pnRMUnn1Yyeyo2dCMbYXbJ3LmaB", // govparse Solana payTo
"amount": "10000", // same 6-decimal atomic price
"maxTimeoutSeconds": 300,
"extra": { "feePayer": "<CDP facilitator fee payer>" }
}],
"extensions": { "bazaar": { /* route template, input schema, output example */ } }
}Step 2 — signed payment, retried
# with @x402/fetch the wrapper does this automatically; the header decodes to:
{
"x402Version": 2,
"payload": {
"authorization": {
"from": "0xPayerWallet", "to": "0x3873d15CF3209c32aaA8d9AA542164E658567129",
"value": "10000", "validAfter": "0", "validBefore": "1784179774",
"nonce": "0x…32-bytes"
},
"signature": "0x…65-bytes" // EIP-3009 transferWithAuthorization
},
"accepted": { /* the challenge requirement, echoed verbatim */ }
}HTTP/1.1 200 OK
PAYMENT-RESPONSE: eyJzdWNjZXNzIjp0cnVlLCJ0cmFuc2FjdGlvbiI6IjB4… (base64 receipt)
X-PAYMENT-RESPONSE: (same, alternate header name)
{
"rows": [{ "usdot": 80321, "legal_name": "OLIVER TIRE & RUBBER CO", "phy_state": "CA",
"operating_status": "I", "source_vintage": "2026-07-16" }],
"total_matched": 1,
"_meta": { "dataset": "fmcsa", "vintage": "2026-07-16", "scheme": "hmac-sha256-v1",
"signature": "b91c…" }
}
# receipt decodes to { "success": true, "transaction": "0x…", "network": "eip155:8453", "payer": "0xPayerWallet" }Payment settles before execution, and the receipt is returned on both success and settled-failure paths, so the payer always holds proof of the settle outcome. The wire format is x402 v2 verified against @x402/core / @x402/fetch — a standard client “just works” against these endpoints.
Discovery
Findable without being told
x402 Bazaar
LIVEAll 60 endpoints have settled real x402 payments, so the Coinbase CDP facilitator indexes them into its public discovery API. Each 402 challenge embeds an extensions.bazaar block — route template, input schema, output example — which becomes the listing an agent reads to plan a call. A daily warmer keeps them from aging out of the 30-day idle window.
curl -s "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources?limit=500" \
| grep -o 'api.govparse.io[^"]*'MCP registry
LIVEThe gateway is published to the official Model Context Protocol registry as io.govparse/gateway, with the streamable-HTTP endpoint at https://api.govparse.io/mcp. An MCP client lists the 60 source tools plus the higher-level Parse tools (list_industries, build_parse free; get_leads, enrich_contact paid) for free. A paid tools/call takes either an x-api-key (billed to your account) or an in-band x402 USDC payment for keyless agents — same contract as the raw endpoints. Downstream aggregators (PulseMCP, Smithery) pick the entry up from the registry.
curl -s https://api.govparse.io/mcp -X POST \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'Prefer an account and a monthly invoice over per-request USDC? The same endpoints take a metered API key — see the metered API and pricing.
Looking for easy?
These pages are the raw developer and agent surface — pull data and run Parses per call. If you just want sales leads delivered without writing code, the SaaS product does the plumbing for you.