Website Screenshot & PDF: Full-Page, Mobile, Change Alerts avatar

Website Screenshot & PDF: Full-Page, Mobile, Change Alerts

Pricing

from $2.50 / 1,000 captures

Go to Apify Store
Website Screenshot & PDF: Full-Page, Mobile, Change Alerts

Website Screenshot & PDF: Full-Page, Mobile, Change Alerts

Full-page website screenshots and PDFs in PNG, JPEG, WebP. Lazy-load scrolling, sticky headers fixed, cookie banners dismissed, mobile/tablet/desktop in one run, element and clip capture, visual change alerts with diff %. Same input as apify/screenshot-url. Failed pages are free.

Pricing

from $2.50 / 1,000 captures

Rating

0.0

(0)

Developer

Nat | Data Tools

Nat | Data Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Turn any list of URLs into full-page screenshots (PNG, JPEG, WebP) and PDFs. Desktop, laptop, tablet and mobile in one run. Lazy images are scrolled into view, cookie banners are clicked away, sticky headers appear once, emoji and CJK text render. Need monitoring? Schedule it and get only the pages that visually changed, with the diff % and a highlighted diff image.

Failed pages cost nothing. Timeouts, bot walls, robots.txt skips and 4xx/5xx error pages are never charged.

Why this screenshot Actor

This Actorapify/screenshot-url and most screenshot actors
Full pageReally full: lazy-load scrolling on by default, image/font waits, app-shell pages unrolledOften only the first screen or blank placeholders ("only screenshots above the fold")
Sticky headers & chat bubblesHeader shown once at the top, floating widgets removed (stickyElements)Header repeated or floating over content (open issue since 2024)
Cookie bannersClicked away (OneTrust, Cookiebot, Didomi, Quantcast, Sourcepoint, Usercentrics, …)Banner covers the page
Size controlmaxHeight, viewport height, element selector, clip rectangleWidth only ("Cannot set height of the image")
Devicesdesktop, laptop, 1080p, 2K, mobile, Android, tablet, any Playwright device, or "1366x768@2", several per runOne width per run
FormatsPNG, JPEG, WebP and PDF from one page loadPNG or PDF
Speed & hangsPer-page hard deadline + one retry; a run never hangs on one pageRuns stuck for minutes ("API gets stuck for a very long time")
Price$3 / 1,000 files, all-inclusive; failures freeFree actor but you pay compute; reviews report up to $0.04 per screenshot
MonitoringOnly changed pages, diff %, changed region, diff imageRe-download everything
FontsColour emoji + Chinese/Japanese/Korean fonts installedEmoji as boxes
Page metadataHTTP status, final URL after redirects, title, description, language, timingsURL + image link only
AI agentsLenient input: "example.com", "mobile", "jpg"; optional base64 outputStrict input
CompatibilityAccepts the same input as apify/screenshot-url and returns startUrl, url, screenshotUrl, screenshotKey—

What you can do

  • Website archives and compliance evidence: full-page PNG + PDF of each page, timestamped into a named store.
  • Competitor and pricing monitoring: schedule daily, get alerted only when a page changes (with what changed highlighted).
  • QA and responsive checks: every page on desktop, tablet and mobile in one run, from a sitemap.
  • SEO and marketing: thumbnails, social-card crops (clip), landing-page galleries.
  • AI agents: give an LLM a picture of a page (includeBase64) through Apify's AI integrations.
  • Your own stack: run it from the Apify API, the Python or JavaScript client, Make, Zapier, n8n, Google Sheets, Slack, webhooks or a schedule; export JSON, CSV or Excel.

Quick start

1. Full-page screenshots of a few sites

{ "urls": [{ "url": "https://apify.com" }, { "url": "https://en.wikipedia.org/wiki/Web_scraping" }] }

2. Desktop + mobile, PNG and PDF

{
"urls": [{ "url": "https://www.bbc.com/news" }],
"devices": ["desktop", "mobile"],
"formats": ["png", "pdf"]
}

→ 4 files (2 devices × 2 formats) = 4 captures.

3. Just the top of the page, or one element

{ "urls": [{ "url": "https://stripe.com" }], "maxHeight": 2000, "formats": ["jpeg"], "quality": 75 }
{ "urls": [{ "url": "https://www.python.org" }], "selector": "#content", "deviceScaleFactor": 2 }

4. Every page of a sitemap

{ "sitemapUrls": ["https://crawlee.dev/sitemap.xml"], "maxUrls": 200, "formats": ["webp"] }

For 50+ pages, give the run 4 GB memory (two pages render in parallel; it is ~25 % faster per page).

5. Visual change monitoring (schedule it)

{
"urls": [{ "url": "https://competitor.example/pricing" }],
"onlyChanges": true,
"monitorName": "competitor-pricing",
"changeThresholdPercent": "1",
"hideSelectors": [".rotating-banner"]
}

The first run stores the baseline. Every later run delivers the page only if at least 1 % of it changed, with change.diffPercent, the changed region and a highlighted change.diffImageUrl. Unchanged pages cost a cheaper monitor-check. Connect a Slack, email or webhook integration to the run to get alerts.

Migrating from apify/screenshot-url

Paste your existing input. urls, format, waitUntil (including networkidle0 / networkidle2), delay, viewportWidth, scrollToBottom, delayAfterScrolling, waitUntilNetworkIdleAfterScroll, waitUntilNetworkIdleAfterScrollTimeout, proxy and selectorsToHide work as before, and each dataset row keeps startUrl, url, screenshotUrl and screenshotKey.

Output

One dataset row per URL and device; the files are in the run's key-value store (or the named store you choose) with public links.

{
"startUrl": "https://apify.com",
"url": "https://apify.com/",
"device": "desktop",
"viewport": { "width": 1280, "height": 800, "deviceScaleFactor": 1, "isMobile": false },
"fullPage": true,
"status": "ok",
"httpStatus": 200,
"title": "Apify: Full-stack web scraping and data extraction platform",
"description": "Cloud platform for web scraping, browser automation, AI agents, and data for AI…",
"lang": "en",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/axdGeKUanIf75yrfA/records/screenshot_apify_com_desktop_b02971732f.png?signature=…",
"screenshotKey": "screenshot_apify_com_desktop_b02971732f.png",
"format": "png",
"pdfUrl": null,
"files": [
{ "format": "png", "key": "screenshot_apify_com_desktop_b02971732f.png", "url": "https://api.apify.com/v2/key-value-stores/…", "bytes": 1227153, "width": 1280, "height": 10052 }
],
"pageHeight": 10052,
"truncated": false,
"cookieBannerClicked": "#onetrust-accept-btn-handler",
"transferKb": 5481,
"blockedRequests": 28,
"timings": { "navigationMs": 887, "loadMs": 1103, "scrollMs": 2576, "readyMs": 4685, "screenshotMs": 299, "totalMs": 5312 },
"warnings": [],
"charged": true,
"capturedAt": "2026-10-17T10:13:01.000Z"
}

With monitoring, changed pages also carry:

"change": {
"status": "changed",
"diffPercent": 14.7,
"changedBox": { "x": 0, "y": 220, "width": 1280, "height": 660 },
"heightChangePx": 71,
"previousCapturedAt": "2026-10-16T09:41:12.997Z",
"previousScreenshotUrl": "https://api.apify.com/v2/key-value-stores/…",
"diffImageUrl": "https://api.apify.com/v2/key-value-stores/…_diff.jpg"
}

Pages that could not be captured are listed too (free), with status failed, blocked (bot wall, with blockedBy) or skipped (robots.txt, invalid or private URL, element not found), plus errorReason and error. Run totals and every failure are in the STATISTICS record.

Pricing

Pay per event. Platform usage is included: no start fee, no compute bill on top.

EventWhat it isPrice
CaptureOne delivered file: PNG, JPEG, WebP or PDF$3.00 / 1,000 ($0.003)
Monitor checkMonitoring: page rendered and compared, nothing changed, nothing delivered$2.20 / 1,000
Residential MBOnly if you choose Apify RESIDENTIAL proxy: per started MB of page traffic$0.012 / MB

Lower rates apply automatically on higher Apify plans (captures down to $2.50 / 1,000). Never charged: failed or timed-out pages, bot walls, robots.txt skips, invalid URLs, HTTP 4xx/5xx error pages (delivered free), diff images, base64 copies.

Examples: 1,000 URLs, full-page PNG = $3. 100 URLs × desktop + mobile × PNG + PDF = 400 files = $1.20. Daily monitoring of 20 pricing pages for a month ≈ 600 checks ≈ $1.32, plus $0.003 for each day a page actually changed.

The Actor checks your run's maximum cost before each page and stops cleanly when it is reached.

Free Apify plan: up to 25 pages (URL × device) per run (a limit set by the developer, not by Apify). Any paid plan removes it.

Good to know

  • No proxy by default. The browser connects directly from Apify's servers, which works for the vast majority of public sites and keeps captures fast and cheap. Use proxyConfiguration for other countries (Apify datacenter proxy) or residential IPs (billed per MB).
  • Bot walls are not bypassed. Sites behind Cloudflare challenges, DataDome, PerimeterX, Akamai or CAPTCHAs are reported as blocked and not charged. The Actor never solves CAPTCHAs or fakes challenge tokens.
  • robots.txt is respected by default. Turn respectRobotsTxt off only for sites you own or are allowed to capture.
  • No logins. Pages behind a login are out of scope; the Actor does not accept cookies or credentials.
  • Very long pages are cut at maxPageHeight (20,000 px by default) and flagged truncated. WebP files are limited to 16,383 px by the format itself; use PNG or JPEG for longer pages.
  • Video and audio are not loaded by default (a screenshot cannot show them, and they slow pages down). Set blockResources to [] to load everything.
  • Memory: 2 GB (default) renders one page at a time and is the cheapest for small runs; 4 GB renders two at once and is best for large lists.
  • Files in the run's default store follow your Apify data retention. Set keyValueStoreName to keep a permanent, timestamped archive.

Capturing a public web page the way a browser displays it is a common, long-established practice (archiving, QA, monitoring, evidence). This Actor only opens pages anyone can see without logging in, respects robots.txt and does not bypass bot protection. Screenshots can contain copyrighted material and personal data (for example names in a news article): they are stored in your Apify storage and you are responsible for how you use them under copyright law, the site's terms and data-protection law such as the GDPR. Check a site's terms before capturing it at scale; for commercial redistribution, consult a lawyer.

FAQ

How is this different from ScreenshotOne, Urlbox or ApiFlash? Similar features (full page, devices, cookie banners, PDF), no monthly plan: you pay $3 per 1,000 files only when you use it, failures are free, and visual change monitoring is built in.

Can I call it for one URL from my app? Yes, through the Apify API (run-sync endpoint) or the client libraries; a single page usually takes 5–15 seconds including browser start.

Can I use it from Claude, ChatGPT or Cursor? Yes, through Apify's AI integrations. Set includeBase64: true if the agent cannot download URLs.

Why is one page slower than another? Heavy JavaScript sites (animated hero sections, big news front pages) take 20–40 s on a shared cloud CPU; simple pages take 2–5 s. timings in each row shows where the time went.

What if a site changes its cookie banner? The page is still captured; the banner may be visible. Add its selector to hideSelectors and open an issue so it gets added for everyone.