Web data your agent pays for per call. Only when it works.
YouTube search, channels and transcripts, Google Trends and Amazon products over plain HTTPS. Pay in USDC on Base with x402: no signup, no API key, and failed calls are never charged.
Tools and prices
One flat price per successful call, whatever the result size (within each tool's limit). All 5 are live on Base mainnet.
YouTube search
Up to 50 videos per query with title, channel, views, duration and publish date. Filters for sort, upload date and duration.
YouTube channel
The latest videos, Shorts or live streams of one channel (up to 50), with views, durations and channel stats.
YouTube transcript
Captions of one public video as plain text or timestamped segments, with title, channel and language. Optional translation.
Google Trends
Interest over time and by region for one term (or up to 5 compared), plus related queries and topics.
Amazon product
One product by ASIN or URL: price, list price, stock, rating, reviews count, Best Sellers rank, specs and images.
| Tool | Endpoint | Price per call |
|---|---|---|
| YouTube search | GET /v1/youtube/searchscrapemole-api-mainnet.scrapemole.workers.dev | $0.01 USDC |
| YouTube channel | GET /v1/youtube/channelscrapemole-api-mainnet.scrapemole.workers.dev | $0.01 USDC |
| YouTube transcript | GET /v1/youtube/transcriptscrapemole-api-mainnet.scrapemole.workers.dev | $0.005 USDC |
| Google Trends | GET /v1/google-trendsscrapemole-api-mainnet.scrapemole.workers.dev | $0.01 USDC |
| Amazon product | GET /v1/amazon/productscrapemole-api.vercel.app | $0.01 USDC |
How to call it
Standard x402 v2, exact scheme, USDC on Base (eip155:8453). Payments go through the PayAI facilitator, which verifies before the scrape and settles only after a 200.
Call without paying
Any paid endpoint answers 402 Payment Required with the price, the USDC contract and the receiving address, in the PAYMENT-REQUIRED header and the body.
Sign and retry
Your x402 client signs a USDC transfer authorization for that exact amount and repeats the request with a PAYMENT-SIGNATURE header. No gas on your side.
Get data, or pay nothing
200 with JSON: the payment settles. Bad input (400), not found (404), blocked or upstream errors (5xx): nothing settles.
# No payment header: the API answers 402 with the price and where to pay curl -i "https://scrapemole-api-mainnet.scrapemole.workers.dev/v1/youtube/search?q=espresso%20machine%20review&limit=10" HTTP/2 402 content-type: application/json; charset=utf-8 payment-required: eyJ4NDAyVmVyc2lvbiI6MiwiZXJyb3IiOiJQYXltZW50IHJl… (base64 of the same JSON, 6944 chars) { "x402Version": 2, "error": "Payment required", "resource": { "url": "https://scrapemole-api-mainnet.scrapemole.workers.dev/v1/youtube/search?q=espresso%20machine%20review&limit=10", "mimeType": "application/json" }, "accepts": [ { "scheme": "exact", "network": "eip155:8453", "amount": "10000", "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", "payTo": "0xCb535d13C7fC5Fe6C2B88da3f3601B840CCaf8Bc", "maxTimeoutSeconds": 300, "extra": { "name": "USD Coin", "version": "2" } } ] } # Body trimmed: the live response also has resource.description and extensions.bazaar # (input schema and an output example). Captured 11 Oct 2026 18:11 UTC.
// npm i @x402/fetch @x402/evm viem import { wrapFetchWithPaymentFromConfig, decodePaymentResponseHeader } from '@x402/fetch'; import { ExactEvmScheme } from '@x402/evm'; import { privateKeyToAccount } from 'viem/accounts'; // Your agent's own wallet, holding a little USDC on Base. No ScrapeMole account or API key. const account = privateKeyToAccount(process.env.AGENT_PRIVATE_KEY); const pay = wrapFetchWithPaymentFromConfig(fetch, { schemes: [{ network: 'eip155:8453', client: new ExactEvmScheme(account) }], }); // On 402 the wrapper signs the USDC authorization and retries once. const res = await pay('https://scrapemole-api-mainnet.scrapemole.workers.dev/v1/youtube/search?q=espresso%20machine%20review&limit=10'); console.log(res.status, await res.json()); // Settled only on 200; the receipt (tx hash) is in the PAYMENT-RESPONSE header. if (res.ok) console.log(decodePaymentResponseHeader(res.headers.get('payment-response')));
Machine-readable docs
openapi.jsonYouTube and Trends: every endpoint, parameter and price (x-payment-info)openapi.jsonAmazon productllms.txtplain-text guide for LLM agents (Amazon)/.well-known/x402x402 discovery manifest (Amazon)- Terms public, non-personal data only; settled only on HTTP 200
Use it from MCP
Remote MCP server (Streamable HTTP, no auth): https://scrapemole-api-mainnet.scrapemole.workers.dev/mcp. It lists all five tools; payments use the x402 MCP transport: an unpaid tools/call returns isError with the PaymentRequired object, and the paid retry carries the signed payment in params._meta["x402/payment"]. Server card: /.well-known/mcp/server-card.json.
# List the tools (free)
curl -s https://scrapemole-api-mainnet.scrapemole.workers.dev/mcp -H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Write-ups
- How we built a pay-per-call x402 API on the Cloudflare Workers free plan (and only charge on success) dev.to, Oct 2026
Listed on
- x402scan YouTube and Google Trends endpoints
- x402scan Amazon product endpoint
- x402dash YouTube and Google Trends endpoints
- Agent402 YouTube and Google Trends endpoints
- Agent402 Amazon product endpoint
- 402 Index all 5 endpoints, domain-verified
- MCP Registry official MCP Registry entry dev.pages.scrapemole/scrapemole
Why agents can rely on it
01Failed calls are free
The payment settles only on HTTP 200. In our live test run, 4 failing calls (unknown video and channel, missing query, bad time range) cost $0.
02No account at all
No signup, no API key, no subscription. Any wallet with USDC on Base can call it, which is what x402 is for.
03Errors an agent can act on
Every failure is JSON with an error code (INVALID_INPUT, NOT_FOUND, NO_DATA, BLOCKED), charged: false and a plain-English message, so the agent knows whether to fix the input or retry.
04Tested live, numbers published
Each tool page shows our latest live test calls and paid end-to-end checks, straight from the test reports.
Questions
What is x402?
An open protocol that uses the HTTP 402 status code for payments: the server states a price, the client pays with a signed stablecoin authorization in a header, and gets the response. It lets software, including AI agents, pay per request without accounts.
What do I need to start?
A wallet with some USDC on Base and an x402 client library such as @x402/fetch. One cent covers one search, channel or Trends call; a transcript is half a cent.
Can I use it from MCP?
Yes. https://scrapemole-api-mainnet.scrapemole.workers.dev/mcp is a remote MCP server (Streamable HTTP) exposing all five tools. Unpaid tools/call returns the x402 PaymentRequired object; retry with the signed payment in params._meta["x402/payment"] (x402 MCP transport). Same prices, same no-charge-on-failure rule.
When exactly am I charged?
Only when the response status is 200. The facilitator verifies your signature first, we run the request, and settlement happens only after a successful response. Anything else is free.
Do you collect personal data?
No. The tools return public, non-personal data (videos, transcripts of public videos, search trends, product listings) and redact e-mail addresses found in public text. See the terms.
Can I test without real money?
The unpaid 402 response and all docs (/, /openapi.json, /llms.txt, /.well-known/x402, /terms) are free to call.
Need another data source?
Tell us the site and the fields. Popular requests become new endpoints.