Website Screenshot API
Pricing
Pay per event
Website Screenshot API
Screenshot a list of websites and convert each webpage to PDF in one run. Full page or first screen, desktop or iPhone/Android, PNG, JPEG or WebP, A4 or Letter PDF. Cookie banners and pop-ups hidden. Failed pages are free. $3 per 1,000 screenshots, $6 per 1,000 PDFs.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Joshua White
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Features
Share
Website screenshots and URL to PDF for a whole list of pages, in one run. You get one row per URL with a download link to a PNG, JPEG or WebP image and/or a PDF of the page, plus its title, final URL, size and status code.
- Price: $0.003 per screenshot ($3 per 1,000) and $0.006 per PDF ($6 per 1,000). Pages that fail are not charged.
- Example:
{"urls": ["example.com"]}givesexample-com-<id>.png, a full-page PNG 1920 px wide, for $0.003. - Clean captures: cookie banners, sign-up pop-ups and chat bubbles are hidden (never accepted), and lazy images are loaded before the capture.
- Devices: desktop, laptop, tablet, iPhone or Android; full page or first screen; A4, Letter and other PDF sizes.
Try it in one click: the input is prefilled with two pages, as screenshot + PDF. Apify's $5 monthly free credit covers about 1,600 screenshots.
How to screenshot websites or convert a URL to PDF in 3 steps
- Paste web addresses into URLs, one per line (
example.comworks; typos likehtps://are fixed). - Choose screenshot, PDF or both, a device (desktop, laptop, tablet, iPhone, Android) and full page or first screen.
- Click Start. Each result row links its image and PDF; download the table as CSV, Excel or JSON, or call it from the API, Make, Zapier or n8n.
How much does a website screenshot cost?
$3 per 1,000 screenshots and $6 per 1,000 PDFs, so Apify's $5 monthly free credit covers about 1,600 screenshots. Failed pages (DNS errors, timeouts, bot checks, HTTP errors, robots.txt blocks, file URLs, or a "wait for element" that never appeared) are free. 200 full-page screenshots plus PDFs cost $1.80. If you set a maximum cost for a run, the actor stops cleanly when it reaches it and tells you how many pages it skipped.
What you can use bulk screenshots and PDFs for
- Archiving and evidence. Keep a dated image or PDF of a page: ads, prices, terms, compliance pages, press coverage.
- Visual monitoring. Screenshot competitors' homepages, pricing pages or landing pages on a schedule.
- Reports and decks. Mobile and desktop screenshots of client or prospect sites for audits, pitches and QA.
- URL to PDF. Turn articles, docs, invoices or any web page into a printable PDF, in bulk.
- Thumbnails and previews. Small JPEG or WebP images of many sites for a directory, a dashboard or an AI pipeline.
Features
| Image formats | PNG (lossless), JPEG and WebP with a quality setting. Measured at quality 80 on two full pages: WebP was 1.9–2.8× smaller than PNG, JPEG 1.2–1.5× |
| Page size | Full scrolling page (up to 30,000 px tall) or just the first screen |
| Devices | Desktop 1920×1080, laptop 1366×768, tablet, iPhone and Android with retina pixel density, or any custom size |
| A4, Letter, Legal, A3, A5, Tabloid; portrait or landscape; margins; backgrounds; screen or print layout | |
| Clean-up | Hides cookie / consent banners (OneTrust, Cookiebot, Didomi, Usercentrics, Quantcast, TrustArc and home-made ones), sign-up modals, sticky bottom bars and chat bubbles; your own CSS selectors to hide; custom CSS |
| Timing | Wait for page load or network quiet, wait for a CSS selector, extra delay |
| Extras | Dark mode, lazy-image scrolling, blank-page detection, honest error codes |
Banners are hidden, never accepted: the tool doesn't give consent on anyone's behalf.
Input example
{"urls": ["https://apify.com", "en.wikipedia.org/wiki/Web_scraping"],"captureScreenshot": true,"capturePdf": true,"device": "iphone","fullPage": true,"imageFormat": "jpeg","pdfFormat": "Letter"}
Output
One row per URL. Files are stored in the run's key-value store, and the row links to them.
Pages finish in parallel, so rows don't arrive in input order. index is each URL's position in your list,
starting at 1 (blank lines and # comments aren't counted; a removed duplicate keeps its number, so there's a gap).
Sort by index to line the rows up with your list.
{"index": 1,"url": "https://en.wikipedia.org/wiki/Web_scraping","finalUrl": "https://en.wikipedia.org/wiki/Web_scraping","title": "Web scraping - Wikipedia","statusCode": 200,"screenshotUrl": "https://api.apify.com/v2/key-value-stores/<store>/records/en-wikipedia-org-wiki-Web-scraping-51e366a8.png","screenshotKey": "en-wikipedia-org-wiki-Web-scraping-51e366a8.png","screenshotFormat": "png","screenshotWidth": 1920,"screenshotHeight": 8745,"screenshotBytes": 2398899,"screenshotTruncated": false,"looksBlank": false,"pdfUrl": "https://api.apify.com/v2/key-value-stores/<store>/records/en-wikipedia-org-wiki-Web-scraping-51e366a8.pdf","pdfKey": "en-wikipedia-org-wiki-Web-scraping-51e366a8.pdf","pdfPages": 11,"pdfBytes": 1830112,"pageHeight": 8745,"device": "desktop","cookieBannersHidden": 0,"error": null,"errorCode": null,"capturedAt": "2026-10-05T19:12:03.511Z"}
Files stay in the run's storage for as long as your Apify plan keeps run data. Download the ones you want to keep.
Errors (not charged)
errorCode | Meaning |
|---|---|
DNS | The domain does not exist |
TIMEOUT | The page didn't start loading within the timeout |
CONNECTION, TLS, TOO_MANY_REDIRECTS | Network, certificate or redirect-loop problems |
HTTP_BLOCKED, HTTP_ERROR | The site answered 401/403/429, or another 4xx/5xx |
BOT_CHALLENGE | The site showed a bot check or waiting room (Cloudflare, Akamai, DataDome, ...) instead of the page |
ROBOTS_DISALLOWED | The site's robots.txt asks automated visitors not to open this page |
NOT_A_WEBPAGE | The URL is a file (PDF, image, download), not a page |
WAIT_FOR_SELECTOR | The element you asked to wait for never appeared |
INVALID_INPUT | The line isn't a web address (for example not a url); url shows what you typed |
Every line you paste gets a row, so the status counts them all: "Captured 2 of 4 entries; 2 weren't web addresses".
Tips
- Memory: the default 2 GB runs 2 pages at a time (one per ~700 MB). For big lists, raise memory and Pages at once together (about 700 MB per page).
- Very long pages are cut at Max page height (15,000 px by default) and the row says
screenshotTruncated: true. WebP images can't be taller than 16,383 pixels, so use PNG or JPEG for very long retina captures. - Smaller files: WebP at quality 70–80 is the smallest. Our test: python.org full page was 504 KB as PNG, 335 KB as JPEG and 179 KB as WebP; a first-screen WebP thumbnail at quality 70 was 20–80 KB.
- Charts and animations: add a few seconds of Extra delay, or Wait for element with the chart's selector.
- Cleaner PDFs: try PDF layout → Print stylesheet; many sites drop menus and ads when printing.
Limits and good behaviour
The tool opens public pages only: no logins, no paywalls. It respects robots.txt and identifies itself in its user
agent (ScreenshotPdfBot). Sites protected by aggressive bot checks may show a challenge page instead; those rows
come back as BOT_CHALLENGE and are free.
Ready-made examples
Each one opens this actor with the input already filled in. Click Try to run it, or change the input to fit your own list.
- Full-page screenshot of a website
- Save a web page as PDF for archiving
- Mobile screenshot as an iPhone sees it
- Screenshot several competitor homepages
- Dark mode screenshot of a website
- Print a web page to PDF (US Letter, print styles)
- Convert a list of URLs to PDF in bulk
- Website thumbnails: first screen of many sites as WebP
- Screenshot and PDF of a page in one run (dated record)
- Tablet screenshot (iPad size) of a website
More tools from oldjard
- Tech Stack Detector: what any list of websites is built with.
- Sitemap URL Extractor: every URL on a website, for RAG and SEO.
- Shopify Products Scraper & Price Monitor: catalogs and price changes from any Shopify store.
- Workday, Greenhouse, Lever & Ashby Jobs Scraper: every open job from company career sites.
- AI Web Scraper (your own key): describe fields in English, get JSON.
- Website Change Monitor: a before/after diff by webhook, Slack or Discord when a page changes.
- Company Registry Lookup: UK Companies House, Spain, France, Finland and Norway in one schema.
- UK & EU Public Tenders: Find a Tender and TED notices in one table, with daily only-new alerts.
Use it from an AI agent or the API
- Minimal input:
{"urls": ["https://example.com"]}. Everything else has a sensible default. - Cost: $0.003 per screenshot and $0.006 per PDF. Pages that fail to load are free. One page as both ≈ $0.009.
- Run time (our runs): 20–35 s for 2–6 pages at the default 2 GB, so an agent will usually poll once.
- Results: the default dataset, one row per URL with
screenshotUrlandpdfUrldownload links; the files are in the key-value store, and the run summary is itsOUTPUTrecord. - Works over the Apify MCP server (
search-actors, thencall-actor) and is eligible for agentic payments (x402).
FAQ
Can it capture pages behind a login? No, public pages only.
HTML to PDF? It converts live URLs to PDF; raw HTML input isn't supported.
Is there a website screenshot API? Yes. Call the actor from the Apify API (or Make, Zapier, n8n) with a list of
URLs; each result row has screenshotUrl and pdfUrl download links.
Does it click "Accept" on cookie banners? No. Banners are hidden on the page, never accepted, so the tool gives no
consent on anyone's behalf. The row's cookieBannersHidden counts the banner elements it hid.
How long can a full-page screenshot be? Up to 30,000 px tall (set Max page height; the default is 15,000 px so
endless-scroll pages finish). A page that was cut says screenshotTruncated: true.
Can I take screenshots on a schedule? Yes. Save your input as a task and schedule it in Apify, daily or weekly.
Each run stores new files, and each row has a capturedAt time, so you build a dated archive.
Where are the image and PDF files? In the run's key-value store (Storage tab). Each row links its own files.
Feedback
Found a page that doesn't render right? Open an issue on the Issues tab with the URL and your settings, and it will be looked at.