Skip to content
Merged
Changes from 13 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions src/content/docs/browser-rendering/reference/timeouts.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
---
pcx_content_type: reference
title: REST API timeouts
sidebar:
order: 5
---
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` | Time until page load considered complete: <br />`load` = full page load. <br />`Event.domcontentloaded` = the `DOMContentLoaded` event has fired. <br />`Event.networkidle0` = there are no active network connections for at least 500 ms. <br />`Event.networkidle2` = there are no more than two active network connections for at least 500 ms. | — | — |
| `goToOptions.waitUntil` | Time until page load considered complete:<br><ul><li>`load` – Full page load</li><li>`domcontentloaded` – `DOMContentLoaded` event fired</li><li>`networkidle0` – No active network connections for ≥ 500 ms</li><li>`networkidle2` – ≤ 2 active network connections for ≥ 500 ms</li></ul> | — | — |
| `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](/browser-rendering/rest-api/pdf-endpoint/). | 30 s | 5 min |

## Notes and recommendations
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, use `goToOptions.waitUntil` set to `networkidle2` to ensure the page has finished loading dynamic content.
Loading