Website Screenshot & PDF API
Pricing
from $8.00 / 1,000 captures
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
Maintained by CommunityActor 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}
| Option | What it does |
|---|---|
urls | Pages to render, one capture each |
screenshot, pdf | Either or both; at least one must be on |
imageFormat, quality | PNG for interfaces, JPEG for photo-heavy pages |
fullPage | Whole document, or just the viewport |
device | Desktop 1920x1080, Laptop 1440x900, Tablet 820x1180, Mobile 390x844, or Custom |
width, height, deviceScaleFactor | Your own viewport; density 2 gives a retina image |
darkMode | Render as a visitor whose system is set to dark |
hideCookieBanners, hideSelectors | Hide consent overlays and anything else you name |
blockAds | Block the usual ad and analytics hosts |
waitUntil, waitForSelector, delaySecs | Control when the page is considered ready |
timeoutSecs | Give 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.
Legal and data policy
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:
- ATS Jobs Scraper — every open role from any company’s Greenhouse, Lever or Ashby job board.
- Sitemap & llms.txt URL Extractor — every URL a website publishes, from robots.txt, all sitemaps and llms.txt.
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.