Bulk Website Screenshot & URL to PDF Converter
Pricing
Pay per event
Bulk Website Screenshot & URL to PDF Converter
Screenshot a list of websites and save them as PDFs 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. $5 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
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Take screenshots of a whole list of websites and convert them to PDF, in one run. Paste URLs, pick desktop or mobile, full page or first screen, and get a PNG, JPEG or WebP image and/or an A4 or Letter PDF of each page, with a download link per row. Cookie banners, sign-up pop-ups and chat bubbles are hidden (never accepted), lazy images are loaded, and pages that fail are never charged.
Try it in one click: the input is prefilled with two pages, as screenshot + PDF. Apify's free plan covers about 1,000 screenshots a month.
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?
$5 per 1,000 screenshots and $6 per 1,000 PDFs, so Apify's $5 monthly free credit covers about 1,000 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 $2.20. 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 (much smaller files), quality setting |
| 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: JPEG or WebP at quality 70–80 is usually indistinguishable from PNG for web pages.
- 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)
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.005 per screenshot and $0.006 per PDF. Pages that fail to load are free. One page as both ≈ $0.011.
- 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.