| pcx_content_type | reference | ||
|---|---|---|---|
| title | REST API timeouts | ||
| sidebar |
|
import { Tabs, TabItem } from "~/components";
Browser Rendering uses several independent timers to manage how long different parts of a request can take. If any of these timers exceed their limit, the request returns a timeout error.
Each timer controls a specific part of the rendering lifecycle — from page load, to selector load, to action.
| Timer | Scope | Default | Max |
|---|---|---|---|
goToOptions.timeout |
Time to wait for the page to load before timeout. | 30 s | 60 s |
goToOptions.waitUntil |
Determines when page load is considered complete. Refer to waitUntil options for details. |
domcontentloaded |
— |
waitForSelector |
Time to wait for a specific element (any CSS selector) to appear on the page. | null | 60 s |
waitForTimeout |
Additional amount of time to wait after the page has loaded to proceed with actions. | null | 60 s |
actionTimeout |
Time to wait for the action itself (for example: a screenshot, PDF, or scrape) to complete after the page has loaded. | null | 5 min |
PDFOptions.timeout |
Same as actionTimeout, but only applies to the /pdf endpoint. |
30 s | 5 min |
The goToOptions.waitUntil parameter controls when the browser considers page navigation complete. This is important for JavaScript-heavy pages where content is rendered dynamically after the initial page load.
| Value | Behavior |
|---|---|
load |
Waits for the load event, including all resources like images and stylesheets |
domcontentloaded |
Waits until the DOM content has been fully loaded, which fires before the load event (default) |
networkidle0 |
Waits until there are no network connections for at least 500 ms |
networkidle2 |
Waits until there are no more than two network connections for at least 500 ms |
For pages that rely on JavaScript to render content, use networkidle0 or networkidle2 to ensure the page is fully rendered before extraction.
You can set multiple timers — as long as one is complete, the request will fire.
If you are not getting the expected output:
- Try increasing
goToOptions.timeout(up to 60 s). - If waiting for a specific element, use
waitForSelector. Otherwise, usegoToOptions.waitUntilset tonetworkidle2to ensure the page has finished loading dynamic content. - If you receive a
422error, refer to 422 Unprocessable Entity.