API Docs/Browser Automation
POST

JS HTML Renderer API

Free Public API

Execute client-side JavaScript, hydrate SPAs (React, Vue, Angular), and extract the fully rendered DOM.

Try in Live Web Tool
POSThttps://api.headless-lender.com/api/v1/render
Public: No Key Needed•Highest Free Quota: 1,000 Req/Mo + 10h Browsers (No Card Required)

Overview & Architecture

Execute complex client-side Single Page Applications (SPAs) in an isolated cloud Chromium instance. Waits for dynamic network requests, async API hydration, or specific DOM selectors before returning the fully rendered HTML.

Executes client-side React, Vue, Angular, and Svelte bundles
Waits for network idle or custom CSS selector appearance
Extracts full outerHTML or targeted element DOM
Anti-bot stealth mode bypasses typical headless blocks
Playwright Execution & Valkey Caching Pipeline

Because this endpoint utilizes full headless Chromium rendering, dynamic JavaScript and single-page apps (SPAs) are executed completely before conversion:

1. Cold Scrape (Cache MISS)~800ms – 2.5s

Chromium initializes, fetches the URL, executes client JavaScript, resolves DOM mutations, and generates output.

2. Repeat Request (Cache HIT)~5ms – 15ms

Returned instantly from Valkey/Redis cache with header X-Lender-Cache: HIT (15-minute TTL).

Code Integration Examples

Instant Public Endpoint: Zero configuration, no API key needed. Want our highest free quota? Get 1,000 free requests/month + 10 hours of cloud browsers with a free key (No credit card required).
curl -X POST https://api.headless-lender.com/api/v1/render \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://news.ycombinator.com",
    "waitUntil": "networkidle",
    "includeHtml": true
  }'

Headers & Authentication Standard

1. Public Access (No Key)

No Authorization header required. Simply send a JSON POST request. Perfect for quick prototypes, small scripts, and low-volume scraping.

Content-Type: application/json

2. Free API Key (Highest Free Quota)

1,000 Req/Mo Free

Sign up in 10s with no credit card required. Unlocks 1,000 free monthly requests, 600 browser minutes (10 hours), 120 req/min burst limits, and cache-bypass controls.

Authorization: Bearer hl_live_your_api_key_here
Access ModeMonthly QuotaCloud Browser TimeBurst LimitCredit CardAction
Public AnonymousDaily IP Allowance5-min trial sandbox10 req/minNoneInstant (No Setup)
Free Account (Highest Quota)1,000 Req / Month600 Mins (10 Hours)120 req/minZero ($0 forever)Claim Free Key →

Request Body Parameters

FieldTypeRequiredDefaultDescription
urlstringrequired—Target SPA or dynamic URL to render.
waitUntil'domcontentloaded' | 'load' | 'networkidle'optional'domcontentloaded'Lifecycle condition to satisfy before DOM serialization.
waitForSelectorstringoptional—Specific CSS selector to wait for before extraction.
includeHtmlbooleanoptionaltrueInclude the full serialized outerHTML.
extractTextbooleanoptionalfalseAlso return innerText representation.
selectorstringoptional—Clip output to a specific container element.

Response Schema & Example

200 OK — application/jsonDuration: ~800ms (Cold) / ~8ms (Cached)
{
  "url": "https://news.ycombinator.com",
  "title": "Hacker News",
  "content": "<!DOCTYPE html><html><head>...</head><body><div id=\"root\">...</div></body></html>",
  "durationMs": 410
}