# SiteRender > Before you render a JavaScript page, check what the server sends. Guides on raw HTML, SSR, hydration data and when a headless browser is worth it. What a page sends, what a browser builds, and which one you actually need. A Teneo Labs project · Built on Live Web Data API. ## Guides - [Do I need a headless browser? A one-minute test first](https://siterender.cc/guides/do-you-need-a-headless-browser): Check what the server sends before you start Chrome. Four cheap tests show whether a page needs a headless browser or a plain fetch already has the text. - [Render SPA to HTML: what each rendering mode sends first](https://siterender.cc/guides/render-spa-to-html): CSR, SSR, SSG, streaming and islands from the reader's side: what lands in the first HTTP response and where Next.js, Nuxt and Astro keep the data. - [Headless browser API explained: options, costs, wait logic](https://siterender.cc/guides/headless-browser-api-explained): Playwright, Puppeteer, Lightpanda, self-hosted headless Chrome or a hosted headless browser API: what each costs to run and how to wait for the right content. - [Extract main content from HTML, raw or rendered](https://siterender.cc/guides/extract-main-content-from-html): How to get the article text out of raw HTML or a rendered DOM: Readability-style extraction, boilerplate removal, shadow DOM, iframes and lazy-loaded content. - [Structured data in HTML: read it before you render](https://siterender.cc/guides/data-already-in-the-html): JSON-LD, Open Graph, microdata, hydration payloads and RSS feeds often hold a page's content already. How to find them and use them instead of rendering. - [Can AI crawlers render JavaScript? What GPTBot sees](https://siterender.cc/guides/can-ai-crawlers-render-javascript): Most AI crawlers do not run JavaScript, so client-only pages look empty to them. Check what they receive and fix it with SSR or prerendering. ## Posts - [Reading Next.js hydration data without a browser](https://siterender.cc/blog/nextjs-hydration-data): Next.js pages often ship their content as JSON in the first response. Where to find __NEXT_DATA__ and the App Router payload, and how to parse them safely. - [Scraper returns empty HTML? Tell the four causes apart](https://siterender.cc/blog/scraper-returns-empty-html): An empty or near-empty response has four common causes: an app shell, a refusal page, compressed bytes and a soft 404. How to tell which one you have. - [View source vs Inspect element: the one that matches curl](https://siterender.cc/blog/view-source-vs-inspect-element): View source shows the HTML the server sent. Inspect shows the live DOM after scripts ran. Only one of them is what a plain HTTP fetch receives. ## Built on Live Web Data API > Live web pages as clean Markdown, text or HTML for AI agents. Send up to 10 URLs per request to POST /v1/contents; failed pages cost nothing. - API base URL: https://livewebdata.com/api - Auth: `Authorization: Bearer ` (keys start with 1337_live_) - OpenAPI: https://siterender.cc/openapi.json - MCP server (Streamable HTTP, same bearer key): https://siterender.cc/mcp ### Docs - [Overview](https://siterender.cc/docs.md): Live Web Data API turns any public URL into clean Markdown, text or HTML — fetched live through our fetch network. - [API reference](https://siterender.cc/docs/api-reference.md): Two endpoints. HTTP 200 is returned even when individual pages failed — check statuses[] for the per-URL outcome. - [Examples](https://siterender.cc/docs/examples.md): Copy-paste examples in cURL, Python and JavaScript. Replace YOUR_API_KEY with a key from the dashboard. - [Automate requests](https://siterender.cc/docs/automation.md): Move from clicking Run in the playground to fetching URL lists from your own code — with rate limits, retries and scheduling handled. - [SDKs](https://siterender.cc/docs/sdks.md): Thin, typed clients for JavaScript/TypeScript and Python — built-in retries, typed errors, one-line page fetches. - [MCP for agents](https://siterender.cc/docs/mcp.md): Use the Live Web Data API as a tool in Claude, Cursor, VS Code and any other MCP client — with one URL and your existing API key. - [No-code recipes](https://siterender.cc/docs/no-code.md): Call the API from n8n, Make or Zapier with each tool's generic HTTP step. Native integrations are on the roadmap. ### Optional - [Full docs in one file](https://siterender.cc/llms-full.txt) - [Postman collection](https://siterender.cc/live-web-data-api.postman_collection.json) - [Example scripts (.zip)](https://siterender.cc/live-web-data-api-examples.zip)