Free tier: 100/mo Pro: $29/mo Pay-per-call: $0.002 USDC

Web scraping your agents can pay for.
No signup.

Two ways to use it: get a free API key with an email, or pay $0.002 per scrape in USDC. Schema extraction, Chromium rendering, clean markdown out of the box.

Loading on-chain stats… Verify on Basescan ↗

Two lanes. Pick one.

DataForge is the same scraping engine behind both — a flat-rate API key for humans, and pay-per-call USDC for agents.

Lane 1 · API key

For developers and traditional SaaS users

Sign up with an email, get a key, hit the endpoint. No card required for the free tier.

  • Free — 100 scrapes/month, no card
  • Pro — $29/mo, 25,000 scrapes
  • Dashboard at /dashboard.html for usage + key management
  • Stripe billing for the Pro tier
Get free API key
Lane 2 · x402 (agents)

For autonomous agents and x402 builders

No account. No dashboard. Agents pay each call directly in USDC on Base. Listed on CDP Bazaar.

  • $0.002/call — basic HTTP scrape
  • $0.005/call — Chromium / JS rendering
  • USDC on Base, x402 challenge / X-Payment header flow
  • MCP server: npx -y github:AdametherzLab/dataforge-mcp (publishing this week)
See x402 docs

Three lines, working code

Once you have a key, here's the complete API.

// Scrape a URL — returns HTML body + status + duration const res = await fetch('https://dataforge.adametherzlab.com/api/v1/scrape', { method: 'POST', headers: { 'X-API-Key': 'df_live_...', 'Content-Type': 'application/json' }, body: JSON.stringify({ url: 'https://example.com' }) }); const data = await res.json(); console.log(data.content); // the page HTML console.log(data.duration_ms, data.remaining);

Other endpoints: GET /api/v1/me (account info), GET /api/v1/usage (recent scrapes).

What you get

Fast

Median 200-800ms per scrape. Live HTTP fetch, no queueing.

🔌

One endpoint

POST a URL. Get back status, duration, content, and remaining quota.

🛡️

SSRF-safe

Blocks localhost / private IP addresses automatically. Safe to expose.

📊

Quota tracking

Every request decrements your counter. See remaining in every response.

📜

Request history

Every scrape logged. Pull `/api/v1/usage` to audit your last 50 calls.

💰

Two pricing modes

Flat $29/mo for humans. $0.002 USDC/call for agents. Pick what fits.

Simple pricing

Free tier is real and unlimited in time — use it as long as you stay under 100 scrapes/month. Agents skip pricing tiers entirely and pay per call.

Free

$0/mo
  • 100 scrapes per month
  • 15-second request timeout
  • SSRF protection
  • Request history (50)
  • Community support
Start free

x402 (agents)

$0.002/call
  • No signup, no account
  • USDC on Base per request
  • JS rendering: $0.005/call
  • Listed on CDP Bazaar
  • MCP server (coming this week)
x402 docs

For autonomous agents (x402 mode)

Agents don't have credit cards, can't fill out signup forms, and can't log into dashboards. So we give them a different door: pay per call in USDC, no account required.

POST /api/scrape $0.002 USDC
POST /api/scrape-js $0.005 USDC

How x402 works in 3 steps

1

402 challenge

Agent sends the request. Server replies 402 Payment Required with payment instructions in the response header.

2

Sign USDC transfer

Agent's wallet signs an EIP-3009 USDC transferWithAuthorization for the exact amount. No on-chain submission yet.

3

Resubmit + get 200

Agent retries the same request with the signed payment in the X-Payment header. Facilitator settles on Base. You get scraped data.

The 402 challenge — raw curl

$ curl -i -X POST https://x402.adametherzlab.com/api/scrape \ -H 'Content-Type: application/json' \ -d '{"url":"https://example.com"}' HTTP/1.1 402 Payment Required content-type: application/json payment-required: {"scheme":"exact","network":"base","asset":"USDC", "amount":"2000","recipient":"0x...","nonce":"0x..."} { "error": "payment_required", "price_usdc": "0.002", "docs": "https://x402.adametherzlab.com/" }

Then with @x402/client — three lines

// Mock-only — illustrates the client flow import { X402Client } from '@x402/client'; const client = new X402Client({ wallet, network: 'base', maxPerCall: '0.01' }); const res = await client.fetch('https://x402.adametherzlab.com/api/scrape', { method: 'POST', body: JSON.stringify({ url: 'https://news.ycombinator.com' }) }); const data = await res.json(); // fully scraped, USDC charged automatically

Full Bazaar listing: x402.adametherzlab.com. MCP server: npx -y github:AdametherzLab/dataforge-mcp (publishing this week).

vs. a typical scraping API

We picked the comparisons that actually matter for agent builders. Your favorite vendor probably wins on residential proxies — that's fine, we don't try to compete there (see below).

DataForge Typical scraping API
Free tier 100/mo, no card Trial credits, expire
Pricing model Flat $29/mo OR per-call USDC Credit packs with multipliers
Agent-payable (no signup) $0.002/call via x402
Schema-based JSON extraction
JS rendering (Playwright) ✓ $0.005/call ✓ usually 5× multiplier
MCP server Some
Open about limitations "no residential proxies, no Cloudflare bypass — use Bright Data for that" Often hidden

When NOT to use DataForge

We'd rather lose a wrong-fit customer than try to be everything. Three cases where you should pick something else:

Pick another tool if…

  • You're scraping Cloudflare-protected sites. We don't ship residential proxies or a CF-bypass layer. Bright Data, ScrapingBee, or ScraperAPI are the right call there.
  • You need one-off page lookups. ChatGPT, Claude, and Gemini all browse the web for free. Don't pay $0.002 to scrape one page when you can ask a chatbot.
  • You want a no-code scraper UI. We're an API. Apify and Browse AI have point-and-click flows; we don't.
Use DataForge for: bulk programmatic scraping, agent integrations that need to pay per call, deterministic schema extraction at known cost, and any workflow where you'd rather pay $0.002 than wire up Stripe + a signup form.