Website Screenshot Generator (full page, mobile, PDF)
Pricing
from $1.50 / 1,000 screenshots
Website Screenshot Generator (full page, mobile, PDF)
Website screenshot API for any list of URLs: full-page or viewport webpage screenshots on desktop, tablet or mobile, as PNG, JPEG, WebP or URL to PDF. Cookie banners, popups and ads removed, lazy images loaded. Bulk-ready; pay only per successful screenshot, failed URLs are free.
Pricing
from $1.50 / 1,000 screenshots
Rating
0.0
(0)
Developer
mvkdata
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Security
Limited permissionsShare
Website Screenshot Generator
Take screenshots of any list of web pages: full page or visible window, desktop, tablet or phone, PNG, JPEG, WebP or PDF. Cookie banners, popups and ads are removed for you, lazy-loaded images are loaded, and every screenshot gets a direct link.
You pay only for screenshots that worked. URLs that fail to load, or where the site shows an error or bot-block page (HTTP 4xx/5xx), are listed in the results with the reason and are not charged.
What you get
- Full-page screenshots that really contain the whole page: the actor scrolls through first so lazy images appear.
- Clean pages: consent dialogs are accepted (OneTrust, Cookiebot, Didomi, Sourcepoint, Usercentrics, Quantcast and buttons in 20+ languages), leftover banners, newsletter bars, chat widgets and modal popups are hidden, ad networks blocked.
- Real Chrome, not a stripped headless shell: loads sites that block simple bots (tested on X, The New York Times, Zalando, Etsy, Amazon, LinkedIn, Instagram, CNN, BBC, YouTube, Booking).
- 7 devices (desktop, full HD, laptop, retina MacBook, iPad, iPhone, Android) or any custom size and pixel ratio.
- PNG, JPEG, WebP or PDF, quality setting, transparent background, dark mode, single-element capture.
- Fast batches: several pages in parallel, automatic retries, crash-safe, a stuck page never blocks the run.
- Drop-in for
apify/screenshot-url: the same input fields (urls,format,waitUntil,delay,viewportWidth,scrollToBottom,selectorsToHide,proxy) work unchanged.
Input
The only required thing is a list of URLs. Everything else has good defaults.
{"urls": [{ "url": "https://apify.com" }, { "url": "https://www.bbc.com" }],"format": "png","fullPage": true,"device": "iphone"}
| Field | What it does |
|---|---|
urls | Pages to capture (list, or upload a text file). |
format | png, jpeg, webp or pdf. |
fullPage | Whole scrollable page instead of the visible window. |
device | desktop (1280x800), desktop_hd, laptop, macbook_retina, tablet, iphone, android. |
viewportWidth / viewportHeight / deviceScaleFactor | Custom size and pixel ratio. |
hideCookieBanners, hidePopups, blockAds | Clean-up, all on by default. |
hideSelectors | Your own CSS selectors to hide. |
waitUntil, waitForSelector, delay | When to take the shot. |
selector | Capture one element only. |
colorScheme, locale, timezoneId, userAgent, cookies | Dark mode, language, time zone, logged-in sessions. |
proxyConfiguration | Optional proxy (Apify datacenter proxy or your own proxy URLs), e.g. to see a site from a given country. |
Output
One dataset row per URL; the files are in the run's key-value store.
{"url": "https://www.bbc.com","screenshotUrl": "https://api.apify.com/v2/key-value-stores/.../records/shot-www-bbc-com-05e9df12.png","title": "BBC Home - Breaking News, World News, US News, Sports, Business, Innovation, Climate, Culture, Travel, Video & Audio","statusCode": 200,"finalUrl": "https://www.bbc.com/","format": "png","device": "desktop","fullPage": false,"viewport": "1280x800@1.0x","sizeBytes": 369719,"loadMs": 2050,"attempts": 1,"error": null,"capturedAt": "2026-11-05T18:50:12Z"}
Failed URLs have screenshotUrl: null (or the error page's screenshot) and error set; they are also collected in the
FAILED_URLS record of the key-value store.
Pricing
Pay per successful screenshot, plus a tiny start fee per run. No charge for failed URLs or bot-block pages, and no separate platform usage costs. Set "Maximum cost per run" and the actor stops cleanly when it is reached.
Tips
- Monitoring a page over time: create a task with your URL and add a schedule; each run stores a new screenshot.
- Big batches faster: the default 1 GB renders one page at a time; give the run 4 GB to capture 4 pages in parallel (same price per screenshot).
- Huge pages: full-page shots are capped at about 16,000 px height so Chrome does not crash.
- Slow pages: a page that never finishes loading is still captured after
pageTimeoutSecs; usewaitForSelectorto wait for the part you need. - Sites behind a login: pass your session cookies in
cookies. - A site still blocks the visit: try
proxyConfigurationwith Apify proxy, or your own residential proxy URLs.
URL to PDF
Set format to pdf to save each URL as a PDF document: the page width follows the chosen device, background graphics are
kept, and with fullPage the whole page goes into the PDF. Cookie banners and popups are removed first, so the PDF shows the
page itself.
Switching from apify/screenshot-url
Paste your existing input: urls, format, waitUntil, delay, viewportWidth, scrollToBottom, selectorsToHide and
proxy work unchanged. Differences you get on top: full-page shots that include lazy-loaded images, cleaned cookie banners
and popups, mobile/tablet devices, WebP and PDF output, and no charge for failed URLs or bot-block pages.
FAQ
Is there a screenshot API? Yes: call the actor from any language over the Apify API (example below), from the Apify Python/JavaScript clients, or connect it to Make, Zapier, n8n or a webhook. Each run returns a JSON row per URL with a direct image link.
How many URLs can I capture at once? Any number. Big lists run in one go with retries; give the run more memory to capture several pages in parallel.
Can it screenshot pages behind a login? Yes, pass your session cookies in cookies.
What do I pay for a page that fails? Nothing. Only screenshots that worked are charged.
Use it from code
curl -X POST "https://api.apify.com/v2/acts/mvkdata~website-screenshot/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" -d '{"urls":[{"url":"https://apify.com"}],"fullPage":true}'
Questions or a site that does not work? Open an issue on the Issues tab, it gets fixed fast.