Website Screenshot & PDF: Full Page, Mobile, Batch URLs
Pricing
$5.00 / 1,000 page captureds
Website Screenshot & PDF: Full Page, Mobile, Batch URLs
Full-page or viewport screenshots (PNG, JPEG) and PDFs of any list of web pages. Desktop, tablet and phone sizes, cookie banners hidden, lazy images loaded. You pay only for pages captured cleanly; errors, 404s and bot checks are free.
Pricing
$5.00 / 1,000 page captureds
Rating
0.0
(0)
Developer
Michael Shanker
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Security
Limited permissionsShare
Give it a list of web pages and get back a clean screenshot (PNG or JPEG) or a PDF of each one. It handles full pages, viewports, phone and tablet sizes, dark mode, or a single element. Cookie banners and sign-up pop-ups are hidden and lazy images are loaded before the picture is taken.
You pay only for pages captured cleanly. A page that fails to load, answers with an error (404, 500) or shows a bot check still gets a row explaining why, plus the file when there is one, and none of those are charged.
What you can do with it
- Archive and monitor pages: competitor pricing, landing pages, search results you're allowed to keep, terms and policies, before and after a release.
- Visual checks: see how a site looks on desktop, iPad and phones in one run.
- Thumbnails and previews: link previews, directories, portfolio and client reports.
- PDFs of articles and docs: with selectable text, in A4, Letter and other paper sizes.
- Feed AI tools: send page screenshots to vision models, which often read a layout better than raw HTML.
Why this one
| This Actor | Typical screenshot Actor | |
|---|---|---|
| Price | $5 per 1,000 clean captures, compute included | your own compute on top, or a per-capture price that also charges failures |
| Failed pages, 404s, bot checks | not charged | charged or billed as compute |
| Cookie banners | hidden (about 50 consent tools plus home-made banners) | often cover the page |
| Sign-up and discount pop-ups | hidden, with the dark layer behind them | often cover the page |
| Lazy images | scrolls first so they load | often blank |
| Very long pages | cut at a height you choose, and the row says so | huge files or crashes |
| Pages that never stop loading | captured when the timeout runs out, with a note | run fails |
Input
The only required field is Page addresses. Everything else has sensible defaults.
{"urls": ["https://apify.com", "example.com/pricing"],"format": "png","fullPage": true,"device": "desktop"}
| Field | What it does | Default |
|---|---|---|
urls | Pages to capture. example.com gets https://. Up to 10,000 per run. Repeats are captured once. | required |
format | png, jpeg (smaller files) or pdf | png |
fullPage | Whole page top to bottom, or just the screen | true |
device | desktop 1440x900, desktop-hd 1920x1080, laptop 1280x800, tablet (iPad Air), iphone (iPhone 15), android (Pixel 8). Tablet and phone presets use the mobile layout, touch and the device's pixel density. | desktop |
hideCookieBanners | Hide cookie and consent pop-ups. Nothing is clicked or accepted. | true |
hidePopups | Hide sign-up, discount and newsletter pop-ups and Google's sign-in prompt | true |
scrollToLoad | Scroll down first so lazy images appear (full page only) | true |
delaySeconds | Extra wait after loading, for animations and late content | 1 |
waitUntil | load, domcontentloaded (fastest) or networkidle (for apps) | load |
waitForSelector | Wait for this CSS selector before capturing | none |
selector | Capture only the first visible element matching this CSS selector | none |
hideSelectors | CSS selectors to hide, such as chat widgets or promo bars | none |
viewportWidth, viewportHeight | Custom screen size in pixels (0 keeps the preset) | 0 |
deviceScaleFactor | 2 for a sharp retina image (0 keeps the preset) | 0 |
maxHeight | Long pages are cut here; truncated says when | 16000 |
jpegQuality | 10 to 100 | 80 |
colorScheme | light, dark or no-preference | light |
pdfPaperFormat, pdfLandscape, pdfMedia | PDF paper size, orientation, and screen look or the site's print styles | A4, false, screen |
pageTimeoutSecs | Most time on one page | 45 |
maxConcurrency | Pages open at once. 0 sets it from the run's memory (2 at the default 4 GB, 4 at 8 GB). | 0 |
proxyConfiguration | Optional Apify Proxy for sites that turn away data-center visitors | off |
Output
The files go in the run's key-value store, and the dataset has one row per page:
{"url": "example.com/pricing","requestedUrl": "https://example.com/pricing","finalUrl": "https://www.example.com/pricing","status": "ok","httpStatus": 200,"pageTitle": "Pricing | Example","format": "png","device": "desktop","fileUrl": "https://api.apify.com/v2/key-value-stores/.../records/0001-example-com-pricing.png","fileKey": "0001-example-com-pricing.png","width": 1440,"height": 6120,"pdfPages": null,"fullPage": true,"truncated": false,"pageHeight": 6120,"bytes": 1843921,"seconds": 4.2,"note": null,"error": null,"capturedAt": "2026-11-03T18:00:00+00:00"}
status is one of:
ok: captured cleanly. The only charged status.error_page: the page answered with an error such as 404 or 500. The file is saved so you can see it.blocked: the site showed a bot check, refused the visit (403, 429) or sent it to a consent page on another domain. The file is saved. Try again with a proxy.failed: nothing could be captured, for example the domain doesn't exist, the server doesn't answer, or the element inselectorisn't on the page.errorsays which.invalid_url: the entry isn't a public web address.
A SUMMARY record in the key-value store counts each status, what was charged and whether your spending limit stopped the run.
Pricing
$5 per 1,000 pages captured cleanly ($0.005 each), whatever the size, format or device. Compute is included, so nothing else is charged per page. For big batches, give the run 8 GB or more of memory: it opens more pages at once and finishes sooner at the same price. If you set a maximum cost for a run, the Actor stops starting new pages before it would go over.
Good to know
- Only public pages: there's no login or cookie input, and local or internal network addresses are refused.
- Some sites block visitors from data centers. Those rows come back as
blockedat no charge; Apify Proxy often gets them through. - Pages are captured as they load in a real Chromium browser. Video frames, maps and canvas content show what was drawn at that moment.
- Very tall pages are cut at
maxHeight(16,000 px by default) so files stay usable. Raise it to 30,000 if you need more. - You're responsible for having the right to capture and keep the pages you list.
More tools from the same developer
- Broken Link Checker: 404s, Redirects & Dead Links
- SEO Audit Tool: On-Page Checks, Crawl & Broken Links
- Sitemap URL Extractor: All Site URLs, Lastmod & News
- Bulk URL Status Checker: Redirect Chain & Response Time
- Wayback Machine Scraper: Snapshots, Changes & Page Text
- Domain WHOIS, DNS & SSL Checker: Expiry, SPF & DMARC