Website Screenshot & PDF API — Cookie Banner Removal avatar

Website Screenshot & PDF API — Cookie Banner Removal

Pricing

Pay per event + usage

Go to Apify Store
Website Screenshot & PDF API — Cookie Banner Removal

Website Screenshot & PDF API — Cookie Banner Removal

Use this when you need a clean screenshot or PDF of a web page (cookie banners, ads, chats removed). $0.0015/screenshot, $0.003/full page, $0.005/PDF. Input: {"url":"https://example.com","format":"png"}. Output: screenshotUrl, title, status, width, height. Bulk URLs, mobile/desktop.

Pricing

Pay per event + usage

Rating

0.0

(0)

Developer

Isaac

Isaac

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

12 hours ago

Last modified

Share

Website Screenshot & PDF API – Bulk, Clean, No Cookie Banners

Capture pixel-perfect screenshots (PNG, JPEG, WebP) or PDFs of any website, one URL or ten thousand. Cookie banners, GDPR consent pop-ups, ads, trackers and chat bubbles are removed automatically, so you get a clean picture of the page the way a real visitor sees it after clicking "Reject all".

Use it as a normal Actor (bulk runs, schedules, integrations) or as a real-time HTTP API (Standby mode) that returns the image directly.

Why this screenshot tool?

This ActorBasic screenshot tools
Cookie banners & consent pop-ups✅ Removed (OneTrust, Cookiebot, Didomi, Quantcast, Sourcepoint, TrustArc, Usercentrics, Shopify + EasyList Cookie lists, auto-reject, overlay clean-up)❌ Visible
Ads, trackers, chat widgets✅ Blocked / hidden❌
FormatsPNG, JPEG, WebP, PDFPNG/JPEG
DevicesDesktop, laptop, iPad, iPhone, Pixel (real emulation: UA, touch, retina)Width only
Full page with lazy-loaded images✅ Auto-scrollPartial
Capture one element✅ CSS selector❌
Dark mode, custom CSS/JS, retina 2×/3×✅❌
Blocked / captcha / error pages✅ Detected and flagged (blocked: true)Often saved as a normal result
Real-time API✅ GET /screenshot?url=…❌

What can I use it for?

  • Link previews & thumbnails for apps, directories and chat tools
  • Website change monitoring – schedule daily screenshots of competitor pricing pages
  • Compliance & evidence – dated captures of ads, listings, terms pages
  • SEO & agency reports – desktop + mobile shots of client sites in one run
  • AI agents – let an LLM "see" a page (works via Apify MCP)
  • Archiving – save pages as searchable PDFs

How to take website screenshots

  1. Click Try for free.
  2. Paste your URLs (one per line – example.com works too).
  3. Pick a format, device and whether you want the full page.
  4. Click Start. Each screenshot appears in the results table with a direct download link.

Example input

{
"urls": ["https://www.bbc.com", "https://stripe.com", "https://github.com"],
"devices": ["desktop", "mobile"],
"format": "jpeg",
"fullPage": true,
"hideCookieBanners": true,
"blockAds": true
}

Example output (one item per URL × device)

{
"url": "https://www.bbc.com",
"device": "mobile",
"format": "jpeg",
"fullPage": true,
"success": true,
"finalUrl": "https://www.bbc.com/",
"status": 200,
"title": "BBC Home - Breaking News, World News, US News, Sports, Business, Innovation, Climate, Culture, Travel, Video & Audio",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/screenshot-www-bbc-com-mobile-1a2b3c4d5e.jpg",
"width": 1170,
"height": 24180,
"bytes": 1460211,
"durationMs": 5210,
"error": null
}

Failed or blocked pages produce "success": false with a readable error – one bad URL never fails the run.

Real-time screenshot API (Standby mode)

# Returns the image bytes
curl "https://<your-standby-url>/screenshot?url=https://stripe.com&format=webp&device=mobile&fullPage=true" \
-H "Authorization: Bearer <APIFY_TOKEN>" -o stripe.webp
# Returns JSON with metadata + base64 image
curl -X POST "https://<your-standby-url>/screenshot" -H "Authorization: Bearer <APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"url":"https://github.com","format":"pdf","response":"json"}'

Parameters: url (required), format (png|jpeg|webp|pdf), device (desktop|laptop|tablet|mobile|android), fullPage, width, height, scaleFactor, quality, delayMs, waitUntil, waitForSelector, selector, darkMode, hideCookieBanners, blockAds, hideChatWidgets, customCss, customJs, timeoutSecs, pdfFormat, pdfLandscape, response (image|json). Response headers include X-Final-Url, X-Page-Status, X-Duration-Ms and X-Blocked.

Python

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("<username>/website-screenshot-pdf").call(run_input={
"urls": ["https://www.theguardian.com"], "format": "png", "device": "desktop"})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["url"], item["screenshotUrl"])

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('<username>/website-screenshot-pdf').call({ urls: ['https://stripe.com'], format: 'pdf' });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Pricing

Simple pay-per-event pricing with no subscription. You pay a fixed price per successful capture, and blocked or failed pages are free:

EventPrice
Viewport screenshot (PNG / JPEG / WebP, any device)$0.0015
Full-page screenshot$0.003
PDF of a page$0.005

Examples:

  • 1,000 desktop screenshots: $1.50
  • 1,000 full-page screenshots: $3.00
  • 100 PDFs: $0.50

Platform usage is included in these prices. Set Maximum cost per run and the Actor stops at your limit.

How does the price compare?

Price for 1,000 viewport screenshots, taken from each Actor's public Apify Store pricing (free-tier prices, checked 19 October 2026):

ActorPrice per 1,000Start feeRemoves cookie banners & pop-ups
This Actor$1.50none✅ ~40 consent tools + ads + chat widgets
cheapapi/website-screenshot-api$0.89$0.00001not advertised
moonweil/url-screenshot-api$4.00$0.001not advertised
i-scraper/website-screenshot$6.00nonenot advertised
parseforge/screenshot-url$16.00nonenot advertised
fetchbase/web-screenshot-pro$20.00nonenot advertised

Failed or blocked captures are free here, so you only pay for usable images.

Tips

  • Site blocks the request (403 / captcha)? Try Proxy → Apify Proxy → Residential. Some large news and social sites use advanced bot protection and may still refuse; such pages are flagged blocked: true.
  • Need a country-specific version (e.g. EU cookie wall, local prices)? Choose a proxy country.
  • Animations or late content? Add Extra delay or Wait for selector.
  • Very long pages are cut at Max full-page height (default 16,000 px). WebP is limited to 16,383 px per side.
  • Throughput: ~4 parallel pages per 2 GB memory; 4 GB handles most bulk jobs well.

FAQ

Is it legal to take screenshots of websites? Capturing publicly available pages is generally fine, but respect copyright and site terms, and don't capture personal data without a legitimate reason.

Does it bypass logins or paywalls? No. You can pass your own cookies/headers via the API for pages you are authorised to access.

Can I use it with Make, Zapier, n8n, Google Drive or Slack? Yes – via Apify integrations and webhooks.

Found a bug or a banner that isn't removed? Open an issue on the Issues tab with the URL and we'll look into it.

Use with AI agents (MCP)

AI agents can call this Actor as a tool through the Apify MCP server. Add it to Claude Desktop, Cursor, VS Code or any MCP client:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com/?tools=poised_beardlichen/website-screenshot-pdf",
"headers": { "Authorization": "Bearer <YOUR_APIFY_TOKEN>" }
}
}
}

Then ask your agent: "Take a full-page mobile screenshot of example.com without cookie banners." Pricing is fixed per capture, so agents can predict costs before calling.

Calling it from an AI agent or a script (async pattern)

A single default screenshot usually finishes in about 10–20 seconds. The Apify MCP server waits only about 30–45 seconds for a run before it returns. So for batches, slow pages, or whenever a call returns before the run is done, start the run and fetch the results afterwards rather than waiting on it:

  1. Start the run: POST https://api.apify.com/v2/acts/poised_beardlichen~website-screenshot-pdf/runs with input such as {"url": "https://example.com"}. The response contains data.id (the run ID) and data.defaultDatasetId.
  2. Wait for it to finish: poll GET https://api.apify.com/v2/actor-runs/<runId>?waitForFinish=60 until status is SUCCEEDED.
  3. Fetch the results: GET https://api.apify.com/v2/datasets/<defaultDatasetId>/items?clean=true.

Send your token as Authorization: Bearer <APIFY_TOKEN>. Through MCP, if the call returns a run ID instead of results, use the server's run-status and dataset tools (e.g. get-actor-run, then get-dataset-items) with that ID. For small, quick jobs you can use the synchronous endpoint POST /v2/acts/poised_beardlichen~website-screenshot-pdf/run-sync-get-dataset-items instead, which waits for up to 300 seconds.

Other tools by us