Website Screenshot Pro - Full-page, Mobile, Dark & PDF
Pricing
from $2.00 / 1,000 screenshots
Website Screenshot Pro - Full-page, Mobile, Dark & PDF
Capture clean screenshots or PDFs of any URL in bulk. Full-page, mobile device emulation, dark mode, retina, cookie-banner removal, element capture, lazy-load scrolling. Pay only per captured image.
Pricing
from $2.00 / 1,000 screenshots
Rating
0.0
(0)
Developer
Conor Wilson
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Share
Website Screenshot Pro
Capture clean, full-page screenshots or PDFs of any list of URLs, with the fiddly bits handled for you: cookie banners hidden, lazy-loaded images triggered, mobile devices emulated, dark mode supported, retina output, element-only capture.
You pay per captured image (and per PDF if you enable it). Failed pages are reported in the results but are never billed.
What you get
For every URL, one row in the dataset:
| Field | Meaning |
|---|---|
screenshotUrl | Direct link to the image (PNG or JPEG) |
pdfUrl | Direct link to the PDF, when enabled |
url, finalUrl | Requested URL and the URL after redirects |
title, statusCode | Page title and HTTP status |
width, height | Image dimensions in pixels |
ok, error | Whether the capture succeeded, and why not if it did not |
Images and PDFs are stored in the run's key-value store, so you can download them by link, embed them, or pull them via the API.
Why this one
- Cookie banners gone. Hides OneTrust, Cookiebot, Quantcast, Usercentrics, TrustArc, Didomi, Sourcepoint and generic consent pop-ups before capture. Add your own selectors for chat widgets or sticky bars.
- Full page that actually loads. Scrolls through the page first so lazy-loaded images render instead of showing grey boxes.
- Mobile and tablet emulation. iPhone 14 / 14 Pro Max, Pixel 7, Galaxy S9+, iPad Pro 11, iPad Mini, with correct viewport, user agent, touch and scale factor.
- Dark mode, retina, element capture, PDF.
prefers-color-scheme: dark, 2x output, capture a single CSS selector, or save an A4/Letter PDF alongside. - Fair billing. Only successful captures are billed. Set a maximum run cost and the actor stops cleanly at the limit.
Quick start
{"urls": [{ "url": "https://apify.com" }, { "url": "https://news.ycombinator.com" }],"fullPage": true,"format": "png","hideCookieBanners": true}
Mobile dark-mode JPEGs:
{"urls": [{ "url": "https://example.com" }],"device": "iPhone 14","darkMode": true,"format": "jpeg","quality": 85}
Capture just the pricing table and also save a PDF:
{"urls": [{ "url": "https://example.com/pricing" }],"selector": "#pricing","pdf": true,"pdfFormat": "A4"}
Input options
| Option | Default | Notes |
|---|---|---|
urls | required | List of { "url": "..." } objects |
fullPage | true | Whole page vs viewport only |
format / quality | png / 80 | png or jpeg; quality applies to JPEG |
viewportWidth / viewportHeight | 1280 / 800 | Ignored when a device is selected |
deviceScaleFactor | 1 | 2 for retina |
device | none | Phone/tablet emulation |
darkMode | false | Emulates dark colour scheme |
hideCookieBanners | true | Hides common consent pop-ups |
hideSelectors | [] | Extra CSS selectors to hide |
selector | - | Capture only this element |
waitUntil | load | load, domcontentloaded, networkidle |
waitForSelector | - | Wait for this selector before capture |
delayMs | 1000 | Extra wait for animations and late JS |
scrollToBottom | true | Trigger lazy loading before full-page capture |
pdf / pdfFormat | false / A4 | Also save a PDF |
timeoutSecs | 60 | Per-page timeout |
maxConcurrency | 5 | Parallel pages |
Using the API
curl -X POST "https://api.apify.com/v2/acts/<username>~website-screenshot-pro/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"urls":[{"url":"https://apify.com"}],"format":"jpeg","quality":80}'
The response is the dataset: one object per URL with a screenshotUrl you can fetch directly. Works the same from Python, Node, Make, Zapier, n8n or any MCP-capable AI agent.
Tips
- Pages behind logins or bot protection (Cloudflare challenges, DataDome, PerimeterX, CAPTCHAs) are detected, returned as
ok: falsewith the reason, and never billed. The actor does not attempt to bypass them. - For very long pages, full-page captures are capped by the browser at roughly 16,384 px of height; use
selectoror viewport capture for extreme cases. networkidlegives the most complete render but can wait a long time on sites with constant background traffic;loadplusdelayMsis usually the best trade-off.
Pricing
Pay per event: one event per successful screenshot, one per PDF. No charge for failures. Set a maximum charge per run in the Console or via maxTotalChargeUsd on the API to cap spend.