Website Screenshot Generator avatar

Website Screenshot Generator

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Website Screenshot Generator

Website Screenshot Generator

Capture full-page screenshots of any website as PNG images or PDF documents. Supports custom viewport, scroll-to-bottom, element hiding, and configurable wait conditions.

Pricing

from $1.00 / 1,000 results

Rating

5.0

(16)

Developer

Crawler Bros

Crawler Bros

Maintained by Community

Actor stats

16

Bookmarked

24

Total users

19

Monthly active users

23 days ago

Last modified

Share

Screenshot URL

Capture full-page screenshots of any website as PNG images or PDF documents. Supports custom viewport sizes, scroll-to-bottom for lazy-loaded content, element hiding, and configurable wait conditions.

What can this actor do?

  • Full-page screenshots -- Capture entire web pages as PNG images or PDF documents
  • Custom viewport -- Set browser width from 100px to 3840px to test responsive layouts
  • Scroll to bottom -- Trigger lazy-loaded images and infinite scroll content before capturing
  • Hide elements -- Remove cookie banners, popups, and ads using CSS selectors
  • Wait conditions -- Wait for page load, DOM ready, or network idle before capturing
  • Custom delay -- Add delay after page load for animations or dynamic content
  • Redirect tracking -- Records the final URL after any redirects
  • Bulk capture -- Process multiple URLs in a single run
  • PDF export -- Generate printable PDF documents from web pages

Use cases

  • Website monitoring -- Schedule regular screenshots to track visual changes over time
  • Quality assurance -- Verify website appearance across different viewport widths
  • Archiving -- Save snapshots of web pages for records or compliance
  • Competitive analysis -- Capture competitor websites for design comparison
  • Bug reporting -- Generate visual evidence of display issues
  • Content verification -- Confirm that published content appears correctly

Input

FieldTypeRequiredDefaultDescription
urlsURL[]Yes--Web page URLs to screenshot
formatstringNopngOutput format: png or pdf
waitUntilstringNoloadPage load event: load, domcontentloaded, or networkidle
delayintegerNo0Delay before screenshot in milliseconds (0--3,600,000)
viewportWidthintegerNo1280Browser viewport width in pixels (100--3,840)
scrollToBottombooleanNofalseScroll to bottom before screenshot
delayAfterScrollingintegerNo2500Delay after scrolling in milliseconds (0--3,600,000)
waitUntilNetworkIdleAfterScrollbooleanNofalseWait for network idle after scrolling
waitUntilNetworkIdleAfterScrollTimeoutintegerNo30000Network idle timeout in milliseconds (1,000--3,600,000)
proxyConfigurationobjectNo--Proxy settings (optional)
selectorsToHidestringNo--CSS selectors to hide before screenshot (comma-separated)

Example input

{
"urls": [
{"url": "https://www.example.com"},
{"url": "https://news.ycombinator.com"}
],
"format": "png",
"waitUntil": "networkidle",
"viewportWidth": 1920
}
{
"urls": [
{"url": "https://www.wikipedia.org"}
],
"format": "pdf",
"scrollToBottom": true,
"selectorsToHide": ".cookie-banner, #popup"
}

Output

Each URL produces one row in the dataset with a link to the screenshot file stored in the key-value store.

FieldTypeDescription
startUrlstringThe original URL provided as input
urlstringThe final URL after any redirects
screenshotUrlstringPublic URL to download the screenshot file
screenshotKeystringKey name in the key-value store
formatstringScreenshot format (png or pdf)
statusstringsuccess or error description
timestampstringISO 8601 timestamp

Sample output

{
"startUrl": "https://www.example.com",
"url": "https://www.example.com/",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/screenshot_https___www_example_com__abc123.png",
"screenshotKey": "screenshot_https___www_example_com__abc123.png",
"format": "png",
"status": "success",
"timestamp": "2026-03-23T12:00:00.000000+00:00"
}

How it works

  1. Launches a Chromium browser with the configured viewport width
  2. Navigates to each URL and waits for the specified load condition
  3. Optionally scrolls to the bottom to trigger lazy-loaded content
  4. Optionally hides specified elements (cookie banners, popups, ads)
  5. Captures a full-page screenshot as PNG or generates a PDF document
  6. Stores the screenshot file in the key-value store with a public download URL
  7. Records the result in the dataset with the original URL, final URL, and screenshot link

Tips for best results

  • Use networkidle for waitUntil on pages with heavy JavaScript rendering
  • Enable scrollToBottom for pages with lazy-loaded images or infinite scroll
  • Use selectorsToHide to remove cookie consent banners and popups: .cookie-banner, #consent-popup, .ad-wrapper
  • Set a delay of 1000-3000ms for pages with entrance animations
  • Use wider viewportWidth (1920) for desktop-optimized pages, or 375 for mobile views
  • The actor works without proxy for most websites; enable proxy only if needed

Limitations

  • Some websites may block screenshots from datacenter IPs. Use proxy configuration for these sites
  • Very long pages may produce large PNG files. Consider using PDF format for document-heavy pages
  • JavaScript-heavy single-page applications may need networkidle wait condition and additional delay
  • The actor cannot log into websites or handle authentication
  • PDF format uses the browser's print layout, which may differ from the visual page appearance

Frequently Asked Questions

Do I need a proxy? No. The actor works without proxy for most publicly accessible websites. Only enable proxy if the target site blocks datacenter IPs.

What is the difference between PNG and PDF? PNG captures a full-page screenshot as an image, including everything visible when scrolled. PDF generates a printable document using the browser's print functionality, which may paginate content differently.

How do I hide cookie banners? Use the selectorsToHide field with CSS selectors. For example: .cookie-banner, #gdpr-consent, [class*="cookie"].

What viewport height is used? The viewport height is fixed at 1080px. The screenshot captures the full page length regardless of viewport height.

How does scroll-to-bottom work? The actor scrolls the page in 250px increments, triggering lazy-loaded images and content. After scrolling, it waits for the configured delay or network idle before taking the screenshot.

Can I screenshot multiple pages in one run? Yes. Add multiple URLs to the input. Each URL produces a separate screenshot and dataset row.

Where are the screenshot files stored? Screenshots are stored in the run's key-value store. Each dataset row includes a screenshotUrl field with a direct download link.

Can I take mobile screenshots? Yes. Set viewportWidth to a mobile width like 375 or 390 to simulate a mobile browser viewport.