🔥 Website Screenshot Generator avatar

🔥 Website Screenshot Generator

Pricing

from $3.00 / 1,000 results

Go to Apify Store
🔥 Website Screenshot Generator

🔥 Website Screenshot Generator

[🥇 high-quality 🏆] Website Screenshot generator for full-page, viewport, and element screenshots. Capture websites as PNG, JPEG, WebP, or PDF with mobile emulation, metadata extraction, and batch processing.

Pricing

from $3.00 / 1,000 results

Rating

0.0

(0)

Developer

extractmaster01

extractmaster01

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Website Screenshot Generator

Capture high-quality screenshots of any website at scale. Generate full-page screenshots, viewport screenshots, or capture a specific page element. Supports desktop and mobile devices, with output in PNG, JPEG, WebP, or PDF.

Perfect for website monitoring, SEO audits, QA testing, competitor tracking, visual regression testing, website archiving, and thumbnail generation.


Why this Actor

Most screenshot tools give you a raw image and stop there. This one delivers results that are actually ready to use:

  • Mobile screenshots that look right — sites respond with their actual mobile layout, not a squished desktop version
  • PDFs that match what you see in the browser — no layout surprises, no font changes
  • Clean images by default — cookie banners, popups, and overlays are handled before capture
  • Metadata included in every result — title, description, Open Graph tags, and canonical URL come with each screenshot at no extra step

What you can capture

  • Full page — the entire content from top to bottom, including what's below the fold
  • Viewport — only what's visible on screen when the page first loads
  • Element — a single part of the page by CSS selector: a chart, a hero image, a pricing card

Features

  • 11 device presets — iPhone 15 Pro, iPhone 14, iPhone SE, Pixel 7, Samsung Galaxy S23, iPad Pro, iPad Mini, and 4 desktop sizes; or set any custom width and height
  • 4 output formats — PNG, JPEG, WebP, and PDF
  • Lazy content support — captures images and content that only appear after scrolling
  • Smart wait — knows when the page has truly finished loading before capturing
  • Carousel and slider support — captures animated sections at their best visible state
  • Cookie banner auto-dismiss — covers OneTrust, Didomi, Cookiebot, CookieYes, Quantcast, and more
  • Element hiding — remove any element before capture: chat widgets, floating banners, overlays
  • Ad and tracker blocking — cleaner screenshots with distractions removed
  • Dark mode support — captures the dark version of any site that supports it
  • Custom CSS — override any style before the screenshot is taken
  • Authenticated pages — pass session cookies to capture logged-in or personalized content
  • Custom HTTP headers — add tokens, flags, or any header your target site needs
  • Redirect tracking — records both the original URL and the final destination
  • Batch processing — up to 1,000 URLs per run with adjustable concurrency
  • Retry on failure — automatically retries flaky or slow pages
  • Apify Proxy support — for sites that block automated requests

Use cases

Website monitoring — schedule regular runs to detect visual changes, layout breaks, or content updates. Every run creates a timestamped archive you can compare over time.

Competitive intelligence — capture competitor landing pages, pricing pages, and product listings at scale. No manual browsing.

QA and visual testing — verify how your site looks across iPhone, Android, and desktop before every release.

Thumbnail and preview generation — generate website preview images for link cards, OG images, or any product that needs a visual of a URL.

SEO and content audits — get a screenshot and full metadata for hundreds of URLs in a single run.

Compliance and archiving — save visual records of web pages for legal, regulatory, or historical purposes.

Bug reporting — document rendering issues across viewports and send a link, not a description.


Quickstart

  1. Add one or more URLs to the urls field
  2. Choose a device preset and output format
  3. Click Start — results appear in the dataset as they complete

Each run produces a public screenshot URL and a metadata row per page. Export as JSON, CSV, or Excel.


Input

FieldTypeDefaultDescription
urlsURL[]URLs to capture. Required.
screenshotTypestringfullPagefullPage, viewport, or element
formatstringpngpng, jpeg, webp, or pdf
qualityinteger85Quality for JPEG and WebP (1–100). Ignored for PNG and PDF.
devicestringDesktop 1920x1080Device preset. See table below. Use custom for manual dimensions.
viewportWidthinteger1280Width in pixels. Only when device is custom.
viewportHeightinteger1080Height in pixels. Only when device is custom.
selectorstringCSS selector. Required when screenshotType is element.
waitUntilstringloadload, domcontentloaded, networkidle, networkidle0, networkidle2
waitForSelectorstringWait for this element to appear before capturing.
delayinteger0Extra wait in ms before capture. Max 3,600,000.
waitForImagesbooleanfalseWait for all images to load. Recommended for carousels and galleries.
scrollToBottombooleanfalseScroll to the bottom before capturing.
delayAfterScrollinginteger2500Wait in ms after scrolling. Used when network idle is off.
waitUntilNetworkIdleAfterScrollbooleanfalseWait for the page to settle after scrolling instead of a fixed delay.
waitUntilNetworkIdleAfterScrollTimeoutinteger30000Max ms to wait after scrolling.
blockCookieBannersbooleantrueAuto-dismiss cookie banners before capture.
selectorsToHidestringCSS selectors to hide before capture. e.g. .chat-widget, #cookie-bar
blockAdsbooleanfalseRemove ads and trackers before capturing.
darkModebooleanfalseCapture the site in dark mode.
javascriptbooleantrueRun JavaScript on the page. Disable for faster captures on static sites.
extractMetadatabooleantrueInclude title, description, OG tags, canonical URL, and language in results.
customHeadersobject{}HTTP headers to send. e.g. {"Authorization": "Bearer TOKEN"}
cookiesarray[]Cookies to inject before navigating. Each needs name, value, and domain.
injectCssstringCSS to apply before capture.
timeoutinteger30000Page load timeout in ms (5,000–120,000).
maxRetriesinteger10Retries per failed URL.
maxConcurrencyinteger3Simultaneous pages. Higher is faster but uses more memory.
maxItemsintegerStop after this many screenshots. Leave empty for no limit.
proxyConfigurationobjectApify Proxy or custom proxy URL.

Device presets

PresetViewportMobileTouch
Desktop 1920x10801920×1080
Desktop 1440x9001440×900
Desktop 1280x8001280×800
Laptop 1366x7681366×768
iPhone 15 Pro393×852
iPhone 14390×844
iPhone SE375×667
Pixel 7412×915
Samsung Galaxy S23360×780
iPad Pro 12.91024×1366
iPad Mini768×1024
customviewportWidth × viewportHeight

Output

Each URL produces one dataset row and one file in the Key-Value Store.

FieldTypeDescription
startUrlstringOriginal input URL
urlstringFinal URL after redirects
screenshotUrlstringPublic direct-download link
screenshotKeystringKey in the Key-Value Store
formatstringpng, jpeg, webp, or pdf
screenshotTypestringfullPage, viewport, or element
viewportobject{ width, height } used for capture
devicestringDevice preset name
titlestringPage title
descriptionstringMeta description
ogTitlestringOpen Graph title
ogImagestringOpen Graph image URL
ogDescriptionstringOpen Graph description
canonicalUrlstringCanonical URL
languagestringPage language
timestampstringISO 8601 capture time
successbooleantrue on success
errorstringError message if success is false

Sample output

{
"startUrl": "https://example.com",
"url": "https://example.com/",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/screenshot_example_com_a1b2c3d4.png",
"screenshotKey": "screenshot_example_com_a1b2c3d4.png",
"format": "png",
"screenshotType": "fullPage",
"viewport": { "width": 1920, "height": 1080 },
"device": "Desktop 1920x1080",
"title": "Example Domain",
"description": "This domain is for use in illustrative examples.",
"ogTitle": null,
"ogImage": null,
"canonicalUrl": "https://example.com/",
"language": "en",
"timestamp": "2026-01-15T12:00:00.000Z",
"success": true
}

Tips

JavaScript-heavy sites and SPAs: Use waitUntil: "networkidle" for React, Vue, and Angular apps. The default (load) works for most sites — switch to networkidle only if content is missing after capture.

Lazy-loaded content: Enable scrollToBottom: true. Add waitUntilNetworkIdleAfterScroll: true for the smartest possible wait — no fixed delay needed.

Carousels, sliders, and hero animations: Enable waitForImages: true to make sure every visual element is ready before the screenshot is taken.

Cookie banners not auto-dismissed: Add the banner's CSS selector to selectorsToHide. For example: .cookie-overlay, #consent-modal.

Authenticated pages: Pass session cookies in the cookies field. Get them from your browser's DevTools after logging in (Application → Cookies).

Mobile screenshots: Pick a device preset. The site will respond as if a real phone is visiting — you get the actual mobile layout, not a resized desktop.

Bot detection: Enable Apify Proxy (residential) in proxyConfiguration for sites that block automated visitors.

Large file sizes: Use format: "webp" for the smallest files, or format: "pdf" for printable output.

Cost control: Set maxItems to limit the total screenshots per run. Adjust maxConcurrency based on available memory.

Capturing one section of a page: Use screenshotType: "element" with a selector like #pricing-table or .hero-section.


Pricing

$3.00 per 1,000 successful screenshots.

You are never charged for pages that fail or time out. The Actor stops automatically when it reaches your spending limit in Apify Console.


Limitations

  • Sites with aggressive bot protection may require residential proxies
  • Very long pages produce large PNG files — use WebP or PDF for those
  • Cookie injection works for session-based authentication only; it cannot fill and submit a login form

API usage

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('YOUR_USERNAME/screenshot-url').call({
urls: [
{ url: 'https://example.com' },
{ url: 'https://news.ycombinator.com' },
],
screenshotType: 'fullPage',
format: 'png',
device: 'iPhone 15 Pro',
blockCookieBanners: true,
waitForImages: true,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0].screenshotUrl);

Scheduling

Go to Schedules in the Apify Console, point it at this Actor, and set your cron expression. Every run produces a new timestamped set of screenshots — useful for visual monitoring over time.


Frequently asked questions

Do I get charged if a page fails? No. Only successful screenshots are charged.

What is the difference between fullPage and viewport? fullPage captures everything from top to bottom. viewport captures only what is visible when the page first loads.

Can I take mobile screenshots? Yes. Choose any mobile preset and the site will respond with its actual mobile layout.

Why does the PDF look exactly like the screenshot? By design. The PDF preserves the visual appearance of the page as captured, not the browser's print version.

How do I hide a cookie banner? Automatic dismissal is on by default. For anything not covered, add the selector to selectorsToHide.

Can I screenshot a page behind a login? Yes, using session cookies. Pass them in the cookies field after grabbing them from your browser.

How fast does it run? With maxConcurrency: 3, three pages run in parallel. Most complete in 10–40 seconds depending on the site.

What happens to screenshots after the run? They are stored in the run's Key-Value Store. Each dataset row has a screenshotUrl — a direct public link.

Does it work without a proxy? Yes, for most public websites. Enable proxy only if the site blocks automated visitors.


You might also like

If you found this Actor useful, you might also like:

Apify Store Scraper — Extract Actor listings, pricing, ratings, and metadata from the Apify Store. Ideal for market research, competitor tracking, and finding automation opportunities.

Website Contact Scraper — Extract email addresses, phone numbers, and social media links from any website. Great for lead generation and outreach campaigns.

Google Ads Scraper — Collect Google Ads data at scale. See what competitors are bidding on, what creatives they run, and how their ads are structured.


Feedback

Found a bug or want a feature? Open an issue in the Issues tab. We respond within 2 business days.