Website Screenshot Generator (full page, mobile, PDF) avatar

Website Screenshot Generator (full page, mobile, PDF)

Pricing

from $1.50 / 1,000 screenshots

Go to Apify Store
Website Screenshot Generator (full page, mobile, PDF)

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

mvkdata

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Security

Limited permissions

Share

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"
}
FieldWhat it does
urlsPages to capture (list, or upload a text file).
formatpng, jpeg, webp or pdf.
fullPageWhole scrollable page instead of the visible window.
devicedesktop (1280x800), desktop_hd, laptop, macbook_retina, tablet, iphone, android.
viewportWidth / viewportHeight / deviceScaleFactorCustom size and pixel ratio.
hideCookieBanners, hidePopups, blockAdsClean-up, all on by default.
hideSelectorsYour own CSS selectors to hide.
waitUntil, waitForSelector, delayWhen to take the shot.
selectorCapture one element only.
colorScheme, locale, timezoneId, userAgent, cookiesDark mode, language, time zone, logged-in sessions.
proxyConfigurationOptional 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; use waitForSelector to wait for the part you need.
  • Sites behind a login: pass your session cookies in cookies.
  • A site still blocks the visit: try proxyConfiguration with 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.