Website Screenshot Pro avatar

Website Screenshot Pro

Pricing

from $2.00 / 1,000 screenshot captureds

Go to Apify Store
Website Screenshot Pro

Website Screenshot Pro

Pixel-perfect screenshots of any URL: full page, mobile devices, dark mode, cookie-banner removal, PNG/JPEG/WebP.

Pricing

from $2.00 / 1,000 screenshot captureds

Rating

0.0

(0)

Developer

Andrew Schneidwind

Andrew Schneidwind

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Share

Website Screenshot Pro ๐Ÿ“ธ โ€” full-page screenshots that actually work

Capture pixel-perfect screenshots of any website โ€” full page or viewport, desktop or mobile, light or dark mode โ€” and get back clean image files plus a structured dataset with download URLs.

Built for reliability: automatic cookie-banner removal, lazy-load scrolling, animation freezing, and a smart fallback when pages never finish loading.

Why this Actor?

  • โœ… Full-page screenshots that actually work โ€” auto-scrolls first so lazy-loaded images render instead of showing up as blank gaps
  • ๐Ÿช Cookie banners removed automatically โ€” covers OneTrust, Cookiebot, Didomi, Usercentrics, Quantcast, Osano, HubSpot, and more
  • ๐Ÿ“ฑ Real device presets โ€” iPhone 15, iPhone SE, Pixel 7, iPad, Galaxy S23, or any custom desktop viewport up to 4K
  • ๐ŸŒ™ Dark mode rendering โ€” capture how your site looks with prefers-color-scheme: dark
  • ๐Ÿ–ผ๏ธ PNG, JPEG, or WebP output with quality control
  • ๐ŸŽฏ Wait controls โ€” wait for a CSS selector, add a fixed delay, or tune the navigation timeout
  • ๐Ÿงน Hide anything โ€” pass extra CSS selectors to remove sticky headers, chat widgets, or popups
  • ๐Ÿ’ฐ Pay only for successful screenshots โ€” failed pages are never charged

How to screenshot a website

  1. Paste one or more URLs.
  2. Pick full page or viewport, a device preset or custom viewport, and the image format.
  3. Click Start. Images land in the key-value store with direct download links in the dataset.

One URL or ten thousand โ€” same three steps.

Input example

{
"urls": [{ "url": "https://apify.com" }],
"fullPage": true,
"format": "png",
"device": "desktop",
"viewportWidth": 1920,
"hideCookieBanners": true,
"darkMode": false
}

Output

Screenshots are saved to the run's key-value store. The dataset contains one record per URL with a direct download link:

{
"url": "https://apify.com",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/.../records/screenshot_001_apify.com.png",
"format": "png",
"fullPage": true,
"device": "desktop",
"bytes": 245133,
"status": "SUCCEEDED"
}

Failed URLs get "status": "FAILED" with an error message โ€” and are not charged.

Pricing

$2.00 per 1,000 screenshots captured, plus a few cents of platform usage. Failed pages are never charged. No subscriptions, no minimums โ€” perfect for both one-off batches and scheduled monitoring.

Use cases

  • AI agents & LLM apps โ€” give your agent eyes; capture pages for visual analysis or archiving
  • Monitoring โ€” schedule daily screenshots of your site, competitors, or price pages
  • Link previews & social cards โ€” generate preview images for URLs at scale
  • Archiving & compliance โ€” keep visual records of pages at a point in time
  • QA & design review โ€” check how pages render on mobile devices and in dark mode

Using via API

Like every Apify Actor, you can run it via REST API, the Apify JavaScript/Python clients, CLI, or on a schedule. Integrate with Make, Zapier, n8n, LangChain, and more.

curl -X POST "https://api.apify.com/v2/acts/originalvi~website-screenshot-pro/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "urls": [{ "url": "https://example.com" }] }'
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("originalvi/website-screenshot-pro").call(run_input={
"urls": [{"url": "https://example.com"}, {"url": "https://news.ycombinator.com"}],
"fullPage": True,
"device": "iphone15",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["url"], "โ†’", item["screenshotUrl"])

FAQ

Does it work on sites that block bots? Most sites render fine. For strict ones, enable Apify Proxy (residential) in the input.

How do I screenshot pages behind a login? Not supported in this version โ€” reach out via the Issues tab if you need it and I'll prioritize it.

A page renders incompletely โ€” what should I try? Add a waitForSelector for the main content element, or set delayMs to 2000โ€“5000. For full-page shots keep scrollToBottom enabled.

Can I capture a specific element only? Pass CSS selectors in hideSelectors to strip everything else, or open an issue โ€” element-clipping is on the roadmap.

What's the maximum page size? Full-page captures handle very long pages (tens of thousands of pixels). Extremely long pages are capped by Chromium's internal limits; the Actor falls back to the maximum capturable height.

How fast is it? A typical page takes 3โ€“8 seconds including navigation. Batches run URLs sequentially within one run; start several runs in parallel for large jobs.

More Actors by this developer

Found a problem?

Open an issue on the Issues tab and I'll fix it fast โ€” usually within a day.