Website Screenshot & PDF API – Full Page, Mobile, Dark Mode
Pricing
from $1.00 / 1,000 screenshot or pdfs
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
15 hours ago
Last modified
Categories
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
- Paste page URLs.
- Choose format, device, full page or not, dark mode.
- 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
| Event | Price |
|---|---|
| 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 ApifyClientclient = 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.