documentation

API reference

111 read-only endpoints across 11 services, $0.002 – $0.005 per call in USDC on Base, Polygon, Arbitrum, Monad or Solana. No account, no OAuth, no subscription — you pay per call, starting at $0.002.

payable on:BasePolygonArbitrumMonadSolana
base urlhttps://fetcher.sh
methodGET · JSON response

Quick start

Two ways to pay, same endpoints and prices. Prepaid credits are simplest for code; x402 is for agents that hold a wallet.

1 — with prepaid credits
curl -H 'Authorization: Bearer bby_live_...' \
  'https://fetcher.sh/api/twitter/search?query=x402'

Get a key at /topup — your first top-up creates it (minimum $1, shown once).

2 — pay per call with x402
# call without payment to inspect the 402 challenge
curl -i 'https://fetcher.sh/api/twitter/search?query=x402'
# HTTP/1.1 402 Payment Required
# payment-required: <base64 payment requirements>

Sign the requirements from the payment-required header and retry with the signed payload. Libraries such as @x402/fetch do the whole loop automatically — see /skill.md.

Authentication

There are no accounts. Either a signed payment or an API key authenticates the request.

Credits API key

Send Authorization: Bearer bby_live_…. Each call debits your balance. Keys are stored hashed and shown once — a lost key can only be rotated, at /topup.

x402 payment

No key at all. The signed USDC authorization in X-Payment is the credential. Every 402 lists one option per chain, so pay from whichever you already hold. Gas is sponsored, so no native token is needed.

accepts:BasePolygonArbitrumMonadSolana

Check a balance any time with GET /api/credits/balance and the same Bearer header.

Response format

Every endpoint returns the same envelope, and the HTTP status mirrors the status field. Upstream payloads arrive untouched in data.

200 OK
{
  "status": 200,
  "message": "ok",
  "data": { }
}

Errors

400A parameter is missing or invalid. The message names it.
401Unknown or revoked API key.
402Payment required — either the x402 challenge, or message topup_required when a prepaid balance is exhausted.
404The path is not a priced endpoint.
502The upstream source failed or was unreachable.

Limits & refunds

There are no rate limits and no quotas — your balance, or your wallet, is the only ceiling. Payment settles before delivery, so a failed upstream call is not refunded; at these prices a lost call costs a fraction of a cent, and the same trade-off applies to both payment methods.

MCP server

Using Claude Desktop, Cursor, or another MCP client? Add the remote server and your agent can search the catalog for free and pay only when it fetches.

mcp client config
{
  "mcpServers": {
    "fetcher": {
      "url": "https://fetcher.sh/mcp",
      "headers": { "Authorization": "Bearer bby_live_..." }
    }
  }
}

Drop the header to pay per call with x402 instead. All 16 tools are listed on the home page.

Endpoint reference

Click any endpoint to see its parameters and try it — the console builds the URL and opens the payment page, or calls it directly when you paste an API key. Path parameters are shown as :name.

Twitter / X15 endpoints · $0.002 – $0.005

/twitter

YouTube15 endpoints · $0.005

/youtube

TikTok13 endpoints · $0.004

/tiktok

Instagram16 endpoints · $0.004

/instagram

Reddit15 endpoints · $0.002

/reddit

Google Search1 endpoints · $0.005

/google

Google Maps4 endpoints · $0.005

/google-maps

Google News12 endpoints · $0.005

/google-news

Google Play7 endpoints · $0.003

/googleplay

App Store9 endpoints · $0.003

/appstore

Yelp4 endpoints · $0.003

/yelp