Multi-Resolution Screenshot
Pricing
from $5.00 / 1,000 screenshot takens
Multi-Resolution Screenshot
Capture screenshots at multiple viewports in one run. Default: mobile, tablet, desktop. PNG/JPEG/WebP output, full-page capture, device emulation. Configurable wait for dynamic content. Ideal for responsive QA.
Pricing
from $5.00 / 1,000 screenshot takens
Rating
0.0
(0)
Developer

junipr
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Multi-Resolution Screenshot Tool
Take screenshots of any URL at multiple viewport sizes in a single run. Capture mobile, tablet, desktop, and 4K screenshots simultaneously with 8 built-in device presets. Supports full-page capture, PNG/JPEG/WebP output, cookie banner dismissal, and element-specific screenshots.
Perfect for responsive design QA, visual regression testing, multi-device previews, SEO audits, and client reporting.
Why Use This Actor
Unlike single-viewport screenshot tools that require separate runs for each device size, this actor captures all viewport variations in one run — saving time, compute costs, and workflow complexity.
| Feature | This Actor | Other Screenshot Actors |
|---|---|---|
| Multi-resolution per run | Yes (unlimited) | No (1 per run) |
| Device presets | 8 built-in | None |
| Full-page capture | Yes | Partial |
| WebP output | Yes | No |
| Cookie banner dismissal | Auto-detect | No |
| Element screenshots | Yes (clipSelector) | No |
| Structured file naming | Yes (customizable) | Random IDs |
How to Use
Zero-config (desktop screenshot of crawlee.dev):
No input needed — runs with defaults.
Multi-resolution responsive QA:
{"urls": [{ "url": "https://example.com", "label": "homepage" },{ "url": "https://example.com/about", "label": "about" }],"presets": ["mobile", "tablet", "desktop"],"fullPage": true}
Custom viewport dimensions:
{"urls": [{ "url": "https://example.com", "label": "og-image" }],"viewports": [{ "width": 1200, "height": 630, "label": "og" }],"format": "jpeg","quality": 90}
Screenshots are saved to the Key-Value Store. Retrieve them via the Apify API or download from the Console.
Input Configuration
| Parameter | Default | Description |
|---|---|---|
urls | crawlee.dev | Array of { url, label } objects. Max 100. |
presets | ["desktop"] | Device presets: mobile, tablet, desktop, desktopHd, 4k, ultrawide |
fullPage | false | Capture full scrollable page |
format | png | Output: png, jpeg, or webp |
quality | 80 | JPEG/WebP quality (1-100) |
clipSelector | — | Screenshot only this CSS element |
hideSelectors | [] | Hide elements before capture |
dismissCookieBanners | true | Auto-dismiss cookie consent |
waitForSelector | — | Wait for element before capture |
waitForTimeout | 3000 | Wait ms after page load |
fileNamePattern | {label}_{preset}_{width}x{height} | KV store key pattern |
Output Format
Each screenshot produces a dataset item:
{"url": "https://example.com","label": "homepage","viewport": {"width": 375,"height": 812,"deviceScaleFactor": 2,"isMobile": true,"preset": "mobile"},"screenshot": {"kvStoreKey": "homepage_mobile_375x812.png","kvStoreUrl": "https://api.apify.com/v2/key-value-stores/.../records/homepage_mobile_375x812.png","format": "png","width": 750,"height": 1624,"fileSizeBytes": 245760,"fileSizeHuman": "240.0 KB"},"page": {"title": "Example Domain","statusCode": 200,"fullPageHeight": 812,"loadTimeMs": 1234},"capturedAt": "2025-01-15T10:30:00.000Z","errors": []}
A RUN_SUMMARY JSON is saved to the KV store with totals, durations, and per-screenshot status.
Tips and Advanced Usage
- Cookie banners: Enabled by default. Auto-detects OneTrust, CookieBot, Quantcast, and generic consent banners.
- Authenticated pages: Pass session cookies via the
cookiesinput for pages behind login. - Custom JS: Use
javascriptto modify the page before capture (e.g., change theme, remove elements). - Performance: Set
blockResources: ["image", "font"]for faster captures when full rendering isn't needed. - Element screenshots: Use
clipSelector: "#hero"to capture just one component. - Lazy loading:
scrollToBottom(default: true) triggers intersection observers for lazy images.
Pricing
Pay-per-event pricing: $0.005 per screenshot ($5.00 per 1,000).
One screenshot = one URL at one viewport. Examples:
- 1 URL x 1 viewport = 1 screenshot = $0.005
- 10 URLs x 3 viewports = 30 screenshots = $0.15
- 100 URLs x 8 viewports = 800 screenshots = $4.00
Failed screenshots (navigation errors, timeouts) are not charged.
FAQ
What viewport sizes are supported?
8 built-in presets: mobile (375x812), mobileLandscape (812x375), tablet (768x1024), tabletLandscape (1024x768), desktop (1280x800), desktopHd (1920x1080), 4k (3840x2160), ultrawide (2560x1080). Custom dimensions also supported.
Can I capture full-page screenshots?
Yes. Set fullPage: true to capture the entire scrollable page. Lazy-loaded images are triggered by auto-scrolling before capture.
How do I handle cookie consent banners?
Enabled by default via dismissCookieBanners: true. Supports major consent managers. Use hideSelectors or clickSelectors for custom banners.
Can I screenshot pages that require login?
Yes. Pass session cookies via the cookies input or set auth headers via httpHeaders.
What's the maximum number of URLs per run?
100 URLs per run with up to 20 viewports each.
What output formats are supported?
PNG (default, lossless), JPEG (lossy, smaller files), and WebP (modern, best compression). Quality configurable for JPEG/WebP.
How are screenshots named in the Key-Value Store?
Following the fileNamePattern template. Default: {label}_{preset}_{width}x{height}.{format}. Example: homepage_mobile_375x812.png.
How is a "screenshot" defined for pricing?
One URL captured at one viewport = one billable screenshot. Multiple viewports of the same URL count as multiple screenshots.