Website Screenshot & PDF: full page, mobile, element, WebP avatar

Website Screenshot & PDF: full page, mobile, element, WebP

Pricing

$2.00 / 1,000 screenshot or pdfs

Go to Apify Store
Website Screenshot & PDF: full page, mobile, element, WebP

Website Screenshot & PDF: full page, mobile, element, WebP

Screenshots (PNG, JPEG, WebP) and PDFs of any list of URLs. Full page or viewport, a CSS element or a clip, desktop/tablet/iPhone/Android presets, dark mode, cookie-banner and ad hiding, lazy-load scrolling. Each file gets a link, final URL, title, HTTP status and size.

Pricing

$2.00 / 1,000 screenshot or pdfs

Rating

0.0

(0)

Developer

Angad Jangir

Angad Jangir

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

13 hours ago

Last modified

Security

Limited permissions

Share

Give it a list of URLs. For each page you get a PNG, JPEG or WebP screenshot and/or a PDF, saved to the run's key-value store, plus one dataset record per file. Each record has the file link, the final URL after redirects, the page title, the HTTP status, the image size in pixels, the file size, the format, the device and a timestamp.

A page that fails does not crash the run and is not charged. You get the reason for each failed page in the FAILED and SUMMARY records.

Who uses it

  • SEO and marketing agencies: client reports, competitor homepages, landing-page archives, before/after shots.
  • Monitoring and archiving: schedule a daily run to keep a visual history of pages, or keep PDFs as evidence.
  • AI agents: an agent that needs to see a page calls this Actor through the Apify MCP server and gets an image link back.
  • Thumbnails and previews: link previews, directories, galleries, social-card sized clips.

Features

OptionWhat it does
OutputScreenshot, PDF, or both for each page
FormatPNG (lossless), JPEG or WebP with a quality setting
AreaFull page (default), visible viewport, one element by CSS selector, or a clip rectangle
DevicesDesktop 1920x1080, Laptop 1440x900, Tablet (iPad Pro 11, @2x), iPhone 15 Pro (@3x), Android Pixel 7 (@2.625x), or custom width, height and scale factor
Waitingload, domcontentloaded or networkidle, extra delay, wait for a selector. A page that never gets to the chosen state is still captured, with a warning
Lazy contentScrolls through the page before a full-page shot or PDF so lazy images load, then goes back to the top
Clean shotsHides cookie banners from common consent tools (CSS only, never clicks accept), hides your own selectors, blocks ads and trackers (optional), injects custom CSS, reduces motion
LookDark mode (prefers-color-scheme: dark), language/locale, custom user agent
PDFA4, Letter, Legal, A3, A5, Tabloid; landscape; background colours; margins; scale; on-screen or print stylesheet
ReliabilityPer-page timeout, retries in a fresh tab, browser restarted if it crashes, optional Apify Proxy, 1 to 10 pages at a time

Example inputs

Full-page PNG of two sites on desktop (the default):

{ "urls": ["https://example.com", "https://apify.com"] }

iPhone screenshots in dark mode as small WebP files, ads blocked:

{
"urls": ["https://github.com", "https://www.bbc.com/news"],
"device": "iphone",
"format": "webp",
"quality": 75,
"darkMode": true,
"blockAds": true
}

A 1200x630 social-card image at Retina sharpness:

{
"urls": ["https://stripe.com"],
"clip": { "x": 0, "y": 0, "width": 1200, "height": 630 },
"deviceScaleFactor": 2,
"format": "jpeg"
}

Only the pricing table, after it has rendered:

{ "urls": ["https://example.com/pricing"], "selector": "#pricing", "waitForSelector": "#pricing table" }

Screenshot and PDF for archiving, A4 with 1 cm margins and the site's print layout:

{ "urls": ["https://en.wikipedia.org/wiki/Screenshot"], "output": "both", "pdfFormat": "A4", "pdfMargin": "1cm", "pdfMedia": "print" }

Output

One record per saved file (a page with "Screenshot and PDF" gives two records). This is a real record from a test run:

{
"url": "https://en.wikipedia.org/wiki/Screenshot",
"finalUrl": "https://en.wikipedia.org/wiki/Screenshot",
"title": "Screenshot - Wikipedia",
"httpStatus": 200,
"type": "screenshot",
"format": "webp",
"fileUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/en-wikipedia-org-wiki-screenshot-0ef58d5d.webp",
"key": "en-wikipedia-org-wiki-screenshot-0ef58d5d.webp",
"storeId": "<storeId>",
"fileSizeBytes": 300526,
"width": 1179,
"height": 6966,
"sizeUnit": "px",
"pages": null,
"captureArea": "fullPage",
"pageWidth": 393,
"pageHeight": 2322,
"truncated": false,
"device": "iphone",
"viewportWidth": 393,
"viewportHeight": 852,
"deviceScaleFactor": 3,
"isMobile": true,
"darkMode": false,
"loadTimeMs": 1148,
"cookieBannersHidden": 0,
"blockedRequests": null,
"attempts": 1,
"warnings": [],
"error": null,
"capturedAt": "2026-11-05T16:11:54.520Z"
}
FieldWhat it is
fileUrl, key, storeIdLink to the file in the run's key-value store, its key and the store ID. On Apify the link is signed when your storage is private, so it opens without a token
url, finalUrl, title, httpStatusThe page you asked for, where it ended up after redirects, its title and the HTTP status (error pages are captured too, with a warning)
type, formatscreenshot or pdf; png, jpeg, webp or pdf
width, height, sizeUnitImage size in real pixels (read from the file), or the PDF page size in points
pagesNumber of PDF pages
captureArea, pageWidth, pageHeight, truncatedWhat was captured, the page size in CSS pixels, and whether the image was cut at Max page height
device, viewportWidth, viewportHeight, deviceScaleFactor, isMobile, darkModeThe device used
loadTimeMs, cookieBannersHidden, blockedRequests, attempts, warningsHow the capture went

Run a local copy and fileUrl is a file:// path to the file in local storage instead.

SUMMARY (key-value store) has the counts, total bytes, the device, warnings and every failed URL with its reason. FAILED has a full record for each failed page. Turn on Add failed pages to the dataset to get them in the dataset as well; each one then counts as a result.

Pricing

You pay per file saved: one screenshot or one PDF is one result. Failed pages cost nothing. Your URL list caps the cost of a run: at most one result per page, or two with "Screenshot and PDF".

Limits

  • WebP images are at most 16,383 px on each side. Longer pages are cut at that height, with a warning. Use PNG or JPEG for very long pages.
  • Full-page shots stop at Max page height (default 20,000 CSS px) so endless-scroll pages do not make giant files.
  • Pages behind a login, a captcha or bot protection are captured as they look to a visitor who is not logged in. The Actor does not log in or solve captchas.
  • Some pages scroll inside an inner box instead of the page itself. A full-page shot of those shows the visible window.
  • The cookie-banner hider covers the common consent tools and banners that mention cookies or consent. A rare custom banner may stay; add its selector to Hide elements.

Schedules, webhooks and integrations

  • Visual monitoring: save the input as a Task and add a Schedule (for example daily). Every run keeps its own files.
  • Google Sheets, Slack, Zapier, Make, n8n: send the records (with the image links) wherever you need them from the Integrations tab.
  • Webhooks: get a call when a run finishes, then read the dataset or the files through the API.
  • MCP / AI agents: the Actor works as a tool in the Apify MCP server, so an agent can ask for "a mobile screenshot of this page" and get a link back.

FAQ

Is this legal? The Actor opens public web pages the way a normal browser does and saves what a visitor would see. It does not log in, solve captchas or get around paywalls or bot protection. Cookie banners are only hidden from the image; nothing is clicked or accepted for you. You are responsible for how you use the captures and for respecting the sites' terms and copyright.

Why does my full-page shot look cut off? The page was taller than Max page height (the record says truncated: true), or it is a WebP over 16,383 px. Raise the limit or use PNG.

Images or sections are missing. Keep Scroll to load lazy content on, try Wait until: networkidle, add an Extra delay, or wait for a specific element with Wait for element.

A site shows a different page or blocks the run. Some sites show other content to data-centre visitors. Turn on Apify Proxy (residential, or a country) in Proxy.

How do I download all the files at once? Open the run's key-value store in the Console, or list the keys through the API (/v2/key-value-stores/{storeId}/keys) and fetch each fileUrl.

Something broke? Open an issue on the Issues tab with the URL and your input, and it will be fixed quickly.

More Actors by angadseth