Piloterr

Website Rendering

High-performance browser-based rendering API to scrape any JavaScript-heavy website, bypassing Cloudflare, Akamai, PerimeterX, and DataDome.

Credit cost: 2 credits per call

GET
/v2/website/rendering

Authorization

ApiKeyAuth
x-api-key<token>

Your API key. Include it in the x-api-key header for every request.

In: header

Query Parameters

query*string

A website URL to render using a headless browser. Must include the http or https protocol.

Example:

https://example.com

Notes:

  • For security and ethical reasons, Piloterr applies domain filtering. Contact support to whitelist your target domain if needed.
  • Use this endpoint for JavaScript-heavy pages that require client-side rendering.
wait_in_seconds?number

Number of seconds to wait after page load before returning the rendered HTML. Useful for pages with delayed rendering or animations.

Notes:

  • Increasing this value adds latency to every request. Use only when a page's content loads after a delay.
Default"0"
Range0 <= value <= 30
wait_for?string

A CSS or XPath selector to wait for before returning the rendered HTML. The headless browser will hold the response until the specified element appears in the DOM.

Supported selector types:

  • ID selector: #loading-container
  • Class selector: .content-loaded
  • Combined selector: div.main-content#user-profile

Example:

wait_for=#loading-container

Notes:

  • If the element never appears, the request will time out according to the timeout parameter.
block_ads?boolean

Controls whether the headless browser should block ad requests during rendering.

  • false: Ads are loaded normally (default)
  • true: Ad network requests are blocked, resulting in cleaner HTML and faster rendering

Notes:

  • Blocking ads can speed up rendering on ad-heavy pages and reduce noise in the extracted HTML.
Default"false"
timeout?number

Maximum number of seconds to wait for the page to fully load before returning whatever has been rendered so far.

  • Accepts integer values representing seconds

Notes:

  • Setting a lower timeout may result in incomplete HTML for slow-loading pages.
  • Combine with wait_for to ensure critical elements are present before the timeout fires.
Default"30"
browser_instructions?string

An array of browser automation instructions to execute before returning the HTML. Passed as a JSON array in the POST request body. Allows interaction with the page (clicking, scrolling, typing, etc.) before extracting content.

Refer to the Browser Instructions documentation for the full list of supported actions and payload structure.

Notes:

  • Only available via POST requests.
  • Useful for multi-step flows such as login, form submission, or infinite scroll.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://api.piloterr.com/v2/website/rendering?query=string"
"<!DOCTYPE html><html lang=\"en\"><head><title>Example Domain</title><meta name=\"viewport\" content=\"width=device-width, initial-scale=1\"><style>body{background:#eee;width:60vw;margin:15vh auto;font-family:system-ui,sans-serif}h1{font-size:1.5em}div{opacity:0.8}a:link,a:visited{color:#348}</style></head><body><div><h1>Example Domain</h1><p>This domain is for use in documentation examples without needing permission. Avoid use in operations.</p><p><a href=\"https://iana.org/domains/example\">Learn more</a></p></div>\n</body></html>"
{
  "error": "Bad Request"
}
{
  "error": "Invalid API Key"
}
{
  "error": "Payment required"
}
{
  "error": "Rate limit exceeded for the API key: quota monthly"
}
{
  "error": "Internal Error"
}