Website Screenshot API: Full-Page, Mobile & URL to PDF
Pricing
from $1.20 / 1,000 screenshots
Website Screenshot API: Full-Page, Mobile & URL to PDF
Website screenshot and URL to PDF for any list of URLs: full-page or viewport screenshots, desktop to mobile, PNG, JPEG or PDF, cookie banners and ads hidden. Returns a shareable image link per page. Callable by AI agents via MCP. From $1.50 per 1,000 screenshots.
Pricing
from $1.20 / 1,000 screenshots
Rating
0.0
(0)
Developer
Datawright Labs
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Security
Limited permissionsShare
For AI agents: Use when asked to screenshot a website, capture what a page looks like on mobile, or convert a URL to PDF. Call with urls (required), optional viewports (desktop, laptop, tablet, mobile, custom), fullPage, format (png, jpeg, pdf), darkMode, waitForSelector, delayMs; cookie banners and ads are hidden by default. Returns one row per URL+viewport: screenshotUrl (public image link), url, viewport, format, fullPage, status, httpStatus, pageTitle, fileSizeKb, error. Cost: $0.0015 per viewport screenshot, $0.005 per full-page capture or PDF, plus a $0.0015 start fee per run.
For people: Ask your agent "take full-page mobile screenshots of these 5 competitor homepages" and it captures them here and replies with image links you can open or share, with cookie banners already removed. Also turns pages into PDFs. 1,000 screenshots cost $1.50.
Capture screenshots of any list of URLs as PNG, JPEG or PDF: full-page or viewport only, on desktop, laptop, tablet and mobile presets or a custom size, with dark mode, wait-for-selector, and built-in cookie banner and ad blocking so your captures look clean. Every screenshot is stored in the run's key-value store and returned with a shareable URL in the dataset.
What does this website screenshot tool do?
- Bulk screenshots: paste hundreds of URLs, get one image per URL per viewport.
- Viewport presets: Desktop 1920×1080, Laptop 1366×768, Tablet 810×1080 (2× retina), Mobile 390×844 (iPhone 13, 3× retina, mobile user agent), or a custom width × height, with an optional pixel-density override (1x–3x).
- Full-page screenshots of the entire scrollable page, with optional auto-scroll so lazy-loaded images appear.
- Formats: PNG (lossless), JPEG (adjustable quality) or PDF (paper size or one long full-page PDF).
- Hide cookie banners using community filter lists plus built-in rules for common consent platforms (OneTrust, Cookiebot, Usercentrics, Quantcast, Didomi, TrustArc, CookieYes and others).
- Block ads and trackers for faster, cleaner captures.
- Dark mode (
prefers-color-scheme: dark), wait for a CSS selector, extra delay, and hide any element by CSS selector (chat widgets, popups). - Parallel capture, automatic retries, and a clear error per URL (DNS failure, timeout, selector not found) instead of a failed run.
- Optional proxy support, e.g. to capture country-specific versions of a page.
Use cases
- Visual archiving & compliance: keep dated screenshots or PDFs of web pages, ads or terms pages.
- SEO & marketing reports: thumbnails of landing pages, competitor pages or SERP destinations.
- QA & responsive design checks: see each page on desktop, tablet and mobile at once.
- Link previews & directories: generate thumbnails for a list of websites.
- Monitoring: schedule daily captures of pages you care about.
Input
| Field | Description | Default |
|---|---|---|
urls | URLs to capture | ["https://example.com"] |
viewports | desktop, laptop, tablet, mobile, custom | ["desktop"] |
fullPage | Capture the full scrollable page | false |
format | png, jpeg or pdf | png |
darkMode | Emulate dark color scheme | false |
waitUntil | load, domcontentloaded, networkidle | load |
waitForSelector | Wait for an element before capture | – |
delayMs | Extra wait in ms | 1000 |
scrollToBottom | Trigger lazy loading | false |
blockCookieBanners / blockAds | Clean-up options | true / true |
hideSelectors | Extra elements to hide | – |
proxyConfiguration | Optional proxy | none |
Example input:
{"urls": ["https://apify.com", "https://example.com"],"viewports": ["desktop", "mobile"],"fullPage": true,"format": "png","scrollToBottom": true,"blockCookieBanners": true}
Output
Each capture is saved to the run's default key-value store, and the dataset gets one row per URL × viewport:
{"url": "https://example.com/","finalUrl": "https://example.com/","status": "ok","httpStatus": 200,"pageTitle": "Example Domain","viewport": "desktop","width": 1920,"height": 1080,"deviceScaleFactor": 1,"fullPage": false,"format": "png","darkMode": false,"screenshotUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/example.com-desktop-1a2b3c4d.png","key": "example.com-desktop-1a2b3c4d.png","fileSizeKb": 79,"durationMs": 1830,"attempts": 1,"takenAt": "2026-10-19T03:51:02.000Z"}
screenshotUrl opens the image directly in a browser (if your account restricts storage access, the URL includes a signature). Failed captures are kept with status: "error", an errorType and an error message.
Files follow your account's data retention for run storages. Download or copy them elsewhere (e.g. with the Google Drive, S3 or Dropbox integrations) if you need them long term.
Example tasks
Copy one of these into the JSON tab of the input (or save it as a Task) to get started quickly.
Full-page desktop + mobile screenshots with cookie banners removed
{"urls": ["https://apify.com","https://example.com"],"viewports": ["desktop","mobile"],"fullPage": true,"blockCookieBanners": true}
Save web pages as A4 PDFs
{"urls": ["https://en.wikipedia.org/wiki/Web_scraping"],"format": "pdf","pdfPaperFormat": "A4"}
Dark-mode JPEG thumbnails of a list of sites
{"urls": ["https://github.com","https://vercel.com"],"viewports": ["laptop"],"format": "jpeg","jpegQuality": 70,"darkMode": true}
How much does the website screenshot API cost?
You pay per successful capture; failed captures are free.
| Job | Cost |
|---|---|
| 1 run start (default 2 GB memory) | $0.003 (charged once per run, $0.0015 per GB) |
| 100 viewport screenshots (PNG/JPEG) | $0.15 |
| 1,000 viewport screenshots | $1.50 |
| 1,000 full-page screenshots or PDFs | $5 |
| 1,000 URLs × desktop + mobile viewport | $3 |
- Apify's free plan includes $5 of monthly credit: about 3,000 viewport screenshots a month for free.
- Paid Apify plans get automatic discounts: Silver -10%, Gold and above -20%.
- Batch many URLs in one run: the start fee is paid once per run, not per URL.
- Set Maximum cost per run to hard-cap spend.
Website screenshot API vs. the alternatives
| This Actor | Running Puppeteer/Playwright yourself | Screenshot API SaaS | |
|---|---|---|---|
| Bulk: hundreds of URLs per call | ✅ | DIY queue + retries | usually one URL per call |
| Full-page, viewport and PDF | ✅ | ✅ | ✅ |
| Cookie-banner + ad blocking built in | ✅ | DIY | sometimes, often paid tier |
| Mobile (iPhone 3×), tablet, laptop, custom presets | ✅ | DIY | ✅ |
| Hosted image URL per capture | ✅ | DIY storage | ✅ |
| Cost model | $1.50 per 1,000, no subscription | servers + your time | monthly plan |
Use it as an API (Python, JavaScript, cURL)
Every Apify Actor is also a REST API, so you can call this website screenshot API from your own code, a no-code tool or an AI agent.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run = client.actor("datawright-labs/website-screenshot").call(run_input={"urls": ["https://example.com"], "fullPage": true})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item)
JavaScript / Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('datawright-labs/website-screenshot').call({"urls": ["https://example.com"], "fullPage": true});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
cURL (run and get results in one request)
curl -X POST "https://api.apify.com/v2/acts/datawright-labs~website-screenshot/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"urls": ["https://example.com"], "fullPage": true}'
Results can also go straight to Google Sheets, Slack, Make, Zapier, n8n, Airbyte or a webhook via Apify integrations, and you can run it on a Schedule.
Use it from your AI agent (MCP)
Your AI assistant or agent can run this Actor as a tool through Apify's MCP server, so it can run website screenshots and PDFs on its own while you chat. Add this server to any MCP client that supports remote (Streamable HTTP) servers:
{"mcpServers": {"datawright-website-screenshot": {"url": "https://mcp.apify.com?tools=datawright-labs/website-screenshot"}}}
On first use your browser opens to sign in to Apify (OAuth). If your client can't do OAuth, add "headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" } instead. The tool shows up as datawright-labs--website-screenshot, with the same input fields as above, and the agent reads the results with get-dataset-items. Then just ask, for example:
Take full-page mobile screenshots of these 5 competitor homepages and give me the image links.
Want several Datawright tools at once? Comma-separate them: https://mcp.apify.com?tools=datawright-labs/website-screenshot,datawright-labs/pagespeed-auditor. Runs are billed per result, exactly like normal runs.
FAQ
Are all cookie banners removed?
Most common ones are, but not every site. Banners that are part of the page's own code can still slip through; add their selector to hideSelectors.
Why does dark mode not change some sites?
Dark mode emulates the browser's prefers-color-scheme: dark setting. Only sites that ship a dark theme respond to it.
Can I capture pages behind a login?
Not in this version.
Why is my full-page screenshot cut off or missing images?
Turn on scrollToBottom and increase delayMs so lazy-loaded content can load. Very long pages are cut at maxFullPageHeight (default 15,000 CSS px, and at most 24,000 device pixels, i.e. 8,000 CSS px with the 3x mobile preset) to avoid browser crashes; such rows have fullPageTruncated: true. Set the pixel density to 1 to capture more of a long page on mobile.
Can I take screenshots on a schedule?
Yes. Use Apify Schedules and integrations to send the images to Slack, Google Drive, S3 or a webhook.
Is there a free website screenshot API?
Apify's free plan includes $5 of monthly credit, which covers about 3,000 screenshots with this Actor, and you call it over a normal REST API (see below).
How do I take full-page screenshots of many URLs at once?
Paste the URLs, set fullPage: true and turn on scrollToBottom for lazy-loaded pages. Each capture is saved with a shareable URL in the dataset.
Can I convert a URL to PDF?
Yes. Set the format to pdf to get one PDF per page (paper size or one long full-page PDF).
More tools from Datawright Labs
- Bulk PageSpeed & Core Web Vitals Checker: audit PageSpeed / Lighthouse scores for many URLs.
- Sitemap URL Extractor: get every URL of a site from its sitemaps.
- Google Autocomplete Keyword Scraper: long-tail keyword ideas from Google, YouTube and Bing.
- Greenhouse, Lever & Ashby Jobs Scraper: normalized job feeds from 5 ATS platforms.
- Broken Link Checker: find broken links, images and redirects across a whole site.
- App Store Top Charts & Rank Tracker: daily top free/paid/grossing app rankings with rank changes.
- SSL Certificate Checker: bulk SSL certificate and domain expiry checks with alerts for expiring, invalid or outdated TLS.
- Security Headers Checker: bulk HTTP security headers audit (HSTS, CSP, X-Frame-Options, cookies, HTTPS redirect) with an A-F grade per URL.
- Redirect Checker: bulk redirect chains (301, 302, meta refresh), final URL and status, loops and old-to-new migration checks.
- Meta Tags & Open Graph Checker: bulk title, meta description, canonical, noindex, hreflang, Open Graph / Twitter card and schema.org checks with an SEO problems list per URL.
- Tech Stack Detector: bulk CMS, ecommerce platform, framework, analytics, CDN, hosting and email provider lookup for any list of websites (7,600+ technologies).
- SPF, DMARC & DKIM Checker: bulk email domain audit of SPF (10-lookup limit), DMARC, DKIM, MX provider, BIMI and MTA-STS.
- WHOIS Domain Lookup (RDAP): bulk registrar, domain age, expiry date, nameservers, EPP status and availability from official registry RDAP.
Tip: get every page of a site with the Sitemap URL Extractor, then screenshot them all in one run.
Made by Datawright Labs: reliable, fairly priced web data tools. Questions or a missing feature? Open an issue on the Issues tab; we usually reply within a day.