{"slug":"spa-dom-to-md-jannioura-workers-dev-9cb9e2","title":"Renders JavaScript-heavy SPA pages in real headless Chromium via Cloudflare Brow","host":"spa-dom-to-md.jannioura.workers.dev","method":"POST","resource":"https://spa-dom-to-md.jannioura.workers.dev/","category":"code","description":"Renders JavaScript-heavy SPA pages in real headless Chromium via Cloudflare Browser Rendering, waits for network-idle / selector-ready, strips nav/footer/script chrome, and serializes the fully-rendered DOM into clean, LLM-ready Markdown.","price_listed":0.03,"price_asked":0.03,"state":"answering","state_label":"Answering","checks_7d":1,"answered_7d":1,"latency_ms_median":270,"reported_calls_30d":5,"reported_payers_30d":1,"networks":["eip155:8453"],"badge":"unverified","paid_checks_7d":0,"paid_ok_7d":0,"example_input":{"body":{"url":"https://example.com"},"bodyType":"json","method":"POST","type":"http"},"output_schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"properties":{"markdown":{"default":true,"description":"Return Markdown (true) or raw rendered HTML (false).","type":"boolean"},"strip_selectors":{"description":"Extra CSS selectors to remove from the rendered DOM before extraction.","items":{"maxLength":200,"type":"string"},"maxItems":20,"type":"array"},"url":{"description":"Public https URL of the page to render.","format":"uri","type":"string"},"wait_for_selector":{"description":"Optional CSS selector to wait for before extraction.","maxLength":200,"type":"string"},"wait_ms":{"default":2000,"description":"Extra settle time after load, in milliseconds.","maximum":15000,"minimum":0,"type":"integer"}},"required":["url"],"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"properties":{"cached":{"description":"True if served from the KV render cache.","type":"boolean"},"content_bytes":{"type":"integer"},"final_url":{"description":"URL after redirects.","type":"string"},"html":{"description":"Rendered HTML (present when request markdown is false).","type":"string"},"http_status":{"type":"integer"},"markdown":{"description":"Rendered page as Markdown (present when request markdown is true, the default).","type":"string"},"render_ms":{"type":"integer"},"title":{"type":"string"},"url":{"type":"string"}},"required":["url","final_url","http_status","title","content_bytes","render_ms"],"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"},"history":[{"day":"2026-09-24","reachable":true,"status":402,"valid_402":true,"asked_usdc":0.03,"price_match":true,"latency_ms":270,"error":null}],"description_full":"Renders JavaScript-heavy SPA pages in real headless Chromium via Cloudflare Browser Rendering, waits for network-idle / selector-ready, strips nav/footer/script chrome, and serializes the fully-rendered DOM into clean, LLM-ready Markdown.","last_updated":"2026-09-23T19:16:12.803Z","schemes":["exact"]}