Website Screenshot & PDF API – Full Page, Mobile, Dark Mode avatar

Website Screenshot & PDF API – Full Page, Mobile, Dark Mode

Pricing

from $1.00 / 1,000 screenshot or pdfs

Go to Apify Store
Website Screenshot & PDF API – Full Page, Mobile, Dark Mode

Website Screenshot & PDF API – Full Page, Mobile, Dark Mode

Capture full-page or viewport screenshots (PNG, JPEG, WebP) and PDFs of any web page in bulk. Desktop, tablet and phone sizes, dark mode, cookie banners and ads hidden, element capture by CSS selector, custom waits.

Pricing

from $1.00 / 1,000 screenshot or pdfs

Rating

0.0

(0)

Developer

Krzysztof Filipiak

Krzysztof Filipiak

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Share

Capture screenshots or PDFs of any web page in bulk – full page or first screen, desktop, tablet or phone, light or dark mode – with cookie banners and ads removed.

  • 🖼️ PNG, JPEG, WebP or PDF, full page (up to 20,000 px) or viewport only.
  • 📱 Devices: desktop (1366, 1440, 1920 px), iPad, iPhone 15 Pro, Pixel 7 – sites serve their real mobile version.
  • 🌙 Dark mode for sites that support it.
  • 🍪 Cookie pop-ups hidden (OneTrust, Cookiebot, Usercentrics, Didomi, Quantcast and dozens more) – without accepting anything. Ads and trackers blocked.
  • 🎯 Capture one element by CSS selector, wait for an element, hide your own selectors, add a delay.
  • 🖼️ Lazy-loaded images appear (the page is scrolled before capture).
  • 💸 $0.001 per screenshot – 1,000 screenshots for $1. Failed pages are free.

Use cases

  • Visual monitoring of your site, competitors or landing pages (schedule the run daily).
  • Archiving and compliance – PDF or PNG proof of what a page showed and when (takenAt).
  • Thumbnails and previews for directories, link previews and social posts.
  • SEO and QA – check mobile and desktop layouts across many URLs at once.
  • AI agents – let an LLM look at a page (works over MCP).

How to use

  1. Paste page URLs.
  2. Choose format, device, full page or not, dark mode.
  3. Click Start. The dataset lists every page with a link to the image (and a thumbnail preview in the table).

Input example

{
"urls": ["https://apify.com", "https://en.wikipedia.org/wiki/Web_scraping"],
"format": "png",
"fullPage": true,
"device": "desktop",
"darkMode": false,
"hideCookieBanners": true
}

Output example

{
"url": "https://apify.com",
"finalUrl": "https://apify.com/",
"status": "ok",
"statusCode": 200,
"title": "Apify: Marketplace of ready-to-run tools for AI",
"format": "png",
"device": "desktop",
"fullPage": true,
"width": 1366,
"height": 9932,
"bytes": 868386,
"key": "0001-apify.com.png",
"fileUrl": "https://api.apify.com/v2/key-value-stores/…/records/0001-apify.com.png?signature=…",
"takenAt": "2026-10-13T15:20:02+00:00"
}

Pages that fail (DNS error, element never appeared…) get status: "error" and an error message – no charge.

Pricing

EventPrice
Screenshot or PDF captured$0.001

Apify platform usage is included. Proxy traffic (only if you turn on the optional proxy) is billed by Apify to your account.

Use it from code and AI agents

curl -X POST "https://api.apify.com/v2/acts/kris_fili~website-screenshot-pdf/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://apify.com"], "device": "desktop-hd", "fullPage": false}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("kris_fili/website-screenshot-pdf").call(run_input={"urls": ["https://apify.com"], "format": "pdf"})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["url"], item.get("fileUrl"))

MCP: https://mcp.apify.com?tools=kris_fili/website-screenshot-pdf

Want the text of documents instead? See Document to Markdown and Image to Text OCR.

FAQ

Why is a page different from what I see? Some sites show different content to new visitors, other countries or bots. Try waitUntil: networkidle, a longer delay, or the proxy with a country.

Very long pages? Full-page captures are limited to 20,000 px height (a warning tells you when a page was cut).

Pages behind a login? Not supported.

Can I schedule it? Yes – use Apify Schedules for daily or hourly captures.

Questions? Use the Issues tab.