Bulk Website Screenshot: Full-Page, Mobile, PDF
Pricing
from $2.00 / 1,000 screenshots
Bulk Website Screenshot: Full-Page, Mobile, PDF
Screenshot hundreds of web pages, or render your own HTML, in one run: full page or first screen, desktop, tablet or mobile, PNG, JPEG, WebP or PDF. Hides cookie banners, loads lazy images. $0.002 per screenshot; failed pages are free.
Pricing
from $2.00 / 1,000 screenshots
Rating
0.0
(0)
Developer
Webstack Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
Bulk Website Screenshot: full-page, mobile and PDF captures of many pages (and your own HTML)
Paste a list of URLs, get a clean screenshot of every page: the whole page or just the first screen, as desktop, laptop, tablet or mobile, in PNG, JPEG, WebP or PDF. Or send your own HTML (invoices, reports, social cards) and get it back as an image or PDF. Cookie banners are hidden and lazy images are loaded before the capture. A website screenshot API and an HTML to PDF / HTML to image converter in one: URL or HTML in, PNG, JPEG, WebP or PDF out, at $0.002 per page. You pay per page captured. Pages that fail are free.
What it does
- Opens each page once in a real Chrome browser (Playwright) and captures it.
- Full page or first screen. Endless pages are cut at a height you choose (default 12,000 px)
and marked
truncated. - Devices: desktop 1920x1080, laptop 1366x768, tablet 820x1180 (2x), mobile 390x844 (3x, touch), or your own viewport size.
- Formats: PNG, JPEG or WebP (quality you choose), or PDF (A4, with backgrounds and selectable text).
- HTML to image / PDF: put raw HTML documents in
htmlPagesand each is rendered in the same browser, with the same devices, formats and options as web pages. Linked images, fonts and CSS are loaded. Mix URLs and HTML in one run. - One element only: give a CSS selector (
#pricing,header) to capture just that part. - Clean captures: hides the consent pop-ups of common cookie tools (OneTrust, Cookiebot, Quantcast, Didomi, Usercentrics, CookieYes and more) and any elements you list, such as chat widgets. Nothing is clicked or accepted.
- Waiting that works: load / DOM ready / network idle, an extra delay, or wait for an element.
- Dark mode for sites that support it.
- Every row has the page title, final URL after redirects, HTTP status, file size and a direct download link.
Who uses it
- Marketers and SEO teams: archive landing pages, competitors' pricing pages and ads pages, before/after a redesign.
- Agencies: visual reports of client sites on desktop and mobile.
- Developers and QA: quick visual checks of many URLs after a release.
- Researchers and compliance: dated evidence of what a public page showed.
- Directories and link previews: thumbnails for lists of websites.
Input
{"urls": ["https://example.com", "apify.com", "https://www.python.org/about/"],"fullPage": true,"device": "desktop","format": "png","hideCookieBanners": true,"hideSelectors": ["#intercom-container"],"maxConcurrency": 6}
Bare domains become https://<domain>/. Duplicates are removed.
Raw HTML input
{"htmlPages": [{"name": "invoice-42", "html": "<html><body><h1>Invoice 42</h1><p>Total: $10.00</p></body></html>"},"<div style=\"width:1200px;height:630px;background:#123;color:#fff\">Social card</div>"],"format": "webp","fullPage": false,"viewportWidth": 1200,"viewportHeight": 630}
Rows for HTML documents have "url": null, "source": "html" and "htmlName" (your name, or
html-1, html-2, ...), which also goes into the file name (shot-00002-invoice-42.webp).
Output
One row per page in the dataset; the files are in the run's key-value store.
{"url": "https://example.com/","finalUrl": "https://example.com/","statusCode": 200,"title": "Example Domain","screenshotUrl": "https://api.apify.com/v2/key-value-stores/<store-id>/records/shot-00001-example-com.png","screenshotKey": "shot-00001-example-com.png","format": "png","contentType": "image/png","device": "desktop","fullPage": true,"viewportWidth": 1920,"bytes": 21874,"pageHeight": 1080,"capturedHeight": 1080,"truncated": false,"durationSecs": 2.1,"capturedAt": "2026-10-29T01:00:00+00:00","error": null}
A page that cannot be captured gives a row with error (free), for example
blocked_by_robots_txt, http_error (with statusCode), timeout, dns_error,
connection_error, tls_error, selector_not_found or wait_for_selector_not_found.
The SUMMARY record of the key-value store counts captures and failures by reason.
Pricing
- $0.002 per page captured ($2 per 1,000), in any format and device.
- Failed pages are free.
- Apify adds its small standard start fee per run.
- No separate charge for platform usage.
Use it from AI agents (MCP)
The Actor is available to AI agents (Claude, ChatGPT, Cursor and others) through Apify's MCP server
(mcp.apify.com) and the API. Minimal input:
{"urls": ["https://example.com"]}
Output row:
{"url": "https://example.com/", "format": "png", "device": "desktop", "statusCode": 200, "title": "Example Domain", "screenshotUrl": "https://api.apify.com/v2/key-value-stores/.../records/shot-00001-example-com.png", "bytes": 78288, "error": null, ...}screenshotUrl to get the image or PDF. Every row has the same fields; pages that fail come back as free
rows with an error code.
How it compares
Screenshot and HTML-to-PDF Actors on Apify Store with the most monthly users, and the price each one lists for its main event on 2026-11-06 (check their pages for changes and other prices):
| Actor | Listed price | Unit |
|---|---|---|
| This Actor | $0.002 | page captured (PNG, JPEG, WebP or PDF; URL or your HTML) |
| apify/screenshot-url | free | you pay the platform usage of the run |
| cheapapi/website-screenshot-api | $0.00089 | screenshot |
| dz_omar/screenshot | $0.01 | screenshot generation |
| dz_omar/ultimate-screenshot | $0.007 | page capture |
| automation-lab/html-to-pdf-converter | $0.00575 | page converted |
| autofacts/universal-web-printer | $0.004 | render |
What you get here for the page price: many URLs and raw HTML documents in one run, full page or first screen, four device presets or your own viewport, PNG, JPEG, WebP or PDF, one element by CSS selector, cookie banners hidden without clicking anything, robots.txt respected, and failed pages free. If you only need a single PNG of one URL now and then, the cheapest per-shot Actor may cost you less; this one is built for batches and for mixing web pages with your own HTML.
How it works
- The URL list is cleaned (scheme added, duplicates removed, invalid entries reported).
- Each site's
robots.txtis read once. Pages it closes to automated access are skipped. - Each page opens in a fresh browser context with the chosen device. The browser identifies
itself as Chrome plus
WebsiteScreenshotBot. - After loading, the Actor hides the banners, scrolls once to load lazy images (full page only), waits as asked and captures.
- The file goes to the key-value store and the row to the dataset; only successful rows are charged.
FAQ
Can it log in or capture pages behind a login? No. It captures public pages only.
Does it accept cookie consent? No. It hides the banner with CSS. Some sites show reduced content until consent is given; those pages are captured as a first-time visitor sees them.
Why was a page skipped with blocked_by_robots_txt? The site asks bots not to visit that
page. You can turn off "Respect robots.txt" for sites you own or have permission to capture.
Some sites show a "verify you are human" page. Sites with bot protection may show their challenge page or answer 403. The Actor does not use proxies or try to get around such protection; an HTTP 4xx/5xx answer is a free row.
How long are the files kept? As long as the run's storage is kept in your Apify account (by default, unnamed storages are kept for a limited time; copy files you need to keep).
How fast is it? Usually 2-6 seconds per page, 3 pages at a time with the default 2 GB memory. Raise "Pages at a time" together with the run memory for big lists.
Limitations
- Full-page captures are cut at the max height (up to 30,000 px).
- Videos, canvas animations and some web fonts may look different from a desktop browser.
- PDF output uses the A4 page format with the screen layout of the page.
- No proxies, so pages that are only available in some countries show what a visitor from the Apify data center would see.
Credits
Built on Playwright (Apache-2.0) and the Apify SDK for Python (Apache-2.0).