Bulk Website Screenshot: Full Page, Mobile, PNG/JPEG/PDF
Pricing
from $0.60 / 1,000 screenshot takens
Bulk Website Screenshot: Full Page, Mobile, PNG/JPEG/PDF
Capture screenshots of many websites in one run: full page or viewport, PNG, JPEG or PDF, desktop or mobile devices, dark mode, single-element capture, hidden selectors and cookie banners. Public image URLs in the dataset.
Pricing
from $0.60 / 1,000 screenshot takens
Rating
0.0
(0)
Developer
DatLab
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Features
Share
A website screenshot API for bulk URL screenshots: capture full page or viewport shots of many websites in one run (PNG, JPEG or PDF, desktop or mobile) and get a public image URL for each in the dataset. Logins are not supported.
- Full page or viewport. PNG, JPEG (with quality) or PDF. PDFs are sized to the screenshot viewport so the page does not reflow to a paper width and clip wide content.
- Desktop or mobile. Any desktop width/height and pixel ratio (retina), or emulate iPhone 15, Pixel 7 or iPad Pro 11. Dark mode too.
- Capture just one element, e.g.
#pricing, a chart or a hero section. - Clean shots. Hide cookie banners and any selectors (chat widgets, popups). Scroll first to load lazy images. Wait for load, network idle, a selector or a fixed delay.
- Batch-friendly and cheap. One shared browser for all URLs, low memory, a fixed price per screenshot with platform usage included.
- Polite. Respects robots.txt, rate-limits per host, never bypasses logins or captchas.
Use cases
- Visual monitoring and archiving of landing pages, competitors or your own sites (schedule it).
- Thumbnails and previews for directories, link-in-bio pages or CMSs.
- QA: check how pages render on mobile and desktop, in light and dark mode.
- Evidence snapshots (PDF) of public pages.
Input
| Field | Default | What it does |
|---|---|---|
urls | – | Pages to capture. |
format | png | png, jpeg or pdf. |
fullPage | true | Whole page or just the viewport. |
viewportWidth / viewportHeight | 1280 / 800 | Desktop window size. |
device | desktop | iPhone 15, Pixel 7, iPad Pro 11. |
deviceScaleFactor, darkMode, jpegQuality | 1, false, 80 | Image options. |
maxFullPageHeight | 15000 | Very long pages are cut here (truncatedAtHeight). |
elementSelector | – | Capture only this element. |
waitUntil, delay, waitForSelector | load, 0, – | When to capture. Puppeteer-style networkidle0/2 are accepted too. |
scrollToBottom, delayAfterScrolling, waitUntilNetworkIdleAfterScroll, waitUntilNetworkIdleAfterScrollTimeout | false, 2500, false, 30000 | Lazy-loading support. |
selectorsToHide, hideCookieBanners | –, true | Hide elements (nothing is clicked or accepted). |
pdfFormat, pdfPrintBackground | A4, true | pdfPrintBackground is honoured. pdfFormat is kept for compatibility; the PDF page is sized to the rendered viewport so layout matches the screenshot. |
maxConcurrency, navigationTimeoutSecs, maxRequestRetries, minDelayPerHostMs | 2, 60, 2, 500 | Speed and politeness. |
proxy | off | Optional datacenter proxy. |
{"urls": [{ "url": "https://apify.com" }, { "url": "https://crawlee.dev" }],"format": "jpeg","fullPage": true,"device": "iPhone 15"}
Output
{"url": "https://crawlee.dev/","loadedUrl": "https://crawlee.dev/","screenshotUrl": "https://api.apify.com/v2/key-value-stores/…/records/crawlee-dev-0d35627b.png","screenshotKey": "crawlee-dev-0d35627b.png","format": "png","fullPage": true,"truncatedAtHeight": null,"width": 1280,"height": 2874,"sizeBytes": 335092,"device": "desktop","title": "Crawlee · Build reliable crawlers. Fast.","httpStatusCode": 200,"capturedAt": "2026-11-11T20:50:02.120Z","error": null}
Failed or blocked URLs have screenshotUrl: null and an error. The files are in the run's key-value store, and RUN_SUMMARY holds the counts.
Pricing
Pay per event, with Apify platform usage included.
| Event | Price | When |
|---|---|---|
| Screenshot | $0.60 per 1,000 | Each screenshot or PDF saved |
| Run start | $0.003 per run | Once per run (covers browser start-up) |
Failed pages, robots.txt-blocked pages and HTTP errors are not charged. Platform usage is included in the event price. Example: 1,000 URLs in one run ≈ $0.60; a single URL ≈ $0.0036. For comparison, cheapapi/website-screenshot-api starts at $0.61 per 1,000 plus platform usage (checked 12 Nov 2026).
FAQ
Why did a site return an error instead of a screenshot? Some sites block automated browsers (HTTP 403) or disallow it in robots.txt. The Actor reports that and doesn't try to get around it. You're not charged.
Why is my screenshot cut off? Pages taller than maxFullPageHeight (15,000 px by default) are cut. Raise the limit or capture a single element.
Images are missing at the bottom of the page. Turn on scrollToBottom so lazy-loaded images render first.
How do I get retina-quality images? Set deviceScaleFactor to 2, or pick a mobile device (they use 2.6–3×).
Can it screenshot pages behind a login? No. Cookies and logins aren't supported, by design.
Legal & data use
- Captures only public pages you list, obeys robots.txt and
Crawl-delay, rate-limits per host and never bypasses logins, captchas, paywalls or other access controls. - It stores only images of pages you request and doesn't extract personal data.
- You're responsible for having the right to capture and use the screenshots (copyright, trademarks, site terms, applicable law).
Running on Apify
You can run this Actor on the Apify platform from the Console, the API, a schedule, integrations (webhooks, Slack, Google Sheets, Make, Zapier) or MCP.
Other DatLab actors
- Web Page to Markdown — turn a list of URLs into Markdown for LLMs and RAG
- Website to Markdown Crawler — crawl a site into Markdown, with sitemaps and llms.txt
- Sitemap Change Monitor — extract sitemap URLs and watch new, removed and updated pages
- ATS Job Listings — Personio, Teamtailor, Workable and Recruitee, one schema
- SAM.gov Contract Opportunities — US federal opportunities from the official daily extract, no API key