Website Screenshot & PDF: Full Page, Element, Mobile, Bulk avatar

Website Screenshot & PDF: Full Page, Element, Mobile, Bulk

Pricing

from $2.00 / 1,000 screenshot or pdfs

Go to Apify Store
Website Screenshot & PDF: Full Page, Element, Mobile, Bulk

Website Screenshot & PDF: Full Page, Element, Mobile, Bulk

Capture websites in bulk as full-page PNG or JPEG screenshots or PDFs in real Chrome. Shoot one element by CSS selector, use mobile or tablet views, dark mode, hide cookie banners and wait for content. Get a link to every file. Failed pages are free.

Pricing

from $2.00 / 1,000 screenshot or pdfs

Rating

0.0

(0)

Developer

Charles Markette

Charles Markette

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Website Screenshot & PDF opens each URL in a real headless Chrome (Chromium) and saves a full-page or viewport screenshot (PNG or JPEG), a screenshot of one element picked by CSS selector, or a PDF of the page. It handles lists of thousands of URLs, phone and tablet presets, retina pixel density, dark mode, cookie-banner hiding, scrolling to load lazy images, and waiting for an element to appear. Each file is saved to the run's key-value store, and each URL gets a row with a link to its file, the final URL after redirects, HTTP status, page title, image size and any error.

Why this Actor

  • Renders like a real browser. Pages run their JavaScript, web fonts and CSS in Chromium, so you get what a visitor sees, not the raw HTML.
  • Full page, viewport or one element. Full-page captures include everything below the fold (lazy images are scrolled into view first). Very tall pages are cut at 16,384 px and flagged with truncated: true instead of failing.
  • Cleaner captures. Common cookie and consent pop-ups are hidden with CSS (nothing is clicked, so no consent is given on your behalf), and you can hide your own list of elements such as chat widgets.
  • Bulk-friendly and predictable. Several pages load in parallel in one browser; one slow or broken page never stops the run, and if the browser crashes it is restarted. Every URL has a hard time limit.
  • Safe with any link list. Every request the page makes (the page itself, each redirect, images, scripts, WebSockets) is checked, and private, loopback, link-local and cloud-metadata addresses are refused. Downloads are blocked.

Use cases

  • Visual archives and compliance records: a dated full-page PNG or PDF of each page (capturedAt is in every row).
  • Competitor and pricing monitoring: schedule a daily run that captures just the #pricing element of each competitor's page.
  • Responsive checks: the same URLs on desktop, tablet and mobile, in light and dark mode.
  • Reports and link previews: thumbnails of the sites in a lead list or a scraper's output (pick the dataset, set the URL field).
  • Releases and QA: screenshots of every page in a sitemap after a deploy, to compare with the previous run.
  • Saving articles or invoices as PDF: A4 or Letter, with backgrounds, text stays selectable.

How to use it

  1. Add URLs, or pick a Dataset with URLs and set the URL field (dotted paths such as page.url work).
  2. Pick a Format (PNG, JPEG or PDF), Full page on or off, and a Device. Optionally set Only this element, Wait for element, Dark mode or elements to hide.
  3. Run it. Open the files from the fileUrl column, or from the run's Storage → Key-value store tab.

Input example

{
"urls": [
"https://apify.com",
{"url": "https://www.wikipedia.org", "label": "Wikipedia home"},
{"url": "https://example.com/pricing", "label": "Pricing table", "selector": "#pricing"}
],
"format": "png",
"fullPage": true,
"device": "desktop",
"viewportWidth": 1280,
"viewportHeight": 800,
"hideCookieBanners": true,
"delayMs": 500
}

Output example (one row)

{
"url": "https://apify.com/",
"label": null,
"finalUrl": "https://apify.com/",
"statusCode": 200,
"title": "Apify: Full-stack web scraping and data extraction platform",
"format": "png",
"key": "screenshot-3f1c9a2b7d4e8f60.png",
"fileUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/screenshot-3f1c9a2b7d4e8f60.png",
"fileSizeBytes": 1843211,
"width": 1280,
"height": 7342,
"pageCount": null,
"truncated": false,
"device": "desktop",
"navigationTimedOut": false,
"capturedAt": "2026-10-22T09:15:04Z",
"error": null,
"errorMessage": null
}

width and height are the image's size in pixels (twice the CSS size at a device scale factor of 2). For PDFs they are empty and pageCount holds the number of pages. When you use a dataset, the item's own fields are kept next to these columns (turn off Keep the item's original fields to drop them). A run summary is saved as OUTPUT in the key-value store.

The file key is built from the URL and the capture options, so running the same URL with the same options again writes to the same key, and a URL repeated in one run is captured once.

Error codes (error, with a plain-English errorMessage): invalidUrl, blockedPrivateAddress, dnsFailed, connectionRefused, tlsError, timeout, tooManyRedirects, download, navigationFailed, selectorNotFound, invalidSelector, waitForSelectorTimeout, pageCrashed, captureFailed.

How much does it cost?

Pay per event: $2.00 per 1,000 screenshots or PDFs ($0.002 per file saved); failed pages are free. Apify platform usage is included. Each run also has Apify's run start fee of $0.005 per GB of run memory: $0.01 at the default 2 GB.

One saved file (PNG, JPEG or PDF) is one charge. Rows with an error (invalid URL, blocked address, page that didn't load, element not found, timeout) save no file and are free. A page that loads with an error status such as 404 is still captured and charged, because you get its screenshot; check statusCode.

Worked examples:

  • 1,000 homepages as full-page PNGs: 1,000 × $0.002 + $0.01 run start = $2.01.
  • A daily capture of 10 competitor pricing sections: $0.02 per run, plus $0.01 run start = $0.03 per run, about $0.90 per month.

If you set a maximum cost per run, the Actor stops cleanly at that limit: it doesn't start pages the budget can't pay for, and files that couldn't be paid for are removed. If a run is restarted (for example after a timeout or migration), it continues after the rows already in its dataset.

FAQ and limits

Will every site look right?

Most do, because this is a real Chromium. But sites with heavy bot protection (Cloudflare challenges, CAPTCHAs) may show a challenge page or fail, and pages behind a login show the login page. The Actor doesn't use proxies, log in or solve challenges. Some sites show a consent wall that isn't one of the known banners, or lock scrolling until consent is given; those can still appear in the screenshot.

Where are the files, and for how long?

In the run's default key-value store, under the key in each row; fileUrl is a direct link (signed when your account restricts storage access). Storage retention follows your Apify plan, so download the files or copy them elsewhere if you need them long-term.

Why is a tall page cut off?

A single image is limited to 16,384 pixels tall (and wide) in image pixels, so at a scale factor of 2 that's 8,192 CSS pixels of page. Longer pages are captured from the top down to the limit and the row has truncated: true. Use PDF for very long pages: it has no height limit.

What happens when a page never finishes loading?

If the Wait until moment doesn't come within the navigation timeout (common with networkidle on sites that keep connections open), the page is captured as it is and the row has navigationTimedOut: true. If the server doesn't respond at all, the row is a free timeout error.

Can I capture internal or localhost pages?

No. Private, loopback, link-local and cloud-metadata addresses are always refused, including when a public page redirects to one or tries to load images or scripts from one.

Other limits

  • Only http and https URLs. Downloads (links to zip, exe and similar files) are refused with error download.
  • Each URL is loaded in its own fresh browser context: no cookies, logins or storage carry over between URLs.
  • The user agent is a standard Chrome one for the chosen device, plus a token naming this tool. Pages load in English (en-US).
  • The mobile and tablet presets emulate screen size, pixel density, touch and user agent in Chromium; they don't reproduce Safari-specific rendering.
  • PDFs use the page's print styles, like Chrome's "Save as PDF".

Other tools by the same author

ActorUse it to
Bulk URL Status CheckerCheck status codes, redirects and SSL for a URL list first, then capture only the pages that load.
PageSpeed & Lighthouse AuditGet Lighthouse scores and Core Web Vitals for the same pages.
Dataset DeliveryDeliver the results table, with its file links, as CSV or Excel to SFTP, Dropbox or Google Drive.
Google Sheets Import & ExportSend the rows (URL, title, status, file link) to a Google Sheet.