Website Screenshot & PDF - Reliable Capture
Pricing
$20.00 / 1,000 screenshot / pdf captureds
Website Screenshot & PDF - Reliable Capture
Capture full-page or viewport screenshots (PNG/JPEG) and PDFs of any URL. Waits for the page to settle, dismisses cookie banners, supports device presets and custom waits. Pay only for successful captures.
Pricing
$20.00 / 1,000 screenshot / pdf captureds
Rating
0.0
(0)
Developer
Constantine
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Capture full-page or viewport screenshots (PNG/JPEG) and PDFs of any URL β with the waiting and cookie-banner handling that make captures actually look right.
A lot of screenshot tools fire too early and hand you a half-loaded page, a spinner, or a giant cookie banner covering the content. This actor waits for the page to settle, dismisses common consent banners, and lets you wait for a specific element before it captures. You pay only for captures that succeed.
Why this actor
| This actor | Bare screenshot tools | |
|---|---|---|
| Page readiness | Waits for networkidle (or your rule) + optional selector | Often captures before content loads |
| Cookie banners | Auto-dismisses common consent banners | Left covering the page |
| Formats | PNG, JPEG, and paginated PDF | Usually PNG only |
| Devices | Desktop + mobile presets, or custom viewport | Fixed size |
| Billing | Pay per successful capture; failures are free | Charged regardless |
Features
- πΌ PNG, JPEG, or PDF. Full-page or viewport screenshots, or a paginated A4 PDF of the page.
- β³ Smart waiting. Choose
load,domcontentloaded, ornetworkidle, and optionally wait for a CSS selector (a chart, a main element) before capturing. - πͺ Cookie-banner dismissal. Best-effort auto-close of common consent/cookie dialogs so they don't cover your shot.
- π± Device presets. Desktop 1920/1366, iPhone, iPad, or a custom width/height.
- π Authenticated pages. Pass cookies to capture pages behind a login (stored encrypted).
- π¬ Actionable errors. Timeouts, unreachable hosts, and missing selectors come back as clear codes, not stack traces.
- πΈ Fair pricing. One charge per successful capture. Navigation errors and timeouts cost nothing.
Input
| Field | Required | Description |
|---|---|---|
url | β | Page to capture (include https://). |
format | png (default), jpeg, or pdf. | |
fullPage | Capture the whole scrollable page (PNG/JPEG). Default true. | |
device | desktop_1920 (default), desktop_1366, iphone, ipad, or custom. | |
width / height | Viewport size when device = custom. | |
waitUntil | load, domcontentloaded, or networkidle (default). | |
waitForSelector | Optional CSS selector to wait for before capturing. | |
delayMs | Extra wait after ready, for late animations (max 30000). | |
dismissCookieBanners | Auto-close consent banners. Default true. | |
jpegQuality | 1β100, for format = jpeg. | |
headers / cookies | Optional custom headers / auth cookies. |
Example β full-page PNG
{ "url": "https://news.ycombinator.com", "format": "png", "fullPage": true }
Example β mobile screenshot, wait for content
{"url": "https://example.com/report","format": "jpeg","device": "iphone","waitForSelector": "#report-ready"}
Example β PDF (A4 print output)
{ "url": "https://example.com/invoice", "format": "pdf" }
PDF uses Chromium's print rendering (paginated A4), not a device-sized screenshot.
Output
The captured file is stored in the run's key-value store (key OUTPUT), and a report is pushed to the dataset:
{"type": "capture_report","status": "SUCCEEDED","url": "https://example.com","format": "png","assetUrl": "https://api.apify.com/v2/key-value-stores/.../records/OUTPUT.png","widthPx": 1920,"heightPx": 1063,"bytes": 84213,"durationMs": 3120}
Error reference
| Code | Meaning |
|---|---|
INVALID_URL | URL missing or not http(s) |
SSRF_BLOCKED | Target is a private/internal address (blocked by default) |
NAVIGATION_TIMEOUT | Page didn't finish loading in 60s |
DNS_OR_UNREACHABLE | Host couldn't be reached |
SELECTOR_TIMEOUT | waitForSelector never appeared |
OUTPUT_TOO_LARGE | Full-page height over the limit (raise maxFullPageHeightPx) |
HTTP_ERROR | Page returned 4xx/5xx and failOnHttpError is on |
RENDER_FAILED / NAVIGATION_FAILED | Rendering or navigation error |
Pricing
One pay-per-event charge per successful capture. Failed captures (timeouts, unreachable hosts) are free.
FAQ
The screenshot is missing content that loads late β what do I do?
Use waitUntil: networkidle (the default), add a waitForSelector for the element you care about, or a small delayMs.
Can it capture pages behind a login?
Yes β pass session cookies (Playwright format). They're stored as a secret.
Full-page or viewport?
fullPage: true captures the entire scrollable page; set it to false for just the visible viewport.