Website Screenshot API — Full Page, Mobile & PDF
Pricing
from $8.00 / 1,000 screenshots
Website Screenshot API — Full Page, Mobile & PDF
Screenshot any URL: full-page or viewport, desktop, tablet or mobile, JPEG, PNG or PDF. Hides cookie banners, loads lazy images, captures single elements. Returns a public image link per URL. Pay only for successful screenshots.
Pricing
from $8.00 / 1,000 screenshots
Rating
0.0
(0)
Developer
Erich Michal Sikora
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Turn any list of URLs into full-page screenshots (PNG, JPEG) or PDFs. Desktop, tablet or mobile. Cookie banners hidden. You pay only for screenshots that succeed.
| You give | You get, per URL |
|---|---|
["apify.com", "https://example.com/pricing"] | A public link to the image or PDF, plus page title, HTTP status, page height and file size — in one table you can export to CSV, Excel or JSON |
What it's for
- Visual monitoring: schedule it daily and keep a visual history of your pages, competitors' pricing pages or landing pages.
- Reports and audits: attach screenshots of client websites to SEO, design or accessibility reports.
- Mobile checks: see how a page renders on a phone or tablet without owning one.
- Archiving and evidence: save a page as PDF or PNG with a timestamp (
capturedAt). - AI agents: give your agent eyes — call this Actor via the Apify API or MCP and pass
screenshotUrlto a vision model.
Why this one
- ✅ Pay per successful screenshot. Timeouts, 404s, blocked pages and invalid URLs cost you nothing. No surprise compute bills.
- ✅ Full page, done right. Scrolls the page first so lazy-loaded images actually appear, then captures the whole length.
- ✅ Cookie banners hidden (OneTrust, Cookiebot, Didomi, Usercentrics and custom ones) with CSS — nothing is clicked or accepted.
- ✅ Desktop, Desktop HD, tablet and mobile presets, custom viewport, dark mode.
- ✅ PNG, JPEG or PDF. Screenshot a single element with a CSS selector (e.g.
.pricing-table). - ✅ Hide anything you don't want in the picture: chat widgets, sticky headers, ads.
- ✅ Parallel: 4 pages at a time by default, up to 20.
How to use
- Paste your URLs (one per line — bare domains like
apify.comwork too). - Pick format and device. Defaults: JPEG, desktop 1280 px, full page.
- Click Start. Open the Screenshots tab to see thumbnails, or download the table.
Via API (JavaScript):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('<username>/website-screenshot').call({urls: ['https://apify.com', 'https://example.com'],device: 'mobile',format: 'jpeg',});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((i) => i.screenshotUrl));
Output
One row per URL:
{"url": "https://apify.com/","finalUrl": "https://apify.com/","httpStatus": 200,"title": "Apify: Marketplace of ready-to-run tools for AI","screenshotUrl": "https://api.apify.com/v2/key-value-stores/.../records/apify-com-e99c9a65d70a.jpg","format": "jpeg","device": "desktop","fullPage": true,"viewportWidth": 1280,"pageWidth": 1280,"pageHeight": 10036,"bytes": 312804,"captureMs": 262,"consentWall": false,"error": null,"capturedAt": "2026-09-23T14:03:11.402Z"}
Failed pages get a row too, with error filled in (e.g. page returned HTTP 404) — and no charge.
Files are stored in the run's key-value store. They are kept according to your Apify data retention settings; download them if you need them longer.
Pricing
$8 per 1,000 successful screenshots ($0.008 each) plus $0.005 per run for starting the browser. Only screenshots that were actually produced are charged.
Example: a daily run with 20 pages for a month = 600 screenshots + 30 runs ≈ $4.95.
Set Maximum cost per run in the run options and the Actor stops cleanly when it's reached.
Input options
| Option | Default | What it does |
|---|---|---|
urls | — | Pages to capture |
format | jpeg | jpeg, png or pdf |
device | desktop | desktop (1280×800), desktop-hd (1920×1080), tablet (820×1180), mobile (412×915) |
fullPage | true | Whole page, or only the visible viewport |
scrollToBottom | true | Scroll first so lazy images load |
hideCookieBanners | true | Hide cookie/consent pop-ups with CSS |
delayMs | 1000 | Extra wait before capture |
waitUntil | load | load, domcontentloaded or networkidle |
waitForSelector | — | Wait for an element before capturing |
elementSelector | — | Capture just one element |
hideSelectors | — | Elements to hide |
darkMode | false | Request the dark color scheme |
viewportWidth / viewportHeight | device | Custom size |
quality | 80 | JPEG quality |
timeoutSecs | 60 | Per-page timeout |
maxHeight | 20000 | Cut full-page screenshots at this height (px) |
maxConcurrency | 4 | Pages in parallel |
Limitations — read before you buy
- Public pages only. No logins, no cookies you supply.
- We respect website rules. Pages disallowed by the site's
robots.txtand pages that refuse automated access (HTTP 401/403/429) are reported as errors and not charged. The Actor never tries to get around CAPTCHAs or bot checks — if a site shows one instead of its content, that is what the screenshot shows. - "Accept or subscribe" walls are not removed. Some publishers (e.g. many European news sites) require you to accept tracking or pay before showing content. That is a condition of access, so the Actor leaves it visible and sets
consentWall: trueso you can filter those rows. - Full-page screenshots are cut at 20,000 px by default (
maxHeight, up to 50,000). Endless-scroll feeds are captured as far as they have loaded. - Videos are not loaded (they don't show in a still image anyway).
FAQ
Is there a free alternative? Apify's own "Website Screenshot Generator" has no Actor fee, but you pay the compute time — which depends on how slow each page is, and failed or timed-out pages cost the same. Here the price is fixed upfront, failures are free, and you get mobile/tablet views, PDF, element screenshots and cookie-banner hiding.
Can I use it from an AI agent? Yes. It's a plain pay-per-event Actor with a small input, so it works through the Apify MCP server and API.
Something doesn't look right? Open an issue on the Actor's Issues tab with the URL and settings.