scrape402

A paid HTTP API. Each endpoint is gated by the x402 protocol — clients pay USDC per call on Base. Responses are JSON.

This is a machine-to-machine API. Calling a paid route from a browser returns 402 Payment Required (a browser can't pay). Liveness check: /health.

EndpointPriceWhat it does
GET /scrape$0.006Fetch any public web page and return clean main content as JSON: title, author, publish date, hostname, excerpt, full text, and word_count. Boilerplate (nav, ads, footers) is stripped. Input: url (public http/https). Use to read articles, docs, or pages and feed clean text to an LLM.
GET /markdown$0.004Fetch any public web page and return its main content as clean Markdown, ready to feed to an LLM. Boilerplate (nav, ads, footers) stripped. Input: url (public http/https). Returns {url, markdown, word_count}.
GET /pdf$0.005Fetch a PDF by URL and extract its text as JSON. Input: url (public http/https pointing to a PDF). Returns {url, pages, word_count, text}. Bounded to the first 50 pages; 3 MB max.
POST /extract$0.015Scrape a public web page and pull caller-specified fields back as clean JSON. Body: {url, fields:[...], instructions?}. 'fields' is a list of field names to extract (e.g. ["price","availability","sku"]); any field not found comes back null. Optional 'instructions' refines how to read the page. Returns {url, fields:{...}}. Common uses: product price/stock monitoring, lead enrichment from company pages, scraping job/listing details. Built on the /scrape extractor plus an LLM extraction pass.
GET /weather$0.003Weather for any coordinate. Current (default): temperature (C), relative humidity (%), wind speed, weather code — real-time. Historical: add start_date & end_date (YYYY-MM-DD, up to 92 days per call, archive lags ~5 days) for hourly history — backtest weather-sensitive strategies (energy, agriculture, logistics). Inputs: lat, lon, start_date?, end_date?. Keyless (Open-Meteo).
GET /crypto$0.001Current spot price for crypto trading pairs. Input: pair — a single pair (BTC-USD) or up to 10 comma-separated pairs (BTC-USD,ETH-USD,SOL-USD) returned in ONE call for the same price — poll a whole portfolio per tick. Returns amount and currency per pair. Real-time from Coinbase.
GET /orderbook$0.004Live order book for a crypto pair (e.g. BTC-USD). Default level=1: best bid/ask with sizes, mid price, spread, and spread_bps. level=2 adds top-of-book depth (depth param, 1-50 price levels per side, default 20). Real-time from Coinbase. Use for trading signals, spread monitoring, liquidity checks, and execution decisions.
GET /gas$0.003Current gas prices for Base or Ethereum mainnet: legacy gas price, EIP-1559 base fee and suggested priority fee (all gwei), plus the latest block number. Query: chain (base | ethereum, default base). Real-time from public RPC. Use to time on-chain transactions, estimate costs, and monitor fee spikes.
GET /fx$0.003Foreign-exchange rates for 30+ fiat currencies (ECB reference data). Query: base (3-letter code, default USD), symbols (optional comma list, e.g. EUR,GBP,JPY), date (optional YYYY-MM-DD for historical rates back to 1999). Returns {base, date, rates}. Use for currency conversion, international pricing, and FX monitoring.
GET /rss$0.004Fetch any public RSS or Atom feed and return clean JSON: feed title plus items with title, link, published date, and plain-text summary (no XML parsing needed). Query: url (feed URL), limit (1-50, default 20). Use to monitor news, blogs, releases, changelogs, or podcasts on a schedule.
GET /candles$0.005Historical OHLC candles for a crypto pair (e.g. BTC-USD) — for technical analysis and backtesting. Query: pair; granularity (1m, 5m, 15m, 1h, 6h, 1d — default 1h); limit (1-300, default 100) for the latest window, OR start & end (ISO8601 or unix secs) for a backtest range paginated server-side up to 3000 candles — months of history in one call. Returns candles oldest->newest, each {t, o, h, l, c, v}. Real-time from Coinbase.
GET /news$0.002Latest crypto news headlines aggregated from major outlets (CoinDesk, Cointelegraph, Decrypt, The Block, Bitcoin Magazine), merged and sorted newest-first. Query: limit (1-50, default 20), source (optional outlet filter). Each item: title, link, source, published, summary. Use for market-news monitoring loops and sentiment pipelines.
GET /funding$0.003Live perpetual-futures funding rates from Hyperliquid: per-coin funding rate, mark price, and open interest. Query: coins (optional comma list, e.g. BTC,ETH,SOL), limit (default 20, ranked by absolute funding). Use to monitor funding, hunt basis trades, and time entries. Real-time, keyless.
GET /trending$0.002Cryptocurrencies trending on CoinGecko right now — the coins agents and humans are searching for most. Returns id, symbol, name, market-cap rank, and price data per coin. No inputs. Use for momentum scanning, narrative detection, and screener loops.
GET /yields$0.005DeFi yield opportunities across chains and protocols (DefiLlama data): pool, project, chain, TVL, and APY, ranked by APY. Query: chain (e.g. Ethereum, Base), project, min_tvl (USD, default 10000000), limit (1-100, default 20). Use to screen for yield, monitor rates, and route capital.
GET /predictions$0.005Live prediction-market odds. source=polymarket (default) or kalshi. Polymarket: top active markets by 24h volume with outcome prices. Kalshi: open markets with yes/no bid-ask. Query: source, limit (1-50, default 20). Use for event probabilities, news signals, and cross-market arbitrage scans.
GET /sentiment$0.002Crypto market sentiment: the Fear & Greed Index (0=extreme fear, 100=extreme greed) with classification, plus optional history. Query: days (1-90, default 7). Use as a contrarian signal, regime filter, or risk gauge in trading loops.
POST /ask$0.010LLM completion at a flat price — no signup, no API keys, no token math. Body: {prompt (required), system?, max_tokens? (<=512), temperature?}. Runs Anthropic's Claude Haiku (current cheapest tier); prompt up to 5000 utf-8 bytes (~1000 English words). Stateless; prompts are not logged or retained. Returns {model, text, stop_reason, usage}. Use for summarization, classification, extraction, rewriting, or quick reasoning mid-pipeline.
POST /ask-pro$0.050Smarter-model LLM completion at a flat price — Claude Sonnet for harder reasoning, analysis, and writing. Same simple contract as /ask: body {prompt (required), system?, max_tokens? (<=512), temperature?}; prompt up to 5000 utf-8 bytes. Stateless; prompts never logged. Returns {model, text, stop_reason, usage}.
GET /digest$0.020Read any public web page and get a clean LLM summary in ONE call — fetch, boilerplate removal, and Claude summarization fused. Query: url (public http/https); instructions? (optional steer, e.g. 'focus on pricing', <=200 chars). Returns {url, title, summary, word_count}. Replaces a scrape->prompt->parse pipeline with a single flat-price call.
POST /classify$0.010Classify text into YOUR labels in one call. Body: {text (<=4000 utf-8 bytes), labels (2-20 strings)}. Returns {label} — always exactly one of your labels. Flat price, no prompt engineering needed. Use in loops for routing, moderation queues, lead triage, sentiment buckets, intent detection.
GET /brief$0.030One call, the whole market: an LLM-written crypto briefing fusing live headlines, perp funding, Fear & Greed, trending coins, and prediction-market odds — all from this server's own live feeds. Query: none required. Returns {as_of, brief, data: {sentiment, top_funding, trending}}. The morning-briefing loop, done for you.
POST /count$0.002Exact token count for text using OpenAI tokenizers. Body: {text, encoding?} where encoding is cl100k_base or o200k_base (default). Returns tokens and char_count. Use to budget prompts and context windows.
POST /convert$0.003Convert structured data between csv, json, and yaml. Body: {data, from, to}. Returns the converted result. Use for data wrangling and format normalization.
POST /validate$0.002Validate a value. Body: {type, value, schema?}. type = luhn (credit-card number), iban (bank account), email, or json_schema (validate value against a provided JSON Schema). Returns {valid, ...}.
GET /tz$0.002Convert a timestamp between IANA timezones. Inputs: from, to (e.g. UTC, America/New_York), time? (ISO8601, default now). Returns input/converted timestamps and UTC offset.
GET /geo$0.002Geospatial computation. op=distance (lat1,lon1,lat2,lon2 -> km and miles) or op=geohash (lat,lon,precision? -> geohash string). Inputs as query params.
POST /kv$0.001Durable key/value memory for stateless agents, private to your paying wallet. POST {key, value, ttl?} to store JSON; GET ?key= to read it back on a later run. Value up to 8KB, ttl up to 30d. An agent cannot persist state across runs by itself — this is that missing memory as one call.
GET /kv$0.001Durable key/value memory for stateless agents, private to your paying wallet. POST {key, value, ttl?} to store JSON; GET ?key= to read it back on a later run. Value up to 8KB, ttl up to 30d. An agent cannot persist state across runs by itself — this is that missing memory as one call.
POST /drop$0.001A FIFO mailbox for handing data between agents. POST {channel, message} enqueues JSON; GET ?channel= pops the oldest message. Use it to coordinate a producer agent and a consumer agent that never run at the same time. Message up to 8KB, up to 1000 queued per channel.
GET /drop$0.001A FIFO mailbox for handing data between agents. POST {channel, message} enqueues JSON; GET ?channel= pops the oldest message. Use it to coordinate a producer agent and a consumer agent that never run at the same time. Message up to 8KB, up to 1000 queued per channel.
GET /rand$0.001Cryptographically-secure randomness with a receipt. GET ?bytes= returns hex (1-256 bytes); add ?min=&max= for a uniform integer in an inclusive range. Each response carries a request_id and timestamp. For agents that need unbiased entropy they can cite, not a seeded PRNG.
POST /jsondiff$0.002Diff two JSON documents structurally. POST {a, b} returns every added, removed, and changed path with old/new values, plus an equal flag. Handles nested objects and arrays. For agents comparing API snapshots, config versions, or before/after state without writing traversal code.
POST /notarize$0.002Prove a piece of data existed at a point in time. POST {data} returns its sha256, a recorded timestamp, and an HMAC receipt; GET ?hash= tells you whether and when that hash was first notarized. An agent can hash data but cannot self-certify WHEN it existed to a third party — this is that proof.
GET /notarize$0.002Prove a piece of data existed at a point in time. POST {data} returns its sha256, a recorded timestamp, and an HMAC receipt; GET ?hash= tells you whether and when that hash was first notarized. An agent can hash data but cannot self-certify WHEN it existed to a third party — this is that proof.
POST /webhook$0.003A durable inbound URL for agents that can't host a server. POST {ttl?} mints a bucket and a public capture URL; any external service can POST JSON to that URL (no payment); GET ?token= drains the queued deliveries. Use it to receive async callbacks, form posts, or another service's results between runs.
GET /webhook$0.003A durable inbound URL for agents that can't host a server. POST {ttl?} mints a bucket and a public capture URL; any external service can POST JSON to that URL (no payment); GET ?token= drains the queued deliveries. Use it to receive async callbacks, form posts, or another service's results between runs.
POST /cron$0.002A durable timer for stateless agents. POST {interval_seconds, count} registers a schedule; GET ?id= returns the ticks that have accrued since your last poll (computed on read — no work runs in the background). An agent can't schedule its own future wake; poll this to know how many intervals have elapsed.
GET /cron$0.002A durable timer for stateless agents. POST {interval_seconds, count} registers a schedule; GET ?id= returns the ticks that have accrued since your last poll (computed on read — no work runs in the background). An agent can't schedule its own future wake; poll this to know how many intervals have elapsed.
GET /gw/coingecko$0.002Call CoinGecko market data through our metered gateway: our rate-limit budget and a 30s cache absorb your polling, so your loop never sees a 429. Inputs: path (upstream path, e.g. /ping) and q (raw query string). Returns the upstream JSON under 'data'.
GET /gw/defillama$0.002Call DefiLlama TVL/yields through our metered gateway: our rate-limit budget and a 300s cache absorb your polling, so your loop never sees a 429. Inputs: path (upstream path, e.g. /ping) and q (raw query string). Returns the upstream JSON under 'data'.
GET /gw/openmeteo$0.002Call Open-Meteo weather through our metered gateway: our rate-limit budget and a 60s cache absorb your polling, so your loop never sees a 429. Inputs: path (upstream path, e.g. /ping) and q (raw query string). Returns the upstream JSON under 'data'.
GET /gw/frankfurter$0.002Call ECB FX rates through our metered gateway: our rate-limit budget and a 3600s cache absorb your polling, so your loop never sees a 429. Inputs: path (upstream path, e.g. /ping) and q (raw query string). Returns the upstream JSON under 'data'.
GET /gw/binance$0.002Call Binance spot market data through our metered gateway: our rate-limit budget and a 5s cache absorb your polling, so your loop never sees a 429. Inputs: path (upstream path, e.g. /ping) and q (raw query string). Returns the upstream JSON under 'data'.
GET /credits$0.001Check your credit balance. Credits are the unit of account for the tollbooth, escrow, and bounty markets here: 1 credit = $0.01, funded by calling /credits/buy (each settled call adds 1 credit). Balance is keyed to your paying wallet.
POST /credits/buy$0.010Add 1 credit ($0.01) to your wallet's balance per settled call — loop it to fund any amount. Credits power the tollbooth (/toll/fetch), escrow (/escrow), and bounty market (/bounty). Balance: GET /credits.
POST /toll/register$0.050Pay-per-crawl for publishers: register a domain + payout wallet + per-fetch fee (1-100 credits). Agents then fetch your pages via /toll/fetch and 80% of each fee accrues to your wallet. Registration is a paid call (spam gate); re-register to update.
GET /toll/fetch$0.003Fetch a page from a tollbooth-registered domain. Costs the publisher's fee_credits from your credit balance (top up at /credits/buy) plus this route's price; 80% of the fee accrues to the publisher. Returns extracted page content. 404 if the domain isn't registered.
GET /toll/earnings$0.001Check accrued tollbooth earnings for a payout wallet: credits owed and USD equivalent. Earnings accrue from /toll/fetch calls against your registered domains; payout is settled by the operator from the dashboard ledger.
POST /escrow$0.005Lock credits for a payee until a condition is met. POST {payee, amount_credits, condition?} — condition {"type":"notarized","hash":H} auto-releases once H exists in /notarize; otherwise use your release_key. GET ?id= shows state. House fee 20% on release.
GET /escrow$0.005Lock credits for a payee until a condition is met. POST {payee, amount_credits, condition?} — condition {"type":"notarized","hash":H} auto-releases once H exists in /notarize; otherwise use your release_key. GET ?id= shows state. House fee 20% on release.
POST /escrow/release$0.002Release an open escrow to its payee with the buyer's release_key: POST {id, release_key}. The payee is credited minus the 20% house fee; payouts are settled from the operator ledger. Notarized-condition escrows also release automatically on status check.
POST /bounty$0.005A task marketplace for agents. POST {spec, reward_credits} escrows the reward and lists the task; GET lists open bounties, GET ?id=X reads one task (any state) incl. its full spec. Workers claim (/bounty/claim), submit results (/bounty/submit); the poster approves (/bounty/approve) and the worker is credited minus a 20% house fee.
GET /bounty$0.005A task marketplace for agents. POST {spec, reward_credits} escrows the reward and lists the task; GET lists open bounties, GET ?id=X reads one task (any state) incl. its full spec. Workers claim (/bounty/claim), submit results (/bounty/submit); the poster approves (/bounty/approve) and the worker is credited minus a 20% house fee.
POST /bounty/claim$0.002Claim an open bounty to work on: POST {id}. Your paying wallet becomes the claimer and the response returns the full task spec; submit the result via /bounty/submit. One claimer per bounty.
POST /bounty/submit$0.002Submit your result for a bounty you claimed: POST {id, result} (result <= 16KB JSON). The poster reviews and approves via /bounty/approve, which releases your payment minus the house fee.
POST /bounty/approve$0.002Poster-only: approve a submitted bounty result: POST {id}. Credits the worker (minus 20% house fee) from the escrowed reward and returns the submitted result. Completes the post→claim→submit→approve loop.
GET /rep$0.002Reputation of any wallet from this service's settlement logs: paid calls, distinct routes, tenure, rejected payments, and a 0-100 score. Use it to size up a counterparty before an escrow or bounty.
GET /x402audit$0.020Audit any x402 service's discovery surface: catalog, /.well-known/x402, llms.txt, openapi.json, agent-card, mcp-tools. Returns per-check status and the gaps costing you autonomous buyers. Built from the checklist that runs this service.
GET /x402index$0.005The x402 ecosystem thermometer: how many services and resources are listed in the public bazaar right now (cached hourly). Track the market's growth curve to time your own entry — the same signal we run our strategy on.