Website Screenshot API: Bulk Full Page PNG and JPEG avatar

Website Screenshot API: Bulk Full Page PNG and JPEG

Pricing

$3.00 / 1,000 screenshot saveds

Go to Apify Store
Website Screenshot API: Bulk Full Page PNG and JPEG

Website Screenshot API: Bulk Full Page PNG and JPEG

Take full page screenshots of a list of URLs in one run. PNG or JPEG, desktop, laptop, tablet or mobile, dark mode, cookie banners hidden, lazy images loaded. Each screenshot gets a download link, status code and page title. Pay per screenshot.

Pricing

$3.00 / 1,000 screenshot saveds

Rating

0.0

(0)

Developer

Hay Equipos

Hay Equipos

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

10 days ago

Last modified

Share

Paste a list of URLs and get a screenshot of each page, with a direct download link, the page title, the HTTP status and the image size. Full page or first screen, PNG or JPEG, desktop, laptop, tablet or mobile, light or dark mode. Cookie banners are hidden and lazy loaded images are scrolled into view before capture, so the images look like what a visitor sees.

It runs a real headless Chrome browser, captures pages in parallel, retries a page once if the browser closes under it or the connection drops, and starts a fresh browser when needed. Analytics and tracking scripts, which never draw anything on the page, are blocked so pages finish loading sooner. You pay per screenshot saved, with a fixed price you can see before you run it. A page that loads with an error status such as 404, or shows a bot check, is still captured and charged.

Who uses it

  • Marketers and agencies archiving landing pages, competitor pages and ad destinations.
  • SEO and QA teams checking how pages render on mobile and desktop after a release.
  • Compliance and legal teams keeping dated visual records of public pages.
  • Developers and AI agents that need an image of a page for a report, a thumbnail or a vision model.

Input

FieldWhat it does
urlsPages to capture, one per line
devicedesktop (1280 by 800), laptop (1440 by 900), tablet (820 by 1180 at 2x), mobile (390 by 844 at 3x)
viewportWidth, viewportHeightCustom size in CSS pixels, overrides the preset
fullPageWhole page (default) or only the first screen
maxPageHeightVery long pages are cut at this height (default 10,000 pixels)
format, jpegQualityPNG, or JPEG with a quality from 1 to 100
waitUntil, delayMsWhen to capture: DOM ready, load event (default) or network idle, plus an extra wait (default 1 second). Once the page is ready, the actor waits up to 12 seconds for the load event (15 for network idle) and then captures anyway, so a page whose ads or videos never stop loading is still captured
scrollToBottomScroll first so lazy images load
hideCookieBannersHide common consent popups without clicking them
hideSelectorsYour own CSS selectors to hide, for example a chat widget
darkModeAsk the page for its dark theme
timeoutSecs, maxConcurrency, maxUrlsSpeed and safety limits. timeoutSecs (default 30) is how long a page may take to become ready; a page that is not ready by then is reported as failed and not charged

Example input

{
"urls": ["https://apify.com", "https://en.wikipedia.org/wiki/Web_scraping"],
"device": "desktop",
"fullPage": true,
"format": "jpeg",
"jpegQuality": 80,
"hideCookieBanners": true
}

Output

Each image is saved in the run's key value store. screenshotUrl is a signed link that opens the image directly, with no API token needed, so you can paste it into a sheet, a report or another tool. The dataset has one row per URL:

{
"url": "https://apify.com/",
"finalUrl": "https://apify.com/",
"statusCode": 200,
"title": "Apify: Marketplace of ready-to-run tools for AI",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/screenshot_0001_apify_com_.jpg?signature=<signature>",
"screenshotKey": "screenshot_0001_apify_com_.jpg",
"format": "jpeg",
"device": "desktop",
"viewportWidth": 1280,
"viewportHeight": 800,
"fullPage": true,
"imageWidth": 1280,
"imageHeight": 4000,
"truncated": true,
"bytes": 363614,
"loadTimeMs": 7636,
"takenAt": "2026-09-27T06:17:50.332Z",
"error": null
}

Pages that fail (DNS error, timeout) still get a row with the error field filled, so you know which ones to retry. A timeout, or a page that crashes its own browser tab, is not retried in the same run, because such pages nearly always fail again; a page caught by a browser restart or a dropped connection is retried once. Failed pages are not charged.

Pricing

Pay per event, no subscription and no platform usage charges on top:

  • $3.00 per 1,000 screenshots ($0.003 each).
  • Failed pages are free: the page could not be loaded or captured at all (for example a timeout, a crash or a domain that does not resolve).
  • A page that loads but returns an error status (such as 404 or 500) or a bot check page is still captured and charged as a screenshot. Check statusCode and title to spot these.

Limits

  • Pages behind a login cannot be captured, and the actor never logs in.
  • Sites with strong bot protection may show their challenge page instead of the content; you then get, and pay for, a screenshot of the challenge. The status code and title help you spot these.
  • Cookie banner hiding covers the most common consent tools but not every custom popup; add selectors in hideSelectors for the rest.
  • Pages longer than maxPageHeight are cut and marked truncated. Images are also kept under about 16,000 pixels tall, so on the mobile preset (3x) a full page capture stops at about 5,300 CSS pixels.
  • Screenshots stay in the run's storage for the retention period of your Apify plan; download them if you need them longer.

FAQ

How fast is it? Two pages at once by default. Light pages take 2 to 5 seconds, heavy full page captures 20 to 40 seconds, so plan on 5 to 15 pages a minute at the default 1 GB of memory. More memory with a higher maxConcurrency is faster.

Can I get PDF output? Not in this version. PNG and JPEG only.

Can I capture only part of a page? Use fullPage: false for the first screen, or set a custom viewport.

Why is the image height larger than the viewport height times the scale? For full page captures the height is the full scrollable height of the page, up to maxPageHeight.

Can AI agents call it? Yes. The input is small and the price per screenshot is fixed, so it works well through the Apify MCP server.