{"uid":"cap_j2nlVhhaAdkVZkawM98vs","slug":"batch-page-reader-e7397a6d","name":"Batch Page Reader","description":"Pass up to 5 URLs (comma-separated) and get each page back as clean text with its title. Renders pages that build their content in the browser, which a plain server-side fetch cannot read at all — so it covers the SPAs, dashboards and app pages that url-extract deliberately refuses. Returns partial success: pages that fail come back in a `failed` list with the reason, and a call where every URL fails is not charged. For a single static page, url-extract is cheaper.","url":"https://402.com.tr/api/x402/web-extract","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method"],"properties":{"type":{"type":"string","const":"http"},"method":{"enum":["GET"],"type":"string"},"pathParams":{"type":"object"},"queryParams":{"type":"object","required":["urls"],"properties":{"urls":{"type":"string","description":"URLs (comma-separated, max 5)"}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}},"responseSchema":null,"example":null,"exampleRequest":null,"tags":["x402"],"displayCostAmount":"0.01","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"probe","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"0.00","reviews":0,"stars":null,"state":"unrated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.01/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.01","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_PHg09sMgZEaVi1_gMYumG","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.01","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Fetches up to 5 URLs and returns each page as clean extracted text with title, including JavaScript-rendered SPAs and dynamic dashboards that server-side fetches cannot read.","exampleAgentPrompt":"Can you fetch and extract the text from these three pages for me: https://app.example.com/dashboard, https://spa.example.com/about, and https://docs.example.com/intro — they're all JavaScript-rendered so a plain fetch won't work.","exampleUseCases":[{"title":"Extract content from SPA product pages","prompt":"Grab the visible text from these five product pages — they're all React apps so you'll need to render them: https://shop.example.com/product/1, https://shop.example.com/product/2, https://shop.example.com/product/3, https://shop.example.com/product/4, https://shop.example.com/product/5."},{"title":"Research batch of competitor landing pages","prompt":"Pull the text content from these competitor landing pages for me: https://competitor1.com, https://competitor2.com, and https://competitor3.com — I need the full page text including any content that loads dynamically."},{"title":"Monitor app dashboard pages","prompt":"Read the content from these two internal dashboard URLs and tell me what text they're showing right now: https://internal.app.com/status and https://internal.app.com/metrics — they render in the browser so a normal fetch won't work."}],"resultDescription":"Returns a list of successfully fetched pages, each with its URL, page title, and clean extracted body text. Pages that could not be fetched appear in a separate 'failed' list with a reason for failure. A call where every URL fails is not charged.","failureModes":["URL is unreachable or returns a non-200 HTTP status — page appears in 'failed' list with reason","Page requires authentication or login — content may be empty or login-wall text","Malformed or non-HTTP URL provided — validation error or failure entry returned","All 5 URLs fail — call is not charged","More than 5 URLs provided — request rejected or truncated","Timeout rendering a heavy JavaScript page — failure entry with timeout reason"],"whenToPreferThis":"Choose this endpoint when you need to extract text from JavaScript-rendered pages (SPAs, React/Vue/Angular apps, dashboards) that a plain server-side HTTP fetch cannot read, or when you need to batch up to 5 URLs in a single call. For a single static HTML page, the cheaper url-extract endpoint is preferable. This endpoint handles partial failures gracefully, so mixed batches of working and broken URLs are safe to submit.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":0,"lastUsedAt":null,"lastSuccessfullyRanAt":null,"lastHealthCheckAt":"2026-09-15T00:49:08.093Z","isFirstParty":false}