Limits and plans
Monthly screenshots, requests per minute, timeouts and file retention for each plan.
Plans
| Plan | Price | Screenshots / month | Requests / minute |
|---|---|---|---|
| Hobby | Free | 100 | 10 |
| Starter | $9/month | 2,000 | 30 |
| Growth | $29/month | 10,000 | 60 |
Every plan has every option. Paying yearly saves 20%. Change plans on the billing page; changes apply within a minute.
Monthly screenshots
The monthly limit counts successful, uncached renders. Not counted:
- cache hits,
- failed requests (any error),
- requests rejected by a limit.
The count resets on the 1st of each month at 00:00 UTC. Over the limit, requests fail with screenshots_limit_reached (429), which says when it resets. Your current usage is on the usage page.
Requests per minute
Every authenticated request counts toward the per-minute limit, including cache hits and failed ones. The window is a calendar minute. Over the limit, requests fail with too_many_requests (429) and Retry-After says when the next window starts.
All keys and members of a workspace share its limits.
Timeouts
| Limit | Default | Maximum |
|---|---|---|
timeout (whole request) |
60 s | 90 s, or 600 s with async |
navigation_timeout (page load) |
30 s | 30 s |
delay |
0 s | 30 s |
animation_duration |
3 s | 20 s |
Sizes
| Limit | Value |
|---|---|
| Viewport | 1–7680 px each way, device scale factor up to 5 |
Output resize (image_width/image_height) |
up to 16,000 px |
| Full-page scrolling | stops at 50,000 px |
| Slices | up to 16,000 px each |
File retention
Files from response_type=json, cached renders, slices and stored content are deleted after cache_ttl: 4 hours by default, up to 30 days. Download anything you need to keep.