Bulk Website Screenshot Capture — Full-Page PNG/JPEG avatar

Bulk Website Screenshot Capture — Full-Page PNG/JPEG

Pricing

from $12.50 / 1,000 results

Go to Apify Store
Bulk Website Screenshot Capture — Full-Page PNG/JPEG

Bulk Website Screenshot Capture — Full-Page PNG/JPEG

Capture full-page or viewport screenshots of hundreds of URLs in bulk using headless Chromium via Playwright. Desktop, mobile and tablet device profiles. Cookie banner auto-dismiss and lazy-load triggering. PNG or JPEG output in key-value store.

Pricing

from $12.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

4

Monthly active users

2 days ago

Last modified

Share

Bulk Website Screenshot Capture — Full-Page & Viewport PNG/JPEG Screenshots

Apify Actor No API key Pay per result Website Tools Export

Take high-resolution screenshots of URL lists in bulk. Each attempted URL gets a structured success or error row with its page metadata; successful captures include a key-value-store download URL. Capture full-page or viewport-only PNG/JPEG images with desktop, mobile or tablet viewport presets in headless Chromium. Public pages may still differ from a personal browser because authentication, consent, bot defenses and regional delivery remain site-specific.

🏆 Why this screenshot Actor?

Bounded bulk capture · full-page or viewport output · PNG or JPEG · desktop/mobile/tablet viewport presets · best-effort cookie-banner dismissal and lazy-load triggering · explicit per-URL failures · exportable manifest.


✨ What this Actor does / Key features

  • 📸 Bulk capture — process a bounded URL list; each URL produces either a screenshot row or an explicit error row.
  • 🖥️ Full-page or viewport — capture the entire scrollable page (fullPage: true) or just the visible fold — no more cut-off footers.
  • 🧩 Headless Chromium (Playwright) — renders client-side JavaScript and captures the resulting page within bounded navigation and handler timeouts.
  • 📱 Three viewport presets — Desktop (1920×1080), Mobile (390×844) and Tablet (1024×1366), plus a custom viewport. Presets do not spoof a specific device user-agent.
  • 🖼️ PNG or JPEG — lossless PNG for pixel-perfect archives, or adjustable-quality JPEG for smaller files.
  • 🍪 Cookie-banner auto-dismiss — best-effort handling for common consent controls; custom or shadow-DOM banners can remain.
  • 🔄 Bounded lazy-load triggering — scrolls a finite number of steps so infinite-scroll pages cannot trap the run.
  • 🔗 Stored image URLs — screenshots are saved to the run's key-value store and remain available according to that store's access and retention settings.
  • 🛡️ Proxy support — Apify Proxy integration; datacenter or residential for geo-restricted or rate-limited pages.
  • 💸 Cost guardrailmaxScreenshots caps the run so a huge URL list can't run away with your budget.

🚀 Quick start (3 steps)

  1. Configure — paste your website URLs into URLs to Screenshot, pick a Device Profile and Image Format (PNG or JPEG), and choose full-page or viewport.
  2. Run — click Start. The Actor opens each page in headless Chromium, dismisses cookie banners, scrolls to trigger lazy content, and captures the shot.
  3. Get your data — open the Output tab and export the manifest, or download each image from its screenshotUrl while the run store remains retained and accessible.

📥 Input

startUrls is optional: empty input captures a small built-in public test set. Direct access is the default; enable proxy routing only when the target requires it.

Example — full-page desktop PNGs of competitor homepages

{
"startUrls": [
{ "url": "https://apify.com" },
{ "url": "https://github.com" },
{ "url": "https://vercel.com" }
],
"deviceProfile": "desktop",
"fullPage": true,
"format": "png",
"waitForTimeout": 3000,
"maxScreenshots": 100
}

Example — mobile JPEG snapshots for responsive QA

{
"startUrls": [
{ "url": "https://stripe.com" },
{ "url": "https://airbnb.com" }
],
"deviceProfile": "mobile",
"fullPage": false,
"format": "jpeg",
"quality": 70,
"waitForTimeout": 5000
}

Example — custom viewport with residential proxy for geo-restricted pages

{
"startUrls": [{ "url": "https://example.com" }],
"deviceProfile": "custom",
"viewportWidth": 1440,
"viewportHeight": 900,
"fullPage": true,
"format": "png",
"waitForTimeout": 8000,
"maxScreenshots": 50,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}
FieldTypeDefaultDescription
startUrlsarraybuilt-in test setOptional URL list. Each URL produces a screenshot or an explicit error row.
deviceProfilestring (enum)desktopdesktop (1920×1080), mobile (iPhone 15, 390×844), tablet (iPad Pro, 1024×1366) or custom.
viewportWidthinteger1920Viewport width in px (320–3840). Used only when deviceProfile is custom.
viewportHeightinteger1080Viewport height in px (240–4320). Used only when deviceProfile is custom.
fullPagebooleantrueCapture the entire scrollable page (true) or just the visible viewport (false).
formatstring (enum)pngpng (lossless, larger) or jpeg (lossy, smaller).
qualityinteger80JPEG quality percentage (1–100). Ignored when format is png.
waitForTimeoutinteger3000Extra wait after page load, in ms (0–30000), for lazy content, animations and dynamic elements.
maxScreenshotsinteger100Maximum screenshots per run (1–1000). Caps the run to control cost.
proxyConfigurationobjectdirectOptional proxy routing for geo-restricted or rate-limited pages.

Tip: For heavy JavaScript apps (dashboards, single-page sites), raise waitForTimeout to 5000–8000 ms so everything finishes rendering before the capture. For smaller files when lossless quality isn't critical, use format: "jpeg" with quality: 60.

📤 Output

One row per screenshot, plus the image itself in the key-value store. The dataset is a machine-readable manifest with direct download URLs — export to JSON, CSV, Excel or XML. Here is a sample record:

{
"url": "https://apify.com",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/xxxxxxxx/records/screenshot_1.png",
"pageTitle": "Apify — Full-stack web scraping and data extraction platform",
"viewportWidth": 1920,
"viewportHeight": 1080,
"fullPage": true,
"format": "png",
"fileSize": 1240523,
"capturedAt": "2026-07-06T12:00:00.000Z"
}

The images themselves live in Apify's key-value store as PNG or JPEG files. Download an individual screenshot from its screenshotUrl while the store is retained and accessible, or export the files through the Apify API.

💡 Use cases

  • Competitive analysis & design inspiration — capture 50 competitor homepages, pricing pages and product screens in minutes for a swipe file or design review.
  • Visual regression testing & QA — run the same production URL list on a schedule and compare shots side-by-side to catch layout breaks before customers do.
  • Website archiving & compliance — archive pages as timestamped, full-page PNGs for regulatory filings, trademark disputes or historical records.
  • Pre-purchase & pre-redesign audits — document the "before" state of a client site with pixel-perfect, dated screenshots before a project starts.
  • Portfolio & showcase creation — freelancers and agencies snapshot their work before sites change or disappear.
  • Responsive checks — capture the same URLs on desktop, mobile and tablet profiles to verify responsive layouts.

👥 Who uses it

Marketing & competitive-intelligence teams · web designers & agencies · QA and visual-regression engineers · legal, brand and compliance teams · freelancers building portfolios · growth and lead-gen teams documenting prospect websites at scale.

💰 Pricing

This Actor runs on a simple pay-per-result model — you pay for the screenshots you capture, with no separate monthly subscription. Use maxScreenshots to cap a run and keep costs predictable, and try it on the free tier first before scaling up. See the Pricing tab on this page for the current rate.

❓ Frequently Asked Questions

Is this a website screenshot API alternative? Yes. You paste a URL list and the Actor renders each page in headless Chromium, returning a retained-store download URL for each successful shot and an explicit row for each failure.

Can I take screenshots without an API key or login? Yes. There is no third-party screenshot service, account or key required — only an Apify account. The Actor captures any publicly accessible URL over a real browser.

How do I take full-page screenshots of a list of URLs in bulk? Paste your URL list into URLs to Screenshot and keep Full Page on. Each successful capture gets a retained-store screenshotUrl; failed URLs get an error row.

Can I capture mobile screenshots of a website? Yes. Set Device Profile to mobile or tablet for those viewport sizes. These presets change viewport dimensions but do not impersonate a specific device user-agent.

How do I export the screenshots to CSV or JSON? The dataset manifest (URLs, titles, file sizes, screenshotUrl) exports as CSV, JSON, Excel or XML from the Apify console or API. The image files themselves download from each screenshotUrl.

Does it capture behind-login pages? Not out of the box — the Actor captures publicly accessible URLs. For authenticated pages you would need to supply session cookies.

How much data can I get / how many screenshots per run? Up to 1,000 screenshots per run (the maxScreenshots ceiling). For very large lists, split them across multiple runs or schedule them. Each screenshot is typically ~1–5 MB depending on page size and format.

Are the screenshots stored permanently? Screenshots stay in Apify's key-value store according to the store's retention and access settings. Download and archive any image that needs longer-lived storage.

Is it legal to screenshot websites? The Actor only captures publicly available web pages. You are responsible for using the resulting images in compliance with the target sites' terms of service and applicable laws (e.g. copyright, GDPR).

🔗 More website & lead-gen tools by logiover

Building a full website-intelligence pipeline? Pair the screenshot Actor with the rest of the logiover website toolkit:

ToolWhat it does
Website Change MonitorDetect visual & text changes on any page on a schedule
Website SEO Audit CrawlerCrawl a site and flag on-page SEO issues
Website Tech Stack DetectorIdentify frameworks, CMS, analytics & hosting
Website Image & Media ExtractorPull every image and media asset from a site
Bulk URL Status CheckerCheck HTTP status of thousands of URLs
Broken Link CheckerFind dead links across a whole website
Sitemap to URL CrawlerExpand sitemaps into a clean URL list to feed here
URL to MarkdownConvert any page into clean Markdown
Social Card Preview APIRender OpenGraph/Twitter card previews for URLs
Website Text & Markdown CrawlerExtract readable page text at scale
JSON-LD & Meta Tag ExtractorPull structured data & meta tags from pages
Website Contact ScraperExtract emails, phones & socials from websites

👉 Browse all logiover scrapers on Apify Store — 180+ actors across real estate, jobs, crypto, social media & B2B data.

⏰ Scheduling & integration

Schedule this Actor on Apify to build a visual archive of a fixed URL list daily or weekly. Push the manifest to Google Sheets, a database, BI tools or webhooks through the Apify API, and connect it to Make, n8n or Zapier — for example, auto-save each shot to a dated Google Drive folder, or ping Slack when a competitor's homepage changes.

⭐ Support & feedback

Found a bug or need an extra option (element-level capture, custom headers, a new device profile)? Open an issue on the Issues tab — response is usually fast. If this Actor saves you time, a ★★★★★ review on the Store page genuinely helps and is hugely appreciated. 🙏

This Actor captures only publicly available web pages and is intended for legitimate research, QA, archiving and analytics use. You are responsible for complying with the target websites' terms of service, copyright, GDPR and any applicable local laws.


📝 Changelog

2026-08-01

  • Completed the August 2026 full health check: verified empty/programmatic default, Console UI default, and two source-informed alternative inputs on Apify.
  • Confirmed successful live execution, non-empty structured output, dataset-field/type integrity, and logical sample quality within the 5-minute quality window.
  • Replaced fragile Console-prefill targets with lightweight public pages after the former proxied Apify/GitHub pair timed out; the exact new two-URL desktop PNG input produced 2/2 non-empty screenshots locally.
  • Retained explicit all-failed semantics and per-URL failure rows so a transport-wide screenshot failure cannot be reported as a successful empty dataset.

2026-08-01 — Health-check remediation

  • August 2026 monthly health-check remediation is in progress; this build contains fixes verified from empty/default, Console-default, targeted live probes, or field-level semantic review.
  • Bounded navigation, scrolling, retries and global runtime; fixed failed-request accounting, duplicate URL handling and public key-value-store URLs; and made all-failed batches fail explicitly instead of succeeding with an empty dataset.
  • Replaced the fragile Console prefill targets with lightweight public pages and verified the exact two-URL desktop PNG input locally: 2/2 screenshots, valid titles and non-empty image files.
  • The final four-input matrix verdict will be appended after post-build cloud revalidation.

2026-07-06

  • ✨ README overhaul: gold-standard structure with badge row, named input scenarios, real-schema output sample & full field reference, expanded keyword-gap FAQ, and a website-tools cross-promo grid.

2026-07-01

  • Maintenance pass: re-verified end-to-end on live data and confirmed successful runs within the 5-minute quality window on the default input.
  • Sharpened Store metadata (SEO title & description) and expanded the FAQ with high-intent, long-tail questions for easier discovery in Google and Apify Store search.
  • Added ready-to-run example tasks that cover common real-world use cases.