WebExtract — web page to Markdown + structured JSON API
REST API + remote MCP server · pay per call

Any URL to clean Markdown + fixed-schema JSON for AI agents and RAG pipelines

One call returns the page's main content as Markdown, plus product/price, tables and article metadata in the same JSON shape on every site. No account needed to start.

  • 50 free calls/day per IP
  • Credits never expire
  • No charge on failed fetches
  • x402 USDC on 7 chains
  • robots.txt respected

Live demo

Runs a real GET /v1/extract on the free tier (?free=1) from your browser. Each run uses one of your 50 free calls today.

Examples:
Pick an example or paste a public URL, then press Extract.
Ready

The page is fetched as raw HTML (no JavaScript is run yet), so pages that build their content in the browser may come back thin. Same call from a terminal: curl -H "X-Billing: free" "https://api.webextract.dev/v1/extract?url=https://example.com"

What you get in one call

/v1/extract returns all four. /v1/markdown returns Markdown, title and word count only, at a lower price.

markdown

Main content with nav, ads and scripts stripped. Tables come out as GFM tables.

product

Name, brand, SKU/GTIN, price, currency, availability, rating. price_detail lists list/sale/current prices and the matched variant, and is never 0: an unknown price is unresolved with a reason.

tables

Headers and rows, with row_count, column_count and consistent_width checks.

metadata

Title, authors, published/modified dates, canonical URL, language, site name.

Integrate in a few lines

Official SDKs and tool packages are MIT-licensed, open on GitHub. All of them default to the free tier and read WEBEXTRACT_API_KEY when it is set.

# Free tier: 50 calls/day per IP, no key
curl -H "X-Billing: free" \
  "https://api.webextract.dev/v1/extract?url=https://example.com"

# Prepaid key (buy below); Markdown only is cheaper
curl -H "Authorization: Bearer lx_..." \
  "https://api.webextract.dev/v1/markdown?url=https://example.com"
curl -H "Authorization: Bearer lx_..." "https://api.webextract.dev/v1/balance"

MCP setup

Remote streamable-HTTP server at https://api.webextract.dev/mcp, listed in the official MCP Registry as dev.webextract/extract.

Tools

extract_url: Markdown + structured JSON (1 credit). page_markdown: Markdown only (0.4 credit). Both declare an outputSchema and return structuredContent.

Free, no header

MCP calls get 50 free calls/day per IP without any header. For more, add Authorization: Bearer <key> with prepaid credits.

Client configs

Ready-made files for Cursor, VS Code, Claude Desktop, Cline and Claude Code in examples/mcp. Server card: server-card.json.

Pricing — prepaid credits, no subscription

/v1/extract (Markdown + product/price, tables, metadata) = 1 credit. /v1/markdown (Markdown only) = 0.4 credit.

$1
200 credits
$0.005 / credit · try it out
Buy
$5
1,000 credits
$0.005 / credit
Buy
$20
5,000 credits
$0.004 / credit
Buy
$50
15,000 credits
$0.0033 / credit
Buy

Option A — card

Pay via Stripe Checkout. Your API key is shown once on the success page.

  • Credits never expire.
  • No charge on failed fetches (404, timeout, blocked, robots.txt disallowed).
  • Structured JSON at no extra cost.
  • If structured fields come back empty, you're only charged the Markdown rate.

Option B — no account (AI agents): x402

Pay per call in USDC via x402. Requests without a key, payment or X-Billing: free get HTTP 402 with payment requirements (reason: x402_required); x402 clients pay and retry automatically.

Base (recommended)PolygonArbitrum OneAvalanche C-ChainOP MainnetWorld ChainMonad

Not Ethereum mainnet. Settles at the quoted price, only when the request succeeds. Pay one call from your wallet · Discovery: /.well-known/x402

Details

How does the free tier work?

REST: add the X-Billing: free header (or ?free=1) for 50 calls/day per IP, no key needed. The X-Free-Remaining header shows what is left. Without the opt-in, no key and no payment, the API answers HTTP 402 with x402 payment requirements. MCP clients get 50 free calls/day with no header.

What do errors cost?

Nothing. All errors are JSON and never charged: 400 missing or invalid url · 401 bad key · 402 payment required (the body's reason says why) or out of credits · 413 too large · 415 unsupported type · 422 site blocked · 451 robots.txt disallow.

Does it run JavaScript?

Not yet. content_source is raw_html: the HTTP response body, with no JavaScript executed.

Can I test an x402 client without real money?

Yes. Use /sandbox/v1/extract and /sandbox/v1/markdown, or send X-Billing: x402-testnet. Only Base Sepolia test USDC is accepted (from the Circle faucet). Rate limited per IP. See the sandbox docs.

Crawling policy

We identify as WebExtractBot, obey robots.txt, never bypass CAPTCHAs or anti-bot protection, and refuse private network addresses.

Docs · OpenAPI · llms.txt · /.well-known/x402 · GitHub