Website Screenshot — Full Page, Lazy-Load Safe, Batch, Mobile avatar

Website Screenshot — Full Page, Lazy-Load Safe, Batch, Mobile

Pricing

from $3.84 / 1,000 captured screenshots

Go to Apify Store
Website Screenshot — Full Page, Lazy-Load Safe, Batch, Mobile

Website Screenshot — Full Page, Lazy-Load Safe, Batch, Mobile

Take a full page screenshot of a website. Waits for lazy-loaded images and fonts, dismisses cookie banners. Batch up to 100 URLs, desktop/mobile/retina, PNG or JPEG. $0.0048 per screenshot produced — failed URLs never charged.

Pricing

from $3.84 / 1,000 captured screenshots

Rating

0.0

(0)

Developer

Broke to Built

Broke to Built

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

2

Monthly active users

3 days ago

Last modified

Share

Website Screenshot Pro — full-page shots that actually wait for the page

Screenshot any page, or a whole batch, at desktop / laptop / tablet / mobile sizes. Full-page captures that include lazy-loaded images instead of cutting them off, with cookie banners dismissed so they aren't sitting across your shot.

No API key. No signup. Pay per screenshot produced — a URL that fails is never charged.

Use it as a website screenshot API for thumbnails, visual archives, link previews, monitoring, SEO audits, or agent pipelines: full-page PNG or JPEG capture of any URL, desktop or mobile viewport, retina scale, dark mode, batch of up to 100 URLs in one run.


Why shots come out wrong elsewhere, and what this does about it

The usual problemWhat this actor does
Lazy-loaded images render as blank boxesScrolls the entire page to trigger loading, returns to top, then captures
Web fonts swap mid-capture, text looks wrongWaits on document.fonts.ready before shooting
A cookie banner covers the contentBest-effort dismissal of common consent buttons (can be turned off)
Full-page capture is clippedTrue fullPage capture, with the real page height reported back
One URL per runBatch input — and one bad URL never aborts the others
A failed run still costs youOnly successful screenshots are billed

Input

{ "url": "https://example.com", "device": "desktop", "fullPage": true }

Batch, mobile, dark mode:

{
"urls": ["https://a.com", "https://b.com"],
"device": "mobile",
"colorScheme": "dark",
"format": "jpeg",
"quality": 85
}
FieldTypeDefaultNotes
url / urlsstring / arrayOne page, or a batch
devicedesktop | laptop | tablet | mobiledesktopTablet 2×, mobile 3× retina
fullPagebooleantrueWhole page vs viewport only
formatpng | jpegpngJPEG for smaller files
qualityinteger 1–10085JPEG only
colorSchemelight | darklightRenders the page's dark mode
dismissCookieBannersbooleantrueBest effort, never fails the shot
extraWaitMsinteger500Extra settle time for animations
maxUrlsinteger20Cap, and therefore your budget cap

Output

One record per URL. Successful captures include a direct image URL:

{
"url": "https://example.com",
"ok": true,
"status": 200,
"title": "Example Domain",
"device": "desktop",
"viewport": "1920x1080",
"deviceScaleFactor": 1,
"fullPage": true,
"format": "png",
"pageWidth": 1920,
"pageHeight": 4310,
"bytes": 812344,
"tookMs": 3120,
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/.../records/example-com-1920xfull.png"
}

Failures are returned, not thrown:

{ "url": "https://broken.example", "ok": false, "error": "net::ERR_NAME_NOT_RESOLVED", "tookMs": 1200 }

For agents and automation

  • Capability: capture a rendered screenshot of one or many web pages
  • Required input: url or urls
  • Returns: one JSON record per URL; screenshotUrl is a directly fetchable image
  • Bounded: maxUrls caps the run; failures isolate per URL
  • Side effects: none — reads the page, stores images in this run's key-value store
  • Determinism: layout-dependent; identical input on an unchanged page yields an equivalent image

Pricing — $0.0048 per screenshot, failures free

Pay-per-event: one flat $0.0048 per screenshot actually produced. A URL that fails — DNS error, timeout, dead page — is returned as an {ok: false} record and is never charged.

Compared with other paid screenshot actors on Apify (prices checked 2026-08-07):

ActorPriceBilling unit
This actor$0.0048per screenshot produced — failures free
i-scraper/website-screenshot$0.006per dataset item
crawlerbros/screenshot-url$0.01per actor start — a failed run still bills
onescales/website-screenshot-proper-start feeplus your own platform compute

That is 20% under the cheapest per-screenshot incumbent and less than half of per-start billing, with the honesty guarantee on top: you pay for images, not attempts.

Limits (honest ones)

  • Pages that hard-block headless browsers (aggressive bot walls) may fail; you are not charged.
  • Cookie-banner dismissal is best-effort pattern matching — exotic consent widgets can survive it.
  • Full-page capture walks up to 60,000px of page height; beyond that the capture is of the walked region.
  • Batch cap is 100 URLs per run (maxUrls).

FAQ

Why do my screenshots elsewhere have blank spaces where images should be? Because the capture fired before lazy-loaded images had loaded. Most tools wait for the load event, which happens long before an image that only loads on scroll ever starts fetching. This one scrolls the page, waits for in-flight image requests to settle, and then captures.

Does it handle cookie banners? Yes, best-effort: common consent widgets are detected and dismissed before capture, so the shot is of the page rather than of an overlay. Exotic or heavily customised consent tools can survive it — that is listed above under limits rather than hidden.

Can I capture the full page, not just the viewport? Yes — full-page is the default, walking up to 60,000px of height. Set a viewport size if you want a specific device frame instead.

Can I take mobile screenshots? Yes. Set the viewport to a mobile size and the page is rendered at that width, so you get the responsive layout rather than a desktop page squeezed down.

What happens if a page fails to load? You get a record saying so, and you are not charged for it. Only a captured screenshot bills an event.

Where does the image go? Each screenshot is stored in the run's key-value store, and the record carries its direct URL — so an agent or a script can fetch the file straight from the result without a second lookup.

For AI agents

This Actor is built to be called by software, not just by people.

  • Mount it directly as an MCP tool — no Store search, no ranking, just this one tool: https://mcp.apify.com/?actors=eliai/website-screenshot-pro
  • Or call it over HTTP and get the results in the same request: POST https://api.apify.com/v2/acts/eliai~website-screenshot-pro/run-sync-get-dataset-items
  • Pay with x402, without an Apify account. This Actor is whitelisted for agentic payments, so an agent holding USDC on Base can buy a prepaid token and spend it here. The minimum purchase is $1, the token balance is an absolute spending cap, and it expires 14 days after purchase.
  • Costs are predictable before you call. Pricing is pay-per-event (see Pricing above), so an agent can budget a run in advance instead of discovering the bill afterwards.
  • Send only the field you mean. If you pass the bulk field, it is used on its own; the single-value field is a fallback, never merged into your request. You are charged for the items you sent and nothing else.