{"success":true,"data":{"pages":[{"url":"https://agentsvc.io/","ok":true,"final_url":"https://agentsvc.io/","status":200,"title":"agentsvc.io: 67 web services your AI agent can buy per call","description":"Scrape, screenshot, search, validate and convert. 67 APIs paid per call with USDC on Base via x402. No account, no API key, free sample on every service.","markdown":"x402 · USDC on Base · no API keys\n\n# Web services your agent can buy per call.\n\n67 endpoints from $0.002. Scrape pages to Markdown, take screenshots, search, read PDFs, validate emails, fetch prices. Your agent hits HTTP 402, pays USDC on Base through x402 and gets JSON back. No account, no key, nothing to cancel.\n\n[Try any service free](/docs#try)[llms.txt for your agent](/llms.txt)\n\n[checking services](/api/v1/status \"Live self-test of every service, JSON\")\n\nCharged only on success · on-chain receipt with every response · x402 v1 and v2\n\none paid call, end to end\n\n$ curl -X POST https://agentsvc.io/api/v1/proxy/web-scrape \\\\\n    -H \"Content-Type: application/json\" \\\\\n    -d '{\"url\": \"https://example.com\"}'\n\nHTTP/2 402 Payment Required\n{ \"error\": \"payment\\_required\",\n  \"accepts\": \\[{ \"scheme\": \"exact\", \"network\": \"eip155:8453\",\n                \"amount\": \"4000\", \"asset\": \"USDC\", \"payTo\": \"0x622e…4F27\" }\\],\n  \"hint\": \"This call costs $0.004 USDC. Use @x402/fetch or x402 (python)…\",\n  \"try\\_free\": \"https://agentsvc.io/api/v1/try/web-scrape\" }\n\n$ # an x402 client signs $0.004 USDC and retries automatically\n\nHTTP/2 200 OK\n{ \"success\": true,\n  \"data\": { \"title\": \"Example Domain\", \"markdown\": \"# Example Domain\\\\n\\\\nThis domain is…\",\n            \"word\\_count\": 21 },\n  \"payment\": { \"settled\": true, \"transaction\": \"0x8f3a…c21e\", \"payer\": \"0x51b…9a0\" } }\n\nHand it to your agent\n\n## One URL is enough. The agent figures out the rest.\n\nEvery entry point below is machine-readable and self-explaining, including what to do when a payment is rejected.\n\n[**llms.txt**https://agentsvc.io/llms.txtPaste this URL into your agent's context or system prompt. It contains every service, price, example and the payment steps.](https://agentsvc.io/llms.txt)[**SKILL.md**https://agentsvc.io/SKILL.mdSkill file for Claude Code, OpenClaw and other skill-based agents. Drop it into the skills folder.](https://agentsvc.io/SKILL.md)[**MCP server**https://agentsvc.io/mcp-server.mjsOne file, every service as a tool. Works with Claude Desktop and any MCP client. Pays from an EVM\\_PRIVATE\\_KEY.](https://agentsvc.io/mcp-server.mjs)[**OpenAPI 3.1**https://agentsvc.io/openapi.jsonFor tool generators, LangChain, CrewAI, n8n, OpenAI function calling. Every 402 and header is documented.](https://agentsvc.io/openapi.json)\n\n67 services\n\n## Everything a working agent needs, priced per call.\n\n[GET /api/v1/services ↗](/api/v1/services)\n\nWeb\n\nService\n\nWhat you get\n\nPrice\n\nLatency\n\nTry\n\n[webpage-reader](/services/webpage-reader)\n\nFetch and extract clean readable text from any URL.\n\n$0.006\n\n~3.2 s\n\n[free ↗](/api/v1/try/webpage-reader \"3 free calls per day, uses example input {\\\"url\\\":\\\"https://example.com\\\",\\\"max_chars\\\":4000}\")\n\n[web-search](/services/web-search)\n\nSearch for factual information via DuckDuckGo + Wikipedia.\n\n$0.003\n\n~600 ms\n\n[free ↗](/api/v1/try/web-search \"3 free calls per day, uses example input {\\\"query\\\":\\\"x402 payment protocol\\\"}\")\n\n[news-search](/services/news-search)\n\nSearch recen…","word_count":357,"truncated":true},{"url":"https://agentsvc.io/docs","ok":true,"final_url":"https://agentsvc.io/docs","status":200,"title":"Docs: how agents pay per call with x402 · agentsvc.io","description":"Quickstart, payment protocol (x402 v1 and v2), free trial, error codes and the reference for every service on agentsvc.io.","markdown":"Documentation\n\n# Pay per call. Nothing else to set up.\n\nEvery service is a JSON endpoint behind HTTP 402. If you already use an x402 client, you are done: point it at any endpoint below. Agents can read this whole page as Markdown at [/llms-full.txt](/llms-full.txt).\n\n## Free trial, no wallet\n\nEvery service has a free sample endpoint that runs its example input and returns the real output, so your agent can check format and quality. Your own input goes through the paid endpoint. Limits: 3 calls per service per day, heavy services (screenshot, PDF, OCR, scrape, resize) 1, 20 per IP in total. Send an empty body or the example input.\n\ncurl -X POST https://agentsvc.io/api/v1/try/web-scrape \\\\\n  -H \"Content-Type: application/json\" \\\\\n  -d '{\"url\":\"https://example.com\"}'\n\n# GET works too and uses the example input:\ncurl https://agentsvc.io/api/v1/try/weather\n\nThe response carries `trial.remaining_today` and `paid_endpoint`. Hitting the limit returns 429 with `resets_at`.\n\n## Quickstart with a wallet\n\nYou need an EVM private key whose address holds USDC on Base mainnet (chain 8453). No ETH is needed; the facilitator pays gas. Then:\n\nJavaScriptPythonMCP\n\ncopy\n\nnpm i @x402/fetch @x402/evm viem\nimport { wrapFetchWithPayment, x402Client } from \"@x402/fetch\";\nimport { registerExactEvmScheme } from \"@x402/evm/exact/client\";\nimport { privateKeyToAccount } from \"viem/accounts\";\nconst client = new x402Client();\nregisterExactEvmScheme(client, { signer: privateKeyToAccount(process.env.EVM\\_PRIVATE\\_KEY) });\nconst payFetch = wrapFetchWithPayment(fetch, client);\nconst res = await payFetch(\"https://agentsvc.io/api/v1/proxy/web-scrape\", { method: \"POST\", headers: { \"Content-Type\": \"application/json\" }, body: JSON.stringify({ url: \"https://example.com\" }) });\nconsole.log(await res.json());\n\nSwap the URL for any endpoint from the [reference](#reference). The client handles 402, signing and retry. The 200 response contains `data` and `payment.transaction`.\n\n## Payment protocol (x402 v1 and v2)\n\nOne request without payment returns 402. We answer both protocol versions at once, so any x402 client works:\n\n-   **x402 v2**: header `PAYMENT-REQUIRED` = base64 JSON with `accepts[0]` = {scheme: exact, network: eip155:8453, amount, asset, payTo, maxTimeoutSeconds, extra}. Pay by sending `PAYMENT-SIGNATURE`.\n-   **x402 v1**: JSON body with `accepts[0]` = {scheme: exact, network: base, maxAmountRequired, resource, asset, payTo, extra}. Pay by sending `X-PAYMENT`.\n\nPOST https://agentsvc.io/api/v1/proxy/ip-lookup   {\"ip\":\"8.8.8.8\"}\n\nHTTP/2 402\nPAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6MiwicmVzb3VyY2Ui…   (x402 v2)\n{\n  \"x402Version\": 1,                                   (x402 v1)\n  \"error\": \"payment\\_required\",\n  \"accepts\": \\[{ \"scheme\": \"exact\", \"network\": \"base\", \"maxAmountRequired\": \"2000\",\n                \"asset\": \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n                \"payTo\": \"0x622efA6Ceb83a5b6EdBC931332f4db68B7f74F27\",\n                \"maxTimeoutSeconds\": 300, \"extra\": { \"na…","word_count":363,"truncated":true}],"ok_count":2,"failed_count":0,"fetched_at":"2026-10-06T15:16:31.967Z"},"trial":{"free":true,"used_example_input":true,"input_used":{"urls":["https://agentsvc.io/","https://agentsvc.io/docs"],"max_chars":3000},"remaining_today":0,"resets_at":"2026-10-07T00:00:00.000Z","note":"Real output for the example input. The paid endpoint returns the same format for your own input."},"paid_endpoint":"https://agentsvc.io/api/v1/proxy/web-read-batch","price_usdc":0.008,"payment":"x402, USDC on Base mainnet, no account needed","docs":"https://agentsvc.io/docs"}