Website Screenshot Generator: PNG, JPEG or PDF avatar

Website Screenshot Generator: PNG, JPEG or PDF

Pricing

$0.45 / 1,000 saved files

Go to Apify Store
Website Screenshot Generator: PNG, JPEG or PDF

Website Screenshot Generator: PNG, JPEG or PDF

Runs each address in Chromium, scrolls so lazy images load, then stores the whole page or just the first view. Set a device (desktop, laptop, tablet or phone) and a mode. You pay per result; failures are free. Costs 0.45 USD per 1,000 saved screenshots.

Pricing

$0.45 / 1,000 saved files

Rating

0.0

(0)

Developer

BEPO Labs

BEPO Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Security

Limited permissions

Share

📸 What is Website Screenshot?

Give this Actor a list of URLs and receive a website screenshot of each, or a print-ready PDF. A real browser loads every site, so what you see is what you get. Schedule runs to watch for visual changes.

  • Monitor competitors and landing pages: capture pricing, home and campaign views on a schedule and keep a visual history
  • QA and responsive testing: check how a page renders on desktop, laptop, tablet and phone in one run
  • Archive and compliance: save dated, full-page PDFs of terms, ads or product pages as evidence
  • Reports and clients: drop up-to-date screenshots into decks, audits and SEO write-ups automatically
  • AI agents: let Claude or ChatGPT take a screenshot of any page through MCP

Website Screenshot: Full-page PNG, JPEG or PDF of any URL, on desktop, tablet and phone, with cookie banners closed.

✨ Why use this Actor?

  • ✅ Cookie banners closed automatically: OneTrust, Cookiebot, Didomi, Quantcast, Usercentrics, TrustArc, Google Funding Choices and Sourcepoint consent walls are clicked away before the shot
  • ✅ Four devices in one run: desktop 1440 px, laptop 1280 px at 2x, tablet 820 px and phone 390 px at 3x
  • ✅ Full page, viewport or one element: capture the entire scrolling view, the first screen, or a single CSS selector
  • ✅ PDF as well as images: A4, Letter, A3 or Legal PDFs with backgrounds, ready to print or archive
  • ✅ Clean shots: hide chat widgets, promos or anything else with your own CSS selectors
  • ✅ Fair pricing: you pay only for files that were saved; failed pages are free

📦 What data can you get with Website Screenshot?

🖼️ Full-page PNG or JPEG📄 PDF (A4, Letter, A3, Legal)📱 Desktop, laptop, tablet, phone
🔗 Download link per file🌐 Final URL after redirects🔢 HTTP status code
📝 Page title📐 Width and height in pixels💾 File size in bytes
🍪 Which cookie button was clicked🎯 Element-only capture⚠️ Error message per failed URL

🚀 How to use Website Screenshot

Website Screenshot works in a few clicks, no coding needed:

  1. Create a free Apify account (the free plan includes 5 USD of monthly credit).
  2. Open Website Screenshot and click Try for free.
  3. Paste the URLs you want to capture and pick the format (PNG, JPEG or PDF) and the devices.
  4. Click Start and wait for the run to finish (most runs take seconds).
  5. Download your data as JSON, CSV, Excel, XML or HTML, or send it straight to Google Sheets, Make, Zapier or your AI agent.

How Website Screenshot works

⬇️ Input

Give the Actor a list of URLs and choose how to capture them. Everything else has sensible defaults: full page, desktop, PNG, cookie banners closed.

Devices

Pick any of desktop (1440 px), laptop (1280 px, 2x), tablet (820 px) and mobile (390 px, 3x). You get one file per URL and device, so 10 URLs on 2 devices give 20 screenshots.

Full page, first screen or one element

fullPage captures the whole scrolling page (default). Switch it off for the first screen only, or set selector to capture just one element, for example #pricing.

Cleaner screenshots

Cookie banners are closed by default. Use hideSelectors to remove chat bubbles, promo bars or anything else, and delayMs to wait for animations.

FieldTypeWhat it doesDefault
URLs (urls)arrayPages to capture, up to 1,000.["https://apify.com"]
Format (format)stringOutput file type: "png" (lossless image), "jpeg" (smaller image, see JPEG quality) or "pdf" (printable document, see PDF paper size)."png"
Devices (devices)arrayOne file per URL and device: desktop (1440 px), laptop (1280 px, 2x), tablet (820 px), mobile (390 px, 3x).["desktop"]
Full page (fullPage)booleanWhole page, or only the first screen.true
Element selector (selector)stringCapture one element instead of the page (PNG and JPEG).
Close cookie banners (closeCookieBanners)booleanClick accept on common consent managers and buttons such as Accept all.true
Hide elements (hideSelectors)arrayCSS selectors to hide (chat widgets, promos).
Wait until (waitUntil)stringPage load event to wait for."load"
Extra delay (ms) (delayMs)integerWait after load before the shot.1000
Timeout (seconds) (timeoutSecs)integerMaximum seconds to wait for each page to load before it is reported as failed (5 to 180).45
JPEG quality (jpegQuality)integerImage quality for JPEG output from 1 (smallest file) to 100 (highest quality).80
PDF paper size (pdfFormat)stringPaper size used when the output format is PDF: "A4", "Letter", "A3" or "Legal"."A4"
Max concurrency (maxConcurrency)integerHow many pages are captured in parallel (1 to 10).3

Website Screenshot input form

Input example

{
"urls": [
"https://example.com/",
"https://www.wikipedia.org/"
],
"format": "png"
}

⬆️ Output

Each URL and device gives one dataset record and one file in the run's key-value store. It holds the download link (fileUrl), landing address, HTTP status, page title, size and which cookie button was clicked.

Website Screenshot output table

Output example

One row of the dataset (desktop PNG of example.com):

{
"url": "https://example.com/",
"device": "desktop",
"format": "png",
"finalUrl": "https://example.com/",
"status": 200,
"title": "Example Domain",
"key": "example-com-desktop.png",
"fileUrl": "https://api.apify.com/v2/key-value-stores/<store id>/records/example-com-desktop.png",
"bytes": 83853,
"width": 1440,
"height": 900,
"bannerClosed": null,
"error": null
}

View the results as a table or JSON in the Output tab and download them as JSON, CSV, Excel, XML, HTML or RSS, all fields or only those you pick.

⚠️ Error items

An input that cannot be read does not stop the run and is never charged: it gets a row with an error field so you can see exactly what failed.

ErrorMeaning
ERR_NAME_NOT_RESOLVEDThe domain does not exist or cannot be reached
TimeoutThe page did not load within timeoutSecs (default 45 s)
Selector not foundselector was set but the element is not on the page

💰 How much does Website Screenshot cost?

Website Screenshot is priced per event: 0.6 USD per 1,000 screenshots (0.0006 USD per screenshot), with no monthly rental. You are billed for each saved file; failed URLs are not charged.

You getYou pay
100 screenshots0.06 USD
1,000 screenshots0.6 USD
10,000 screenshots6 USD
100,000 screenshots60 USD

💡 Apify's free plan gives you 5 USD of credit every month, enough for about 8,333 screenshots at no cost. Set a spending limit per run and the Actor stops there.

⚖️ Website Screenshot vs. the alternatives

Website ScreenshotFree screenshot ActorsScreenshot API subscriptions
Cookie banners closed✅ 8 consent managers + text buttons❌ usually not✅ on paid plans
Devices per run✅ 4 at once11 per request
PDF export✅❌ often PNG only✅
Pay only for saved files✅compute timemonthly plan
Works with Claude and AI agents (MCP)✅✅❌ custom code

🔌 Integrations, API and MCP

Connect Website Screenshot to your AI agent (MCP)

Give Claude, ChatGPT, Cursor or any MCP client direct access to Website Screenshot through the Apify MCP server. Add this URL to its settings:

https://mcp.apify.com/?actors=bepolabs/website-screenshot

For Claude Desktop, add it under mcpServers in claude_desktop_config.json:

{
"mcpServers": {
"website-screenshot": {
"command": "npx",
"args": [
"-y",
"@apify/actors-mcp-server",
"--actors",
"bepolabs/website-screenshot"
],
"env": {
"APIFY_TOKEN": "<your Apify API token>"
}
}
}
}

Then ask: "Take a full-page screenshot of stripe.com/pricing on desktop and mobile and show me the links."

Run it from your code

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("bepolabs/website-screenshot").call(run_input={"urls":["https://example.com/","https://www.wikipedia.org/"],"format":"png"})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript (npm install apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('bepolabs/website-screenshot').call({"urls":["https://example.com/","https://www.wikipedia.org/"],"format":"png"});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

No-code integrations

Send results to Google Sheets, Slack, Airtable, HubSpot, Make, Zapier, n8n and more from the Integrations tab, start runs on a schedule, or trigger your own endpoint with a webhook when a run finishes. The Apify API gives you full control over runs and datasets.

❓ FAQ

Yes. It dismisses the common consent managers (OneTrust, Cookiebot, Didomi, Quantcast, Usercentrics, TrustArc, Google Funding Choices) and buttons labelled "Accept all" or "Alle akzeptieren". Sourcepoint walls inside an iframe, used by many news sites, are closed too. Use hideSelectors for anything else in the way.

How many URLs can I capture in one run?

Up to 1,000 URLs per run, three pages at a time by default (maxConcurrency). For more, start several runs or schedule them.

Do emojis show up in the screenshots?

Yes. Emojis render in full colour, never as empty boxes: the browser ships with the Noto Color Emoji font.

Can it capture pages behind a login?

No. It captures what a visitor without an account sees. It does not log in, bypass paywalls or solve CAPTCHAs.

Where are my files?

Every file is in the run's key-value store, and each dataset row has its fileUrl. Download them one by one, or fetch them through the API.

Can I run it on a schedule?

Yes. Create a schedule in Apify Console (for example every Monday at 8:00) and connect a webhook, Google Drive, Slack or email to get the new screenshots automatically.

Taking a screenshot of a public web page is generally allowed: the Actor loads it once, exactly like a visitor's browser. You are responsible for having the right to capture and use the sites you name, and for respecting copyright and trademarks when you publish screenshots. The Actor does not log in, bypass paywalls or solve CAPTCHAs.

What if something is missing or does not work?

Open an issue on the Issues tab; we read each one and reply. Feature requests are welcome too.

💬 Your feedback

Tell us what Website Screenshot should add on the Issues tab or leave a review; your notes decide what we work on next.

ActorWhat it does
⚡ Bulk PageSpeed InsightsLighthouse scores, lab metrics and real-user Core Web Vitals for any list of URLs, on mobile, desktop or both.
🩺 SEO AuditAny page to a 0 to 100 SEO score and grade, with the fixes that matter most first: on-page, links and Core Web Vitals.
🔗 Broken Link CheckerEvery link and image on your pages checked: HTTP status, each redirect hop, final URL and response time.
🗺️ Sitemap URL ExtractorEvery URL of a website from its sitemaps, in one deduplicated list with lastmod, changefreq and priority.
🌐 Domain RDAP and DNSDomains to registrar, creation and expiry dates, age, status, nameservers, DNSSEC and DNS records from official RDAP, in bulk.
📈 Google Trends ScraperInterest over time for up to five keywords on one 0 to 100 scale, any country or worldwide, plus top and rising related queries.
🧩 Tech Stack DetectorAny list of domains to the technologies behind each site: CMS, shop, framework, analytics, CDN and hosting.
📈 Wikipedia PageviewsDaily or monthly views of any Wikipedia article in any language, with totals and averages, from the official Wikimedia API.