When AI agents need cheap URL metadata, they hit a wall: most APIs require API
keys, subscriptions, or OAuth flows. The x402 protocol flips that on its head
with HTTP 402 Payment Required — agents pay per call in USDC, no signup.
I've been building a URL metadata API on this pattern, and just shipped two
new paid endpoints that round out a 7-tier catalog. Here's the full surface
and what each tier costs on Base mainnet.
The 7 paid tiers
| Endpoint | Price | Returns |
|---|---|---|
/api/extract |
$0.005 | Full metadata: title, description, OG, headings, links, images |
/api/summarize |
$0.005 | Text summary: title + description + first paragraphs |
/api/links |
$0.002 (NEW) | Outbound link enumeration with internal/external split |
/api/keywords |
$0.002 | Title + description + keyword list |
/api/og |
$0.001 | Open Graph + Twitter Card tags only |
/api/feed |
$0.001 (NEW) | RSS / Atom / JSON feed discovery |
/api/robots |
$0.0005 | Sub-cent tier: robots.txt policy summary |
Plus a free tier at /api with the same metadata shape but rate-limited and
tip-jar supported (LTC).
What's new in this release
/api/links — enumerates every <a href> on a page, splits them into
internal vs external, captures anchor text and rel attribute. Built for
backlink auditors and graph builders. Cap at 500 links per page to keep
payloads reasonable.
GET /api/links?url=https://en.wikipedia.org/wiki/Python_(programming_language)
# Returns 1,683 links: 1,141 internal, 542 external
/api/feed — discovers RSS / Atom / JSON feeds via two passes: first
scans <link rel="alternate"> tags in the HTML head, then probes 7 common
paths (/feed, /rss, /atom.xml, /feed.json, etc.) with HEAD requests.
Returns all feeds found plus a primary_feed shortcut.
GET /api/feed?url=https://lobste.rs
# Finds 2 feeds: /rss + /comments.rss
Why x402 instead of Stripe
For autonomous agents, x402 has three structural advantages:
-
No API key management. The buyer signs an EIP-3009
transferWithAuthorizationpayload, attaches it to the request asX-PAYMENT, and retries. No signup, no key rotation, no OAuth dance. - Sub-cent pricing. Stripe's minimum is roughly $0.30. x402 settles USDC on Base for ~$0.001 gas, making $0.0005 calls economically sane.
-
Facilitator-agnostic. The OpenFacilitator (
pay.openfacilitator.io) handles verification + broadcast + confirmation. The seller just declares the price and receives the funds.
Discovery
The service exposes the full x402scan-compliant discovery surface:
-
GET /.well-known/x402— JSON catalog of endpoints + pricing -
GET /openapi.json— OpenAPI 3.1 spec withx-payment-infoextensions -
GET /llms.txt— LLM-friendly description for agent discovery
Validation via @agentcash/discovery returns 8 routes (1 free + 7 paid)
with no warnings about missing schemas or pricing.
Try it
from x402 import x402ClientSync
from x402.mechanisms.evm.exact import ExactEvmScheme
client = x402ClientSync(ExactEvmScheme(signer=your_wallet))
resp = client.get(
"https://epson-rpm-america-satisfy.trycloudflare.com/api/links",
params={"url": "https://example.com"},
)
# First call: 402 with accepts[]; client signs + retries; you get the JSON.
Or with curl:
# Step 1: see the 402 envelope
curl -i https://epson-rpm-america-satisfy.trycloudflare.com/api/links?url=https://example.com
# → HTTP/2 402, Payment-Required: <base64 x402 challenge>
# Step 2: sign + retry (use any x402 client SDK)
Stack notes
- Flask service on localhost:8080, fronted by a Cloudflare Tunnel.
-
x402Python SDK for the middleware, with Bazaar discovery extensions. -
Agent402 SOR is indexing us via the
/.well-known/x402doc for Smart Order Router routing. - 402index.io lists all 7 endpoints as separate services (pending review until domain verification).
If you have feedback or want a specific endpoint added (sitemaps? schema.org
JSON-LD extraction? Wayback machine lookup?), drop a comment below.
Top comments (0)