{"uid":"cap_YZoy6437NKTTFyvAWKHok","slug":"2s-io-headless-browser-url-renderer-3f6bad3f","name":"2s.io Headless Browser URL Renderer","description":"Render a URL in a real headless browser (JavaScript executed) and return its article content with the clutter stripped — same cleaning + output formats as /api/url/clean, but for client-rendered / SPA pages whose content only appears after JS runs (where a raw HTTP fetch returns an empty shell). `format`: markdown (default), text, both (JSON envelope), html (self-contained reader page, raw text/html), or pdf (typeset reading doc, raw application/pdf). Optional `waitUntil` (load|domcontentloaded|networkidle0|networkidle2, default networkidle2) and `timeoutMs` (1000-15000, default 12000) control how long to let JS settle. Use /api/url/clean instead for server-rendered pages — it is faster and cheaper; only reach for render when JS rendering is required.","url":"https://2s.io/api/url/render","method":"GET","headers":{},"bodySchema":{"type":"object","$schema":"https://json-schema.org/draft/2020-12/schema","required":["input"],"properties":{"input":{"type":"object","required":["type","method","queryParams"],"properties":{"type":{"const":"http"},"method":{"const":"GET"},"queryParams":{"required":["url"],"properties":{"url":{"type":"string"},"format":{"enum":["markdown","text","both","html","pdf"],"type":"string","default":"markdown"},"timeoutMs":{"type":"integer","default":12000,"maximum":15000,"minimum":1000},"waitUntil":{"enum":["load","domcontentloaded","networkidle0","networkidle2"],"type":"string","default":"networkidle2"}}}}}}},"responseSchema":null,"example":{"request":{"input":{"type":"http","method":"GET","queryParams":{"url":"https://example.com","format":"markdown","timeoutMs":12000,"waitUntil":"networkidle2"}}},"response":{"data":{"url":"https://example.com","title":"Example Domain","finalUrl":"https://example.com","markdown":"# Example Domain\n\nThis domain is for use in documentation examples without needing permission. Avoid use in operations.\n\n[Learn more](https://iana.org/domains/example)","truncated":false,"wordCount":19,"sourceBytes":560},"meta":{"cost":{"usd":0.006,"tier":2},"caller":"x402","version":null,"endpoint":"url.render","settlement":{"txHash":"0x277f42ed784ccea60a90d89789438b3a1670ce0a0aca9c9e4a2d74f923e6c933","network":"eip155:8453","success":true}}}},"exampleRequest":{"url":"https://example.com","format":"markdown","timeoutMs":12000,"waitUntil":"networkidle2"},"tags":["x402"],"displayCostAmount":"0.006","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"settled","requiresHandshake":false,"reviewCount":0,"rating":{"score":"0.00","successRate":"1.00","reviews":0,"stars":null,"state":"rated"},"availabilityStatus":"unknown","priceObserved":null,"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.006/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.015","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.015","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_cPQ5K2_JulVebyx5GyQX2","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.015","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Renders a URL in a real headless browser (with JavaScript execution) and returns cleaned article content stripped of clutter, for client-rendered/SPA pages that require JS to produce content.","exampleAgentPrompt":"Fetch the article content from https://example.com/some-react-app-page — it's a client-rendered SPA so you'll need to run JavaScript to get the actual content; return it as markdown and wait until the network is idle.","exampleUseCases":null,"resultDescription":"Returns cleaned, clutter-free article content from the rendered page in the requested format: markdown (default), plain text, a JSON envelope with both, a self-contained HTML reader page (text/html), or a typeset PDF (application/pdf). JavaScript is fully executed before content is extracted.","failureModes":["Timeout exceeded (timeoutMs limit reached before JS settles — try increasing timeoutMs or switching waitUntil strategy)","Invalid or unreachable URL returns an error","Page has no extractable article content (returns empty or minimal content)","Bot detection or anti-scraping measures on the target site block rendering","Page requires authentication and content is behind a login wall"],"whenToPreferThis":"Use this endpoint when the target page is a client-rendered single-page application (React, Vue, Angular, Next.js CSR, etc.) whose content only appears after JavaScript executes — meaning a raw HTTP fetch returns an empty or skeletal HTML shell. If the page is server-rendered and returns full HTML content on initial fetch, use /api/url/clean instead, which is ~10x cheaper (Tier 0). Reserve this endpoint for JS-rendering cases only due to its higher cost and latency.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":2,"lastUsedAt":"2026-07-14T00:16:12.725Z","lastSuccessfullyRanAt":"2026-07-14T00:16:12.725Z","lastHealthCheckAt":"2026-09-15T04:29:19.294Z","isFirstParty":false}