Web pages, machine-readable, $0.01 a call.
Agent Extract is a pay-per-call API built for AI agents. Your agent sends a URL, pays $0.01 in USDC over the x402 protocol, and gets back the title, description, headings, clean main text, markdown and links of that page. No account, no API key, no invoice.
$ curl -X POST /api/public/extract -d '{"url":"https://example.com"}' HTTP/1.1 402 Payment Required {"accepts":[{"scheme":"exact","network":"base","maxAmountRequired":"10000"}]} $ curl -X POST /api/public/extract -H "x-payment: <signed>" ... HTTP/1.1 200 OK · settled $0.01 USDC {"title":"...","markdown":"## ...","wordCount":1284}
Paid calls settled
—
USDC earned
—
Success rate
—
Avg latency
—
protocol
How a buying agent uses it
Discover
The agent reads /api/public/discovery and learns the price, the network, the input schema and the output schema — no docs required.
Pay
It POSTs the URL, receives HTTP 402 with x402 payment requirements, signs a USDC authorization for $0.01, and retries with the X-PAYMENT header.
Extract
Payment is verified and settled on-chain by the facilitator, then the page is fetched, cleaned of navigation and ads, and returned as structured JSON, text or markdown.
response
What comes back
- Title, description, canonical URL and site metadata
- Boilerplate-stripped main text — no navs, footers or ad slots
- Markdown rendering of the body for LLM context windows
- Heading outline, link list, word count and reading time
- Quality score so your agent knows when extraction was thin
- Machine-readable error codes for blocked, missing or oversized pages
{
"url": "https://example.com/post",
"title": "How agents pay agents",
"description": "A short primer ...",
"headings": ["Why nanopayments", "The 402 handshake"],
"text": "Clean article body ...",
"markdown": "## Why nanopayments\n\n...",
"links": ["https://x402.org", "..."],
"wordCount": 1284,
"readingTimeMinutes": 6,
"qualityScore": 0.91,
"cached": false
}pricing
One price. Per call.
$0.01
per successful extraction
- Settlement
- USDC on Base, x402 protocol
- Atomic amount
- 10000 (6 decimals)
- Cache window
- 15 min — cached pages serve faster
- Failed calls
- Never charged — errors return 4xx/5xx with a code
- Subscriptions
- None. Pay only for the calls you make.
- Minimum
- None. One call is a valid customer.
optional · nano billing
Prepaid balance
Deposit USDC once over x402, get an API key, and every later call draws $0.01 from the balance — no on-chain settlement per request, so calls are faster and cheaper in gas.
- Packs
- $1 (100 calls) · $5 (500) · $20 (2,000)
- Auth
- Authorization: Bearer ax_…
- Top up
- POST /api/public/topup?pack=1
- Balance
- GET /api/public/balance
- Price per call
- Identical — $0.01
# 1. deposit once (returns your API key)
circle services pay "https://fetchweb.net/api/public/topup?pack=1" \
-X POST --address 0xYOURWALLET --chain BASE
# 2. then just call it with the key
curl -X POST https://fetchweb.net/api/public/extract \
-H "authorization: Bearer ax_..." \
-H "content-type: application/json" \
-d '{"url":"https://example.com"}'quickstart
Integrate in a minute
# 1. discover price + schema
curl $BASE/api/public/discovery
# 2. call it (returns 402 with payment requirements)
curl -X POST $BASE/api/public/extract \
-H 'content-type: application/json' \
-d '{"url":"https://example.com","format":"markdown"}'
# 3. pay and retry with the signed x402 header
curl -X POST $BASE/api/public/extract \
-H 'content-type: application/json' \
-H "x-payment: $SIGNED_X402_PAYLOAD" \
-d '{"url":"https://example.com","format":"markdown"}'Any x402-capable client works, including the Circle agent CLI: circle services pay.