# Website Rendering ## Overview | Property | Value | |----------|-------| | **Status** | active | | **Method** | `GET` | | **Endpoint** | `/v1/website/rendering` | | **Base URL** | `https://api.browsersolver.com` | | **Credit Cost** | 2 credits per call | | **Documentation** | https://www.browsersolver.com/library/website-rendering | ## Description Run a managed browser session against a public URL and collect the HTML after client-side scripts finish. Prefer Crawler for static markup; escalate to WebUnlocker on approved hosts when challenges persist. ## Authentication - **Key Name:** `x-api-key` - **Location:** HTTP Header - **Get an API key:** https://app.browsersolver.com/register ## Example Request ```bash curl --location --request GET 'https://api.browsersolver.com/v1/website/rendering' \ --header 'Content-Type: application/json' \ --header 'x-api-key: YOUR_API_KEY' ``` ## Example Response ### Render a JS-hydrated blog post ```json Shipping faster with edge caches | Engineering Notes

Shipping faster with edge caches

After hydration, product metrics and comments appear below.

Nice write-up.
``` ## Documentation ## BrowserSolver fetch tiers Three endpoints retrieve HTML from public pages. Start with the **lowest tier that returns usable content** for your target. | Tier | Endpoint | Cost | Best for | |---|---|---:|---| | 1 | [Website Crawler](/v1/website/crawler) | 1 credit | Server-rendered HTML already present in the HTTP response (blogs, docs, classic catalog pages). | | 2 | [Website Rendering](/v1/website/rendering) | 2 credits | Client-side apps and lazy-loaded UI where JavaScript must run before markup appears. | | 3 | [Website WebUnlocker](/v1/website/webunlocker) | 3 credits | Enterprise bot managers on **BrowserSolver-approved domains** when tiers 1 and 2 still fail. | **Suggested workflow** 1. Probe with **Crawler** when you suspect static HTML (fastest, lowest cost). 2. Move to **Rendering** if the body is a shell, prices load after JS, or you need `wait_for` / POST `browser_instructions`. 3. Reserve **WebUnlocker** for whitelisted retail or marketplace hosts where Rendering keeps hitting challenges. More context: [fetch tier comparison](https://www.browsersolver.com/blog/website-crawler-vs-rendering-vs-webunlocker). ## What Rendering does [Website Rendering](/v1/website/rendering) opens the URL inside BrowserSolver's managed headless browser, runs page scripts, waits for the DOM to stabilize, then returns the **post-render HTML**. Reach for it when [Website Crawler](/v1/website/crawler) only returns placeholders because content is injected client-side. Rendering covers most dynamic storefronts and moderate bot friction. Persistent Cloudflare, DataDome, or Akamai challenges on approved hosts may require [Website WebUnlocker](/v1/website/webunlocker). **Pricing:** 2 credits per successful response. ## Quickstart ``` GET https://api.browsersolver.com/v1/website/rendering?query=https://quotes.toscrape.com/js/ ``` POST accepts `browser_instructions` when you must scroll, click, or fill fields before reading HTML. ## Parameters | Parameter | Type | Required | Description | |---|---|---|---| | `query` | string | yes | Public URL with protocol | | `wait_in_seconds` | integer | no | Extra pause after load (0 to 30) | | `wait_for` | string | no | CSS/XPath selector that must appear | | `block_ads` | boolean | no | Strip ad requests during render. Default `false` | | `timeout` | integer | no | Max load wait in seconds. Default `30` | | `browser_instructions` | array | no | POST only: automation steps before capture | ## Response HTML string after JavaScript execution. ## Companion endpoints | Situation | Endpoint | |---|---| | HTML already complete without JS | [Website Crawler](/v1/website/crawler) | | Whitelisted domain still blocked | [Website WebUnlocker](/v1/website/webunlocker) | | Visual capture instead of HTML | [Website Screenshot](/v1/website/screenshot) | ## Tips - Pair `wait_for` with `timeout` on slow SPAs and infinite scroll feeds. - Some production domains need BrowserSolver whitelist approval. - Always sanity-check Crawler first; many sites still ship full HTML without JS. ## Common workflows - Extract data from React, Vue, or Angular apps - Wait for lazy product grids or infinite lists - Drive cookie banners, tabs, or scroll steps via POST instructions - Recover pages that plain HTTP fetch cannot parse