Website Screenshot API — Full Page, Mobile & Batch Screenshots avatar

Website Screenshot API — Full Page, Mobile & Batch Screenshots

Pricing

$1.50 / 1,000 screenshots

Go to Apify Store
Website Screenshot API — Full Page, Mobile & Batch Screenshots

Website Screenshot API — Full Page, Mobile & Batch Screenshots

Screenshots of any URL: viewport or full page, mobile/desktop, dark mode, element selector, delay, blocking cookie banners; returns PNG/JPEG/WebP links. Unofficial Screenshot API.

Pricing

$1.50 / 1,000 screenshots

Rating

0.0

(0)

Developer

yestrue

yestrue

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

16 hours ago

Last modified

Share

Turn any list of URLs into PNG, JPEG or WebP screenshots — first screen or full page, desktop, tablet or mobile, light or dark, with cookie banners hidden. Every image is stored for you and comes back as a link in the dataset, next to the page's final address, title and size. Built for agents, QA, monitoring and content pipelines that need to see a page, not just read it.

Try it in 1 minute:

  1. Press Start — the prefilled input captures https://example.com and the Wikipedia article on web scraping on a 1280×800 desktop screen.
  2. Open the Output tab: one row per page with the image preview, its link, width, height and the page title.
  3. Price: $1.50 per 1,000 screenshots. Pages that cannot be captured (404, timeout, no such element) are free.

Use it to:

  • Let an AI agent verify what a page looks like after a change, a deploy or a scrape.
  • Build link previews and thumbnails for a directory, newsletter or CMS in bulk.
  • Monitor competitors and landing pages daily and keep a visual archive.
  • Check responsive layouts on mobile and tablet without a device lab.
  • Capture a single element (a pricing table, a chart, a hero section) for a report or a Slack message.

How it works

A real headless Chromium (Playwright) opens each URL with the device profile you chose, waits until the page has loaded (and for the optional delay), hides common cookie and consent banners with CSS, and takes the shot: first screen, whole page or one element. The image goes to the run's key-value store and the dataset row carries its public link. Pages are processed in parallel, and a page that times out or fails on the network is tried again on a fresh route before it is given up.

Only public pages: there is no login, no captcha solving and no bot-wall circumvention. A page that answers 404 is reported as NOT_FOUND; a server error or a timeout as FAILED — both free.

A browser run costs more compute than a plain HTTP fetch; the default memory and Parallel pages of 3 are tuned for it. Raise the memory in the run options if you raise the parallelism.

Input

FieldWhat it doesDefault
urlsPages to capture, one per linethe two example pages
fullPageWhole scrollable page instead of the first screenfalse
devicedesktop 1280×800, tablet 768×1024, mobile 390×844 (iPhone, 3× scale)desktop
formatpng, jpeg or webppng
delayExtra wait after load, up to 15,000 ms0
selectorCSS selector: capture only the first matching element—
width, heightViewport override in pixels (0 keeps the device's)0
darkModeAsk the page for its dark colour schemefalse
hideCookieBannersHide common consent banners with CSS (best effort)true
waitUntilload, domcontentloaded or networkidleload
qualityJPEG / WebP quality, 1–10080
timeoutPage timeout in ms30000
maxConcurrencyPages captured at the same time3
proxyConfigurationUsed only for retries after a network failureApify Proxy

Output

One record per page:

FieldWhat it is
screenshotUrlLink to the image in the run's key-value store (public to anyone with the link)
keyKey of the image in that store
url, finalUrlThe address opened and where it ended up after redirects
title, httpStatusThe page's title and the main document's HTTP status
width, height, bytes, formatImage size in pixels and bytes, and its format
fullPage, deviceHow it was captured
status, errorOK, or NOT_FOUND / INVALID_INPUT / FAILED with the reason
input, scrapedAtWhat you gave, and when the shot was taken

Example

{
"input": "https://en.wikipedia.org/wiki/Web_scraping",
"url": "https://en.wikipedia.org/wiki/Web_scraping",
"finalUrl": "https://en.wikipedia.org/wiki/Web_scraping",
"title": "Web scraping - Wikipedia",
"httpStatus": 200,
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/aBcDeFgHiJkLmNoPq/records/screenshot-2-en.wikipedia.org.png",
"key": "screenshot-2-en.wikipedia.org.png",
"width": 1280,
"height": 800,
"fullPage": false,
"device": "desktop",
"format": "png",
"bytes": 184233,
"status": "OK",
"scrapedAt": "2026-10-19T12:34:56.000Z"
}

Pricing

You are charged per screenshot delivered — see the price on this page. Pages that give no image (404, timeout, no matching element, not a web address) are free. A run also uses Apify platform compute; a browser needs more of it than an HTTP fetch, so keep runs batched.

FAQ

Is this an official API? No, it's an unofficial API built on public pages. It opens the same pages your browser would.

How long do the images stay available? As long as the run's key-value store exists — 7 days on the free plan, longer on paid plans (see Apify storage retention). Copy the images to your own storage if you need them for good. Run a named task if you want a predictable store.

Why does my screenshot still show a cookie banner? Banners are hidden by CSS patterns covering the common consent managers; a custom banner may slip through. Nothing is clicked or accepted. Try a selector that targets the content you need, or a small delay.

Can it log in, pass a captcha or get around a bot wall? No. Public pages only. A page that answers 403 or a challenge is reported as FAILED and not charged.

Can I take screenshots of a page that needs JavaScript? Yes — it is a real browser. Use waitUntil: networkidle or a delay for pages that load content late.

Like it? A short review on the Store page helps other people find this Actor. Something missing or broken? Tell us on the Issues tab — we read every one.