ScreenshotKit: Website Screenshot, Scrolling Video & PDF API avatar

ScreenshotKit: Website Screenshot, Scrolling Video & PDF API

Pricing

Pay per usage

Go to Apify Store
ScreenshotKit: Website Screenshot, Scrolling Video & PDF API

ScreenshotKit: Website Screenshot, Scrolling Video & PDF API

Screenshots, smooth scrolling videos (MP4/GIF) and PDFs of any website or HTML. Full page, element, retina, mobile, dark mode, proxies, cookie-banner removal. Batch or real-time API.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Ayush Yadav

Ayush Yadav

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

7 days ago

Last modified

Share

Capture screenshots, smooth auto-scrolling videos and PDFs of any website, or of your own HTML. Pass a list of URLs and get back a clean file per page, sized for desktop, laptop, tablet, phone or any custom viewport. Already used for 100,000+ captures on Replicate.

Use it as a normal Actor (batch of URLs) or as a real-time HTTP API through Standby mode, where one request returns the file.

What can ScreenshotKit do?

  • 📸 Screenshots: viewport, full page, a single element (#pricing), or a region (x,y,width,height)
  • 🔍 Retina: 1×, 2× or 3× pixel density
  • 🎬 Scrolling videos: the page scrolls smoothly top to bottom, exactly 0.1–30 seconds long, as MP4, WebM or GIF
  • 📄 PDFs: A4, Letter or Legal, with backgrounds
  • 🧾 HTML input: render your own HTML (OG images, invoices, templates)
  • 📱 Devices: Desktop 1920×1080, Laptop 1440×900, Tablet 820×1180, Phone 390×844 (real mobile sites), or custom up to 4000px
  • 🧹 Clean captures by default: cookie banners and chat widgets removed, lazy-loaded images and scroll animations loaded first
  • 🚫 Block ads and trackers, hide any element, inject your own CSS or JavaScript, click something before capturing
  • 🔐 Logged-in pages: send cookies and HTTP headers (e.g. Authorization)
  • 🌍 Dark mode, timezone, locale, user agent, and residential proxies with country selection for sites that block cloud servers
  • ⚡ Real-time API: Standby mode returns the file from one HTTP call

Typical uses: link previews and OG images, landing-page videos for social media, visual monitoring, archiving pages as PDF, competitor tracking, documentation screenshots, and feeding page images to AI agents.

How to use ScreenshotKit

  1. Click Try for free and enter one or more URLs (stripe.com works; https:// is added automatically), or paste HTML.
  2. Pick Screenshot, Scrolling video or PDF, and a device.
  3. Click Start. Each page produces a file in the run's key-value store and a row in the dataset with a direct download link.

Input

FieldDescriptionDefault
urlsWebsite URLs—
htmlRaw HTML to render instead of a URL—
actionscreenshot, video or pdfscreenshot
devicedesktop, laptop, tablet, phone or custom (+ width, height)desktop
device_scale_factorPixel density 1–3 (2 = retina)1
full_pageCapture the whole scrollable pagefalse
selectorCapture only this element, e.g. #pricing—
clipCapture a region, "x,y,width,height"—
image_format, image_qualitypng, jpeg or webp; quality 1–100png
video_duration, video_format0.1–30 seconds; mp4, webm or gif10, mp4
pdf_formatA4, Letter or LegalA4
hide_cookie_bannersRemove cookie/consent popupstrue
hide_chat_widgetsRemove Intercom, Drift, Crisp, HubSpot and similar chat bubblestrue
block_adsBlock major ad networks and trackersfalse
hide_selectorsElements to remove, e.g. [".promo-bar"]—
custom_css, custom_jsCSS or JavaScript to run before capturing—
click_selectorElement to click before capturing—
wait_untilload, domcontentloaded, networkidle or timeload
wait_for_selectorWait until this element appears—
wait_timeExtra seconds to wait—
dark_modeRequest the site's dark themefalse
timezone, locale, user_agente.g. Europe/Berlin, de-DE—
headers, cookiese.g. {"Authorization": "Bearer …"}, [{"name": "session", "value": "…"}]—
proxy, proxy_countrynone, datacenter or residential; e.g. USnone
{
"urls": ["https://stripe.com", "apify.com"],
"action": "screenshot",
"device": "laptop",
"device_scale_factor": 2,
"full_page": true,
"image_format": "jpeg",
"image_quality": 80
}

Output

One dataset item per page:

{
"url": "https://stripe.com",
"action": "screenshot",
"file_url": "https://api.apify.com/v2/key-value-stores/aBcDeFgHiJkLmNoPq/records/screenshot-1.jpeg",
"key": "screenshot-1.jpeg",
"content_type": "image/jpeg",
"device": "laptop",
"width": 1440,
"height": 900,
"error": null
}

If a page can't be loaded (bad domain, element not found), its item has an error message and you are not charged for it. The other URLs still complete.

Real-time API (Standby mode)

Call the Actor like a regular screenshot API. The response body is the file itself.

curl -H "Authorization: Bearer $APIFY_TOKEN" \
"https://ayushunleashed--screenshotkit.apify.actor/?url=stripe.com&device=phone&image_format=webp" \
-o stripe.webp

Every input field works as a query parameter (lists and objects as JSON strings), or send them as a JSON body with POST /, which is the way to pass html:

curl -X POST -H "Authorization: Bearer $APIFY_TOKEN" -H "Content-Type: application/json" \
-d '{"html": "<h1>Hello</h1>", "device": "custom", "width": 1200, "height": 630, "device_scale_factor": 2}' \
"https://ayushunleashed--screenshotkit.apify.actor/" -o og.png

Responses: 200 with the file, 400 for invalid parameters, 502 when the page could not be captured (not charged).

Pricing

Pay per event. You pay only for successful captures; failed pages are free. Residential proxy use is charged per capture on top. See the pricing tab for current prices.

FAQ

Why are some images blank in full-page screenshots? ScreenshotKit scrolls the page first to load lazy images, but a few sites only render sections while they're on screen. Recording a scrolling video captures those.

Why did I get a "blocked" page? Some sites block cloud servers. Set proxy to residential (optionally with proxy_country), which gets through most of them (e.g. Reddit). A few sites with advanced bot protection (e.g. NYT) still can't be captured.

Can I capture pages behind a login? Yes: pass your session cookies or an Authorization header.

Does dark mode work everywhere? It works on sites that follow the system dark-mode setting (prefers-color-scheme). Sites with only a manual toggle can be switched with click_selector or custom_js.

What video format is used? MP4 (H.264, 30 fps) by default, exactly the duration you request. WebM and GIF (10 fps, up to 640px wide) are also available.

How are scrolling videos made? ScreenshotKit loads the whole page (including lazy images), captures it once, and renders a perfectly smooth ease-in-out scroll over it. That makes every video smooth no matter how heavy the site is. The trade-off: the page is frozen while it scrolls, so sticky headers stay at the top and on-page animations or embedded videos don't play.

How long does a capture take? A viewport screenshot usually takes 3–15 seconds (ScreenshotKit waits for the page to finish rendering and loads lazy content), a full page a bit longer. Short videos take about 20–60 seconds; a 30-second video takes around 3 minutes. For long videos, use a normal run rather than the real-time API.

Is it legal to screenshot websites? Capturing publicly available pages is generally fine. Respect each site's terms and don't capture personal data without a legitimate reason.