Website Screenshot API – Bulk Full-Page Screenshots & PDF avatar

Website Screenshot API – Bulk Full-Page Screenshots & PDF

Pricing

from $3.00 / 1,000 screenshots

Go to Apify Store
Website Screenshot API – Bulk Full-Page Screenshots & PDF

Website Screenshot API – Bulk Full-Page Screenshots & PDF

Capture full-page or viewport screenshots (PNG, JPEG, WebP) and PDFs of any list of URLs with headless Chrome. Desktop, laptop, tablet and iPhone viewports, element capture by CSS selector, cookie-banner hiding, ad blocking, dark mode, custom CSS/JS. Pay only per successful capture.

Pricing

from $3.00 / 1,000 screenshots

Rating

0.0

(0)

Developer

Cemal Atakli

Cemal Atakli

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

3 days ago

Last modified

Share

Take full-page website screenshots and PDFs of any list of URLs with a real headless Chrome browser. Choose a desktop, laptop, MacBook retina, tablet, iPhone, Android or OG-image viewport. Save as PNG, JPEG or WebP, capture a single element by CSS selector, hide cookie banners, block ads and trackers, and switch to dark mode. Paste URLs and click Start: every image gets a public link, and you pay only for screenshots that succeed.

What it does

  • Bulk screenshots: one URL or thousands. One shared Chromium captures several pages in parallel, with retries.
  • Full page or viewport: scrolls through the page first so lazy-loaded images appear. Endless pages are cut at a height you choose (default 16,000 px) instead of timing out.
  • Device presets: desktop 1920×1080, laptop 1366×768, macbook 1440×900 @2x, tablet (iPad-like) 820×1180 @2x, mobile (iPhone-like) 390×844 @2x with touch and a mobile user agent, android 412×915, og-image 1200×630, or custom width/height. The device scale factor can be overridden from 1 to 4.
  • Formats: PNG (lossless), JPEG or WebP with a quality setting, and PDF (A4, Letter, Legal, A3, Tabloid, portrait or landscape, print or screen CSS). You can also get a screenshot and a PDF of the same page in one run.
  • Element screenshots: selector: "#pricing" captures only that element, even if it is taller than the screen.
  • Clean captures: cookie and consent banners (OneTrust, Cookiebot, Didomi, Quantcast, Usercentrics, TrustArc, Sourcepoint and more) are hidden with CSS. Nothing is clicked or accepted. About 75 ad and tracking domains are blocked, and animations are reduced.
  • Dark mode (prefers-color-scheme: dark), custom CSS and custom JavaScript before capture, a custom user agent, and an option to ignore HTTPS errors.
  • No silent timeouts: if load/networkidle never fires (endless trackers or streaming), the page is still captured as rendered and the row gets a warning. Real failures become free error rows.
  • Output: each image or PDF is stored in the run's key-value store with a public URL. The dataset row has the URL, final URL after redirects, HTTP status, title, image URL, width/height, bytes, timing and any error.

Use cases

  • Visual monitoring: schedule daily screenshots of your pages or competitors' pricing pages and keep a visual history.
  • Archiving and compliance: save PDF and PNG evidence of web pages, terms of service, ads or listings at a point in time.
  • OG images and thumbnails: the og-image viewport (1200×630) or selector makes social preview cards and link thumbnails for directories.
  • QA and responsive testing: capture the same URLs on desktop, tablet and mobile, in light and dark mode, after each deploy.
  • SEO and client reports: full-page screenshots of landing pages for audits. Pairs with the SEO Audit Crawler.
  • AI agents and LLM vision: give a vision model a screenshot of the page. Pair it with Website to Markdown for the text.

Input example

{
"urls": ["https://example.com", "https://en.wikipedia.org/wiki/Web_scraping", "apify.com"],
"viewport": "mobile",
"fullPage": true,
"format": "webp",
"quality": 80,
"outputType": "both",
"pdfFormat": "A4",
"hideCookieBanners": true,
"blockAds": true,
"darkMode": false,
"waitUntil": "load",
"delaySecs": 0,
"maxConcurrency": 3
}

Other useful options: selector (element only), customCss, customJs (async body, await allowed), maxHeight, navigationTimeoutSecs, maxRetries, userAgent, ignoreHttpsErrors, proxyConfiguration (datacenter or your own proxies), and maxUrls.

Output example

{
"url": "https://en.wikipedia.org/wiki/Web_scraping",
"finalUrl": "https://en.wikipedia.org/wiki/Web_scraping",
"status": 200,
"title": "Web scraping - Wikipedia",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/00001-en-wikipedia-org-wiki-web-scraping.webp",
"screenshotKey": "00001-en-wikipedia-org-wiki-web-scraping.webp",
"format": "webp",
"width": 780,
"height": 7086,
"bytes": 408288,
"pdfUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/00001-en-wikipedia-org-wiki-web-scraping.pdf",
"pdfPages": 13,
"pdfFormat": "A4",
"viewport": "mobile",
"deviceScaleFactor": 2.0,
"fullPage": true,
"truncated": false,
"loadTimeMs": 1828,
"captureTimeMs": 3506,
"warning": null,
"error": null
}

The Output tab shows a Screenshots table with image previews, plus PDFs and Errors views. OUTPUT in the key-value store holds a run summary (captured, failed, average time, whether the run stopped at the max charge). See SAMPLE_OUTPUT.json for full rows, including a truncated 20,000 px page and an invalid-URL error row.

Pricing

Pay per event: $0.003 per screenshot, $0.003 per PDF, and $0.00005 per run start. That is $3 per 1,000 screenshots. Failed URLs, invalid input, timeouts and retries are free. The Actor respects your Maximum cost per run: it never starts a page it could not pay for, and it stops cleanly when the limit is reached.

ActorPriceFormatsNotes
Website Screenshot API (this)$0.003 / screenshot or PDF, $0.00005 / startPNG, JPEG, WebP, PDF7 device presets, element capture, cookie-banner hiding, ad blocking, dark mode, custom CSS/JS, partial capture instead of timeout, errors free
apify/screenshot-urlFree Actor, you pay platform usagesee Store pageRated 3.9★, users report timeouts
moonweil/url-screenshot-api$0.004 / item + $0.001 / startsee Store page

Competitor details from the Apify Store, October 2026. Check their pages for current terms.

FAQ

Does it accept cookies or click on consent popups? No. Known consent containers and fixed boxes that mention cookies or consent are hidden with CSS only. No consent is given on your behalf. Turn hideCookieBanners off to capture the page exactly as a new visitor sees it.

Why is a page cut at 16,000 px? Endless feeds and very long pages would make huge images, and rendering them takes minutes. Images are limited to 16,383 device pixels in height (the WebP format limit, applied to all formats to keep memory bounded), so at 2x scale the cut is at about 8,190 CSS px. Lower maxHeight for smaller files. For the complete page as one document, use outputType: pdf. A cut capture has truncated: true and a warning.

The page needs a click or a login first. Use customJs (for example document.querySelector('#tab-2').click(); await new Promise(r => setTimeout(r, 800));). Logged-in pages are not supported.

Some sites show "Access denied" or a captcha. A few sites block all headless browsers or datacenter IPs. You still get the screenshot of what was served (with its status), which is useful for monitoring. A datacenter proxy can help in some cases. Residential proxies are not supported.

Where are my files and how long are they kept? In the run's default key-value store. Each row has a direct screenshotUrl/pdfUrl. Retention follows your Apify plan's storage settings. Download them or send them to S3, Google Drive or a webhook with Apify integrations.

How fast is it? Typical pages take about 1–3 s each, and 3 run in parallel at the default 2 GB memory. Raise maxConcurrency to 5–6 with 4 GB for big batches.

Mobile screenshots look desktop-like. mobile, android and tablet set the viewport, touch support and a mobile user agent, so responsive and mobile-detecting sites render their mobile layout. Rendering is done by Chromium, not real Safari.

Use with AI agents / Apify MCP

  • Apify MCP server: add the Actor to Claude Desktop, Cursor or VS Code via https://mcp.apify.com?actors=gazidev/website-screenshot. An agent can call it with {"urls":["https://competitor.com/pricing"],"viewport":"desktop","fullPage":false} and get back an image URL it can look at.
  • API (synchronous): POST https://api.apify.com/v2/acts/gazidev~website-screenshot/run-sync-get-dataset-items?token=... with the input JSON returns the rows, including screenshotUrl, in one call.
  • Scheduled visual monitoring: create a Task with your URLs, schedule it daily, and send the dataset to Slack, Google Drive or a webhook.

More from the website toolkit

  • SEO Audit Crawler: broken links, meta tags, redirects and on-page SEO issues across a whole site.
  • Website to Markdown: any URL, sitemap or whole site to clean Markdown for LLMs and RAG.