Website Screenshot & PDF API avatar

Website Screenshot & PDF API

Pricing

from $8.00 / 1,000 captures

Go to Apify Store
Website Screenshot & PDF API

Website Screenshot & PDF API

Render any public page in a real browser and get a screenshot or an A4 PDF back. Full page or viewport, desktop to mobile presets, retina, dark mode, ads blocked and consent overlays hidden so the image shows the page, not a cookie wall.

Pricing

from $8.00 / 1,000 captures

Rating

0.0

(0)

Developer

Martin CONTAL

Martin CONTAL

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Categories

Share

Render any public page in a real browser and get back a screenshot, an A4 PDF, or both. Give it a list of URLs; it returns a direct link to every file plus the page title, final URL and HTTP status.

Typical uses: link previews and Open Graph images, visual regression and uptime checks, archiving a page as a PDF, thumbnails for a directory or a marketplace, design and competitor research, and AI agents that need to see a page rather than read its markup.

What makes a screenshot usable

Most screenshot tools hand you a picture of a cookie wall. This one is built around the things that actually ruin captures:

  • Consent and cookie overlays are hidden, two ways. A list covers the usual managers (OneTrust, Cookiebot, Usercentrics, Didomi, Osano, Quantcast, Sourcepoint, HubSpot), and a detector catches the bespoke ones every publisher writes: an element is hidden only when it is pinned to the viewport, large, stacked above the page, and either reads like a consent notice or embeds a known consent frame. That wording test is what keeps a hero banner or a sticky header on screen. They are hidden with CSS, never clicked, so nothing is consented to on anyone's behalf.
  • Lazy-loaded images are rendered. A full-page capture scrolls through the whole document first, then returns to the top, so the image is not half placeholders.
  • Ads and trackers are blocked, which removes the flashing boxes and makes pages load faster.
  • Late overlays are caught, because the hiding rules are applied again after scrolling.
  • Dark mode is a real system-level emulation, not a CSS filter, so the page renders the theme its author wrote.

Input

{
"urls": ["https://stripe.com", "https://vercel.com"],
"screenshot": true,
"pdf": false,
"fullPage": true,
"device": "desktop",
"deviceScaleFactor": 2,
"darkMode": false,
"hideCookieBanners": true
}
OptionWhat it does
urlsPages to render, one capture each
screenshot, pdfEither or both; at least one must be on
imageFormat, qualityPNG for interfaces, JPEG for photo-heavy pages
fullPageWhole document, or just the viewport
deviceDesktop 1920x1080, Laptop 1440x900, Tablet 820x1180, Mobile 390x844, or Custom
width, height, deviceScaleFactorYour own viewport; density 2 gives a retina image
darkModeRender as a visitor whose system is set to dark
hideCookieBanners, hideSelectorsHide consent overlays and anything else you name
blockAdsBlock the usual ad and analytics hosts
waitUntil, waitForSelector, delaySecsControl when the page is considered ready
timeoutSecsGive up on a page after this long

Output example

{
"url": "https://stripe.com",
"finalUrl": "https://stripe.com/",
"status": 200,
"title": "Stripe | Financial Infrastructure to Grow Your Revenue",
"device": "desktop",
"viewportWidth": 1920,
"viewportHeight": 1080,
"fullPage": true,
"darkMode": false,
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/.../records/0001-stripe-com.png?signature=...",
"pdfUrl": null,
"imageFormat": "png",
"loadTimeMs": 4120,
"error": null,
"capturedAt": "2026-09-21T20:40:00.000Z"
}

screenshotUrl and pdfUrl are signed links: they open in a browser, an <img> tag, a report or an agent's next step without an Apify token. A URL that could not be rendered still appears in the output, with the reason in error, and is not charged as a capture.

Pricing

Pay per event: $0.005 per run plus $0.008 per capture, and the browser time is on us. A page that fails to render is not charged as a capture. Ten captures in one run cost about nine cents. Rendering a page in a real browser is not free compute, and this price covers it rather than passing you a separate usage bill at the end of the month.

Using it from an AI agent or via API

An agent that has to judge a page, a layout or a design needs pixels, not HTML. Call this Actor with a URL, read screenshotUrl from the dataset, and pass the image straight into a vision model. It works through the Apify API, the Apify MCP server or any Apify client.

This Actor renders the URLs you give it, as an ordinary browser would, and stores the resulting files in your own run storage. It does not log in, does not bypass paywalls or bot protection, and collects no personal data. You are responsible for having the right to capture and reuse the pages you submit.

More tools

Same approach, same output discipline:

FAQ

The capture is a cookie wall anyway. Add the overlay's selector to hideSelectors. Send the URL in the Issues tab too and the built-in list gets that site added.

The page is blank or half loaded. Set waitUntil to Network idle, or wait for a specific element with waitForSelector, or add a couple of seconds with delaySecs.

Can I capture a page behind a login? No. This Actor renders public pages only.

How big can a full-page capture be? Very tall pages produce very large PNGs. Switch imageFormat to JPEG, or turn fullPage off, if size matters more than fidelity.