{"uid":"cap_1Fyk6ywdoAxmz5vi45jco","slug":"skim-js-render-reader-javascript-rendered-page-to-markdown-517ba3b0","name":"Skim JS-Render Reader — JavaScript-Rendered Page to Markdown","description":"Skim: JS-rendered reader — full headless browser render for SPAs and JS-gated pages; clean markdown ~4x smaller than raw HTML.","url":"https://skim402.com/api/v2/read/js","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"},"queryParams":{"type":"object","required":["url"],"properties":{"url":{"type":"string","description":"The URL of a JavaScript-rendered page (SPA, JS-gated, lazy-loaded). The server performs a full headless browser render before extracting the article."}}}},"additionalProperties":false},"output":{"type":"object","required":["type"],"properties":{"type":{"type":"string"},"example":{"type":"object"}}}}},"responseSchema":{"type":"json","example":{"url":"https://example.com/spa-page","mode":"js","text":"SPA Article\n\nMarkdown extracted after the page's JavaScript hydrated the article body...","finalUrl":"https://example.com/spa-page","markdown":"# SPA Article\n\nMarkdown extracted after the page's JavaScript hydrated the article body.","metadata":{"title":"SPA Article","siteName":"Example SPA"}}},"example":{"request":{"input":{"type":"http","method":"GET","queryParams":{"url":"https://example.com/article"}}},"response":{"url":"https://example.com/article","mode":"js","text":"This domain is for use in documentation examples without needing permission. Avoid use in operations.Learn more","finalUrl":"https://example.com/article","markdown":"This domain is for use in documentation examples without needing permission. Avoid use in operations.\n\n[Learn more](https://iana.org/domains/example)","metadata":{"lang":"en","title":"Example Domain","byline":null,"length":111,"excerpt":"This domain is for use in documentation examples without needing permission. Avoid use in operations.","siteName":null,"publishedAt":null},"fetchedAt":"2026-06-18T05:55:51.837Z","structured":null}},"exampleRequest":{"url":"https://example.com/article"},"tags":["x402"],"displayCostAmount":"0.005","displayCostAsset":"USDC","priceDynamic":false,"priceHint":null,"priceStatus":"priced","priceSource":"settled","requiresHandshake":false,"reviewCount":1,"rating":{"score":"0.75","successRate":"1.00","reviews":1,"stars":"4.0","state":"rated"},"availabilityStatus":"healthy","priceObserved":{"p10Cents":"0.5000","medianCents":"0.5000","p90Cents":"0.5000","minCents":"0.5000","maxCents":"0.5000","p95Cents":"0.5000","sampleCount":1,"varies":false,"failureChargeRate":null},"sessionDeposit":null,"pricing":{"kind":"static","summary":"$0.005/call","primary":{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"},"accepted":[{"kind":"static","protocol":"x402","network":"base","amountUsd":"0.005","per":"call","confidence":"exact"}]},"paymentMethods":[{"uid":"pm_GyIXMugBdQWCFFhF8ffgx","protocol":"x402","methodType":"crypto","chain":"base","mode":"charge","costAmount":"0.005","costPer":"request","priority":0,"asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","unit":"request","depositMicros":null,"planRef":null}],"brandName":null,"brandSlug":null,"brandBaseUrl":null,"brandDocsUrl":null,"whatItDoes":"Fetches a JavaScript-rendered URL using a headless browser, then extracts and returns clean agent-ready markdown content","exampleAgentPrompt":"Pull the full article content from https://example.com/spa-page — it's a JavaScript-rendered single-page app, so it needs a headless browser render — and give me the clean markdown text.","exampleUseCases":null,"resultDescription":"A JSON object containing the extracted markdown content, plain text, page title, site name, the original URL, and the final (post-redirect) URL after JavaScript hydration and rendering.","failureModes":["URL is unreachable or returns a non-2xx status — endpoint may return an error or empty content","Page JavaScript fails to hydrate within the headless browser timeout — partial or empty markdown returned","URL points to a non-article page (e.g. dashboard, login wall) — markdown may be minimal or garbled","Payment of $0.005 USDC not fulfilled via x402 — 402 Payment Required response returned","Invalid or missing url query parameter — request rejected with schema validation error","Headless render times out on extremely slow or complex SPAs — timeout error returned"],"whenToPreferThis":"Use this endpoint specifically when the target URL is a JavaScript-rendered single-page application (SPA), lazy-loaded page, or JS-gated article that cannot be extracted by a simple HTTP GET. If the page uses React, Vue, Next.js, Angular, or similar frameworks and renders content client-side, this JS-render variant is required over a plain HTTP fetch endpoint. Prefer this over static scraping alternatives when content only appears after JavaScript execution.","instructions":null,"reviewSummary":null,"reviewSummaryHighlights":null,"reviewSummaryConcerns":null,"reviewSummaryGeneratedAt":null,"activationCount":1,"lastUsedAt":"2026-08-30T00:21:29.846Z","lastSuccessfullyRanAt":"2026-08-30T00:21:29.846Z","lastHealthCheckAt":"2026-09-15T04:29:19.313Z","isFirstParty":false}