Website Screenshot API — Full-Page, Element & Device Capture avatar

Website Screenshot API — Full-Page, Element & Device Capture

Pricing

Pay per usage

Go to Apify Store
Website Screenshot API — Full-Page, Element & Device Capture

Website Screenshot API — Full-Page, Element & Device Capture

Website Screenshot API: capture any URL as PNG, JPEG or WebP (PDF too) — true full-page, element & region capture, 13 device profiles, dark mode, retina, ad/cookie-banner blocking, stealth, auth & geo. Self-scaling and SSRF-safe. Standby HTTP + batch.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

CheapAPI

CheapAPI

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

19 hours ago

Last modified

Share

Turn any URL into a pixel-perfect screenshot (PNG, JPEG, or WebP) — full page, a single element, or an exact region. Most screenshot tools stop at "PNG of the viewport." This one adds 13 realistic device profiles, retina capture, dark mode, automatic cookie-consent + ad blocking, stealth, authenticated-page support, geolocation and bring-your-own-proxy — all self-scaling and hardened against SSRF. Use it as an always-on Standby HTTP API, in batch runs, or as a tool for AI agents (Apify MCP). You only pay for successful screenshots.

Why this actor (the edge)

  • 🖼️ All four formats — PNG, JPEG, WebP (smaller files), and PDF. Many actors do PNG/PDF only.
  • 📱 13 device profiles — desktop / laptop / QHD / Mac-retina / iPhone / Pixel / Galaxy / iPad / social aspect ratios — each a consistent viewport + pixel density + matching user-agent + touch. Pick iphone_15 and you get a real iPhone capture, not a squished desktop. All profiles cost the same.
  • 📜 True full-page with a safe 16384 px cap — not a fragile "scroll to bottom" hack.
  • 🎯 Element & region capture — CSS selector or an exact clip rectangle.
  • 🌙 Dark mode, retina (deviceScaleFactor up to 3), custom viewport, transparent background.
  • 🍪 Cookie consent handled properly — it clicks "Accept" (unlocking consent-gated content), then hides leftovers. Plus ad/tracker blocking.
  • 🥷 Stealth on by default — masks the obvious headless tells so pages don't flag a bot (no CAPTCHA solving).
  • 🔐 Authenticated & paywalled pages — pass cookies and headers (e.g. Authorization); secrets are sent first-party only.
  • 🌍 Geo capturegeolocation spoofing and bring-your-own proxy to capture a page as seen from any country.
  • Self-scaling & reliable — reads the run's memory/CPU and tunes concurrency; a bounded queue returns 429 instead of crashing under load.
  • 🛡️ SSRF-safe by design — every request (and redirect/subresource) is routed through a forced proxy that resolves, classifies and pins the IP; private/metadata ranges are blocked and DNS-rebinding is defeated. Downloads are refused (no disk abuse).
  • 💸 Billed only on success at $0.0009 / screenshot ($0.90 / 1,000) — failures and rejections are free.

How it compares

CapabilityThis actorTypical screenshot actorsStandalone SaaS APIs
PNG / JPEG / WebP / PDF✅ all 4⚠️ often PNG/PDF only
True full-page (capped)⚠️ scroll-to-bottom hack
Element + region (clip)❌ rare⚠️ some
Retina / deviceScaleFactor✅ 1–3❌ usually none
13 real device profiles❌ width-only⚠️ some
Dark mode⚠️ some
Auto-accept cookie consent✅ (clicks Accept)❌ hide-only at best⚠️ hide-only
Ad/tracker blocking❌ manual selectors
Stealth (anti-bot tells)✅ default💲 premium tier
Authenticated pages (cookies/headers)✅ first-party-scoped⚠️ rare💲 premium
Geolocation + own proxy💲 premium
Self-scaling + backpressuren/a (managed)
SSRF-safe, no downloads❓ usually unstated
Price$0.0009 / shot ($0.90/1K), success-only~$0.008 + or free+compute$2–$10 / 1,000

Legend: ✅ yes · ⚠️ partial/varies · ❌ no · 💲 paid add-on. "Typical screenshot actors" reflects the common feature set across popular Store alternatives at the time of writing.

Features in detail

FeatureHow
Formatsformat = png · jpeg · webp · pdf (WebP re-encoded with sharp; PDF rendered by Chromium).
Full pagefullPage=true; height capped at 16384 px and reported via truncatedHeight.
Element / regionselector for one element, or clip {x,y,width,height}.
Device profilesdevice (see list above); explicit width/height/deviceScaleFactor override it.
Dark modecolorScheme=dark.
Cookie consentacceptCookies clicks Accept (CMP vendors + text heuristic, iframes); blockCookieBanners hides leftovers.
BlockingblockAds, blockImages.
Stealthstealth (default on) masks navigator.webdriver, HeadlessChrome UA, plugins.
Authcookies[], headers{} (first-party only; hop-by-hop/spoofable headers rejected).
Emulationlocale, timezoneId, userAgent, geolocation, isMobile.
Proxyproxy — your own http/socks proxy (validated public).
WaitswaitUntil, waitForSelector, delayMs, timeoutMs.

Pricing

Pay-per-event, charged only on a successful capture. Failed captures, validation errors and queue rejections are free.

EventWhenPrice
screenshotOne successful screenshot delivered$0.0009 ($0.90 / 1,000)
apify-actor-startRun / Standby bootplatform default

At $0.0009 / screenshot ($0.90 / 1,000) this sits an order of magnitude below standalone APIs ($2–$10 / 1,000) while doing more per shot. Set the exact price in Console → Monetization before publishing.

Usage

Standby — always-on HTTP API

Enable Standby in the Console, then call the Actor hostname with your Apify token:

curl "https://<username>--website-screenshot-api.apify.actor/screenshot?url=https://apify.com&fullPage=true&format=webp" \
-H "Authorization: Bearer <APIFY_TOKEN>"

POST JSON for advanced options:

curl -X POST "https://<username>--website-screenshot-api.apify.actor/screenshot" \
-H "Authorization: Bearer <APIFY_TOKEN>" -H "Content-Type: application/json" \
-d '{"url":"https://apify.com","device":"iphone_15","colorScheme":"dark"}'

Response is JSON: capture metadata + the key-value store key and public url of the image.

Batch run

{ "url": "https://apify.com", "urls": ["https://example.com"], "format": "png", "fullPage": true, "device": "desktop" }

Each URL → one image in the key-value store + one metadata row in the dataset.

AI agents (MCP)

Discoverable and runnable through Apify's MCP server (mcp.apify.com) — the input schema is exposed as a tool automatically; no extra setup.

Input parameter reference

ParameterTypeDefaultNotes
urlstring— (required)http(s); must resolve to a public address.
urlsstring[]Batch mode.
formatstringpngpng, jpeg, webp, pdf.
qualityinteger80JPEG/WebP 1–100.
fullPagebooleanfalseWhole scrollable page.
devicestringdesktopDevice profile.
width / heightinteger(device)1–3840 / 1–4320.
deviceScaleFactornumber(device)1–3.
waitUntilstringloadload,domcontentloaded,commit,networkidle.
waitForSelectorstringWait for an element.
delayMs / timeoutMsinteger0 / 300000–10000 / 1000–60000.
colorSchemestringno-preferencelight,dark.
selector / clipstring / objectElement or region.
omitBackgroundbooleanfalseTransparent (PNG/WebP).
blockAds / blockCookieBanners / acceptCookiesbooleantrueCleaner captures.
blockImages / stealth / isMobilebooleanfalse/true/(device)
locale / timezoneId / userAgentstringEmulation.
geolocationobject{latitude,longitude}.
cookies / headersarray / objectAuth (first-party only).
proxystringYour own http/socks proxy (public).

Output

  • Image/PDF binary in the key-value store (<prefix>.<ext>, correct Content-Type).
  • A dataset row with metadata + KV key and public URL:
{ "url": "https://apify.com", "finalUrl": "https://apify.com/", "format": "png",
"width": 1920, "height": 1080, "fullPage": true, "bytes": 184213, "tookMs": 1842,
"key": "screenshot-....png", "url_": "https://api.apify.com/v2/key-value-stores/<storeId>/records/<key>" }

Security & limits

  • SSRF protection always on: forced in-process proxy resolves DNS, classifies every resolved IP, blocks private/reserved/loopback/link-local (incl. 169.254.169.254), pins the validated IP (defeats DNS-rebinding) — for the page and its subresources/redirects.
  • No downloads / no execution: acceptDownloads:false; pages are only rendered, never run on the host.
  • Bounds: full-page ≤ 16384 px, per-capture timeout ≤ 60 s, response size cap, viewport ≤ 3840×4320, DSF ≤ 3. Fresh isolated browser context per capture.

License

Apache-2.0