Website Screenshot & PDF API – Full Page, Mobile & Batch avatar

Website Screenshot & PDF API – Full Page, Mobile & Batch

Pricing

from $2.00 / 1,000 screenshot (viewport or element)s

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

Website Screenshot & PDF API – Full Page, Mobile & Batch

Website screenshot API: capture full-page or element screenshots (PNG, JPEG, WebP) and PDFs of any URL or raw HTML. Desktop, tablet and mobile presets, cookie-banner hiding, dark mode, lazy-load scrolling and batch URLs. Each row has a direct file URL.

Pricing

from $2.00 / 1,000 screenshot (viewport or element)s

Rating

0.0

(0)

Developer

Enes Bulanık

Enes Bulanık

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Website screenshot API for any public URL or raw HTML: viewport, full-page or single-element screenshots (PNG, JPEG, WebP) and PDFs, with desktop/tablet/mobile presets, cookie banners hidden, dark mode and batch URLs. Use this instead of a general web crawler when you (or your AI agent) need a picture or PDF of a page – every result row has a direct file URL you can open, embed or download.

Price: $2 per 1,000 screenshots, $4 per 1,000 full-page screenshots or PDFs. Pages that fail are free.

What does Website Screenshot & PDF API do?

It opens each page in a real Chromium browser, waits until it has loaded, cleans it up and saves a file to the run's key-value store:

  • Viewport screenshots – what a visitor sees on the first screen
  • Full-page screenshots – the whole scrollable page; lazy-loaded images are scrolled into view first
  • Element screenshots – only the part that matches a CSS selector (header, #pricing, .chart)
  • PDF – A4, Letter, Legal, A3, A5 or Tabloid, portrait or landscape, print or screen style
  • Cookie banners hidden – OneTrust, Cookiebot, Usercentrics, Didomi, Quantcast, Sourcepoint, TrustArc, CookieYes, Complianz and other common consent tools, plus a heuristic for custom banners. Nothing is clicked or accepted.
  • Optional clean-up – hide newsletter pop-ups, modals and chat widgets, or any element by CSS selector
  • Devices – desktop 1440×900, desktop Full HD 1920×1080, laptop 1366×768, iPad, iPhone and Android presets, or any custom size; retina scale 1–3×
  • Dark mode – for sites that support prefers-color-scheme: dark
  • Raw HTML input – render your own HTML (invoices, reports, social cards) to an image or PDF
  • Ads and trackers blocked by default – faster pages, smaller cost
  • Batch – hundreds of URLs in one run, captured in parallel

Each dataset row contains the file URL, width and height (or PDF page count), file size, final URL after redirects, HTTP status and page title.

Use cases

  • AI agents and LLM tools – let an agent "look" at a page: pass the fileUrl to a vision model.
  • SEO and marketing reports – full-page and mobile screenshots of your pages and competitors' pages.
  • Website monitoring and QA – scheduled screenshots to spot broken layouts, visual changes or defacement.
  • Archiving and compliance – keep a dated PDF or image of a page (terms, prices, ads, claims).
  • Link previews and thumbnails – small JPEG/WebP previews for directories, newsletters and dashboards.
  • Lead and market research – capture landing pages or pricing pages for a list of companies.
  • Documents from HTML – turn generated HTML (invoices, certificates, reports) into PDF or PNG.

How to take website screenshots

  1. Click Try for free / Start.
  2. Paste one or more URLs into Page URLs (example.com without https:// works too).
  3. Choose the Output format, turn on Full page if you want the whole page, and pick a Device.
  4. Click Start. Open the Overview tab of the results to preview the images, or download the files from the links.

Input

FieldTypeDescription
urlsarray of stringsPages to capture. Default: https://apify.com.
formatpng | jpeg | webp | pdfOutput file type. Default png.
fullPagebooleanCapture the whole scrollable page. Default false.
devicedesktop | desktop-hd | laptop | tablet | mobile | androidScreen size and browser type. Default desktop.
hideCookieBannersbooleanHide cookie-consent banners. Default true.
selectorstringCapture only the first visible element matching this CSS selector.
htmlstringRaw HTML to render (in addition to or instead of URLs).
darkModebooleanRequest the dark color scheme. Default false.
qualityintegerJPEG/WebP quality 1–100. Default 80.
viewportWidth / viewportHeightintegerCustom browser size in CSS pixels (0 = device preset).
scaleFactornumberPixel ratio 0.5–3 (2 = retina). Default 1.
maxHeightintegerFull-page captures are cut at this height. Default 10000 (max 30,000; WebP 16,000).
hideOverlaysbooleanAlso hide pop-ups, modals and chat widgets. Default false.
hideSelectorsarrayExtra CSS selectors to hide.
pdfFormat, pdfLandscape, pdfMediaPDF paper size, orientation and print/screen style.
waitUntilload | networkidle | domcontentloadedWhen the page counts as loaded. Default load.
delayMsintegerExtra wait before capturing (animations, charts).
scrollToBottombooleanScroll to load lazy images before full-page/element/PDF capture. Default true.
blockAds, blockMediabooleanSkip ads/trackers and video/audio downloads. Default true.
captureErrorPagesbooleanAlso capture (and pay for) HTTP 4xx/5xx pages. Default false.
navigationTimeoutSecsintegerPage load timeout. Default 45. Every page is tried up to 3 times.
maxConcurrencyintegerPages captured in parallel (default: 1 per GB of memory).
proxyConfigurationobjectApify datacenter proxy by default; choose RESIDENTIAL for sites that block datacenters.

Example input:

{
"urls": ["https://apify.com", "https://en.wikipedia.org/wiki/Screenshot"],
"format": "jpeg",
"fullPage": true,
"device": "mobile",
"quality": 75
}

Output

Each dataset item has a type: screenshot, pdf or error. Real sample output:

Screenshot

{
"type": "screenshot",
"url": "https://apify.com/",
"finalUrl": "https://apify.com/",
"httpStatus": 200,
"pageTitle": "Apify: Marketplace of ready-to-run tools for AI",
"fileUrl": "https://api.apify.com/v2/key-value-stores/oznTxr4VYInROr8PZ/records/0001-apify-com-882791f5.jpg?signature=eka0p71TYznQ7ki6oIba",
"key": "0001-apify-com-882791f5.jpg",
"format": "jpeg",
"contentType": "image/jpeg",
"fileSizeBytes": 321294,
"width": 390,
"height": 10000,
"pdfPages": null,
"fullPage": true,
"truncated": true,
"selector": null,
"device": "mobile",
"viewportWidth": 390,
"viewportHeight": 844,
"darkMode": false,
"hiddenElements": 0,
"loadTimeMs": 24189,
"capturedAt": "2026-10-08T19:07:25.600Z"
}

PDF (shortened)

{
"type": "pdf",
"url": "https://en.wikipedia.org/wiki/Screenshot",
"pageTitle": "Screenshot - Wikipedia",
"fileUrl": "https://api.apify.com/v2/key-value-stores/.../records/0001-en-wikipedia-org-d345471b.pdf?signature=...",
"contentType": "application/pdf",
"fileSizeBytes": 209316,
"pdfPages": 4
}

Error (free)

{
"type": "error",
"url": "https://example.com/",
"finalUrl": "https://example.com/",
"httpStatus": 200,
"errorCode": "SELECTOR_NOT_FOUND",
"error": "No visible element matches the CSS selector \"#doesnotexist\" on this page. You were not charged."
}

Possible errorCode values: INVALID_URL, DNS_NOT_FOUND, SSL_ERROR, TIMEOUT, PROXY_ERROR, NOT_A_PAGE (the URL is a download, not a page), NAVIGATION_FAILED, PRIVATE_ADDRESS (local or private network addresses are refused), HTTP_ERROR (page answered 4xx/5xx), SELECTOR_NOT_FOUND, FILE_TOO_LARGE, CAPTURE_FAILED.

The fileUrl works without an Apify token (it is a signed link to that one file) and stays valid as long as the run's storage is kept (the retention period of your Apify plan). Files are also listed in the run's Storage → Key-value store tab. The dataset has two views: Overview (with image previews) and Files.

Pricing

This Actor uses pay-per-event pricing – you pay only for files you get. Platform usage is included.

EventPriceWhen it is charged
screenshot$0.002 ($2 / 1,000)Each viewport or element screenshot (PNG, JPEG or WebP)
full-page-screenshot$0.004 ($4 / 1,000)Each full-page screenshot
pdf$0.004 ($4 / 1,000)Each PDF
ErrorsFreeInvalid URLs, unreachable pages, HTTP 4xx/5xx pages, missing selectors

Examples:

JobCost
100 homepage thumbnails (viewport, JPEG)$0.20
1,000 full-page screenshots$4.00
500 pages saved as PDF$2.00

Tip: set Max cost per run in the run options – the Actor stops cleanly when your budget is reached.

Use with AI agents (MCP)

This Actor works as a tool in the Apify MCP server, so Claude, ChatGPT, Cursor and other MCP clients can call it. Add it to your MCP client with the server URL https://mcp.apify.com/?tools=openharvest/website-screenshot-api. Example tool input an agent can send:

{
"urls": ["https://example.com/pricing"],
"fullPage": true,
"format": "jpeg",
"quality": 70
}

The agent receives one row per page; fileUrl is a direct link to the image or PDF that can be passed to a vision model or shown to the user. Use JPEG or WebP for smaller files when a model has to read the image.

FAQ

Why is a page captured with a cookie banner or pop-up? Most consent tools are hidden automatically. For a custom banner, add its CSS selector to Hide these elements, or turn on Hide pop-ups and chat widgets.

Some images are missing on my full-page screenshot. Keep Scroll to load lazy images on (it scrolls the page before a full-page capture) and add an Extra delay of 1,000–3,000 ms for slow sites, or use waitUntil: networkidle.

A site returns HTTP 403 or shows a "verify you are human" page. Some sites block datacenter traffic. Select the RESIDENTIAL proxy group (and a country) in Proxy configuration. Blocked pages (4xx/5xx) are free unless you turn on Capture error pages.

How tall can a full-page screenshot be? Up to 30,000 px (WebP 16,000 px). The default cut-off is 10,000 px; rows that were cut have truncated: true. Very tall captures need more memory – use 4 GB or more for long pages.

Can I capture pages behind a login? No. The Actor only opens public pages and does not log in to websites. Local and private network addresses (localhost, 10.x, 192.168.x, cloud metadata) are refused.

Can I run it on a schedule or from my code? Yes – use Apify Schedules, the Apify API, the JavaScript/Python clients, or integrations such as Make, Zapier, n8n and webhooks.

The Actor captures what any visitor sees on a public web page, like a browser screenshot. It does not log in, bypass paywalls or collect personal data. Screenshots can still contain copyrighted material or personal data, so make sure your use (for example storing, publishing or analysing them) complies with applicable laws such as copyright law and GDPR, and with the website's terms. If you are unsure, consult a lawyer.

Other actors by the same developer:

  • Website SEO Audit Crawler – Broken Links, Schema & llms.txt – check titles, meta tags, headings and links of the pages you capture
  • Website Tech Stack Detector – Bulk CMS, Analytics & Frameworks – see which CMS, frameworks and tools a website uses
  • Sitemap URL Extractor – All URLs from sitemap.xml & robots.txt – get every page URL of a site to capture them in bulk
  • PDF to Markdown – DOCX, PPTX, XLSX & HTML for LLM & RAG – turn the PDFs and pages you capture into clean Markdown text for LLMs
  • Bulk WHOIS Lookup – RDAP, DNS Records, SSL & Redirects – add domain and certificate data to your website research

Support & feedback

Found a bug or a site that does not render correctly? Open an issue in the Issues tab with the URL and your input.