Website Screenshot API: Full Page, Mobile & Bulk Capture
Pricing
from $1.80 / 1,000 screenshots
Website Screenshot API: Full Page, Mobile & Bulk Capture
Take website screenshots in bulk: full page or viewport, desktop, tablet or mobile size, PNG, JPEG, WebP or PDF, dark mode, cookie banners hidden. Get a public image link, HTTP status and page title for each URL. Pay only per successful screenshot.
Pricing
from $1.80 / 1,000 screenshots
Rating
0.0
(0)
Developer
PlainRows
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
Take website screenshots in bulk from a list of URLs: full-page or viewport, desktop, laptop, tablet or mobile size, PNG, JPEG, WebP or PDF, retina scale, dark mode, with cookie banners and ads hidden. Each URL returns a public link to the image plus its HTTP status, page title and final URL after redirects.
A real Chromium browser renders every page on Apify, no API key or setup needed. You pay for screenshots taken, plus a small start fee per run: unreachable sites, HTTP error pages, blank pages and invalid URLs are not charged.
Typical uses
- Website monitoring and archiving: schedule daily captures of your pages or competitors' home pages and keep a visual history.
- SEO and marketing reports: thumbnails of landing pages, SERP competitors or client sites, in bulk.
- QA and responsive checks: the same URLs on desktop, tablet and mobile, light and dark mode.
- Link previews and directories: generate thumbnails for a list of websites.
- AI agents and automations: give an agent eyes on a web page through one API call or MCP.
What you get for each URL
| Field | Description |
|---|---|
url, finalUrl | The URL you submitted and the address after redirects |
success, errorCode, error | Whether the screenshot was taken (and billed); otherwise why not: DNS_NOT_RESOLVED, TIMEOUT, HTTP_ERROR, BLANK_PAGE, SSL_ERROR, SELECTOR_NOT_FOUND, INVALID_URL, BLOCKED_ADDRESS... |
screenshotUrl, screenshotKey | Link to the image file and its key in the run's key-value store |
format, width, height, bytes | Image format and real pixel size and file size |
statusCode, title | HTTP status and page title |
fullPage, pageHeight, truncated | Full-page mode, full page height (CSS px), and whether a very long page was cut at the height limit |
device, viewportWidth, viewportHeight, deviceScaleFactor, darkMode | Rendering settings used |
cookieBannerHidden | A known consent banner was found and hidden |
waitTimedOut | The page was still loading at the wait limit; the screenshot was taken anyway |
pdfUrl, pdfKey | A4 PDF of the page when savePdf is on |
takenAt | When the screenshot was taken (UTC) |
Every input URL that is processed gets exactly one row, so you can match results to your list. URLs left out by the run's maximum cost, the free-plan limit or the 5,000-URL cap get no row; the run's OUTPUT counts them (skippedBudgetLimit, urlsSkippedFreePlan, urlsOverLimit). Missing values are null.
Input
{"urls": ["https://example.com", "https://www.wikipedia.org", "apify.com/store"],"device": "desktop","fullPage": false,"format": "png","blockCookieBanners": true,"blockAds": true,"darkMode": false,"delayMs": 500}
- urls: up to 5,000 per run;
example.comis read ashttps://example.com. Duplicates are removed. - device:
desktop(1440 x 900),laptop(1366 x 768),tablet(820 x 1180, touch, mobile user agent),mobile(390 x 844, touch, mobile user agent) orcustomwith width, height and isMobile. - fullPage: capture the whole page; it is scrolled first so lazy images load. Pages taller than maxHeight (default 10,000 px) are cut and flagged
truncated; images are capped at 25 megapixels. - format:
png,jpegorwebp, with quality 1-100 for JPEG and WebP. deviceScaleFactor 2 or 3 for retina images. savePdf also saves an A4 PDF. - Waiting:
waitUntil(loadby default,networkidle, ordomcontentloaded), delayMs extra wait, waitForSelector to wait for an element, timeoutSecs (default 30). Web fonts and visible images are awaited automatically (up to 3 s). - Clean-up: blockCookieBanners and blockAds (on by default), hideSelectors for anything else (chat widgets, newsletter pop-ups).
Output example
Real row from a run on 2026-10-07 (desktop viewport, default settings):
{"url": "https://www.wikipedia.org/","success": true,"errorCode": null,"error": null,"finalUrl": "https://www.wikipedia.org/","statusCode": 200,"title": "Wikipedia","screenshotUrl": "https://api.apify.com/v2/key-value-stores/kJl6N78QocoRdJrdP/records/screenshot-wikipedia-org-72e64cab.png?signature=XISlxJNp7GoeBgskiliU","screenshotKey": "screenshot-wikipedia-org-72e64cab.png","format": "png","width": 1440,"height": 900,"bytes": 152786,"fullPage": false,"pageHeight": null,"truncated": false,"device": "desktop","viewportWidth": 1440,"viewportHeight": 900,"deviceScaleFactor": 1,"darkMode": false,"cookieBannerHidden": false,"waitTimedOut": false,"pdfUrl": null,"pdfKey": null,"takenAt": "2026-10-07T15:36:35.500Z","schemaVersion": "1.0"}
Files are stored in the run's key-value store. The links work without an API token for as long as Apify keeps the run's storage (see your plan's data retention): download the files you want to keep, or send them to your own storage with an integration.
Pricing
Pay per screenshot taken, no subscription and no proxy fees. See the Pricing tab for current prices: one event per screenshot taken, cheaper on higher Apify plans. Full page, mobile, retina, dark mode, WebP and the optional PDF are included in that price: there is no add-on per option. A small start fee is charged per run ($0.002 per GB of memory, $0.004 at the default 2 GB). Pages that fail (timeouts, error pages) are free; if a run keeps failing on them, it stops early and says so.
Free: URLs that fail (domain not found, timeout, connection or certificate errors), pages answering an HTTP error (404, 403, 500...: the error page is still captured), blank pages (often bot challenges), invalid or duplicate URLs. The run never spends more than the maximum cost you set.
Free Apify plan: up to 5 URLs per run, so you can check the output. A paid Apify plan removes this limit.
Use it from code, automations or AI agents
API (one call, results returned directly):
curl -X POST "https://api.apify.com/v2/acts/plainrows~website-screenshot/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"urls": ["https://example.com"], "device": "mobile", "fullPage": true}'
n8n, Make, Zapier: use the Apify integration, pick plainrows/website-screenshot, then send screenshotUrl to Slack, Google Drive, Notion or your database.
AI agents (MCP): add https://mcp.apify.com?tools=plainrows/website-screenshot to Claude, Cursor or any MCP client. The agent gets a typed screenshot tool and pays per screenshot.
What this is not
- No login, no proxies, no anti-bot bypass. Pages are loaded from Apify's servers without proxies. Sites behind a bot challenge (some large news and e-commerce sites) may return their challenge page: when it answers an HTTP error or renders blank, it is free; a challenge page answered with a success code can still be captured and billed.
- Cookie banners are hidden, not accepted. The banners of the common consent platforms (OneTrust, Cookiebot, Didomi, Quantcast, Usercentrics, TrustArc, Sourcepoint, consentmanager, CookieYes, Complianz, Osano and others) are hidden with CSS. Home-made banners with unusual markup may remain: add them to
hideSelectors. Content that waits for consent (some embedded videos or maps) may stay empty. - Ad blocking is a short list of the main ad and analytics networks, not a full ad blocker. Blocked ad slots can show as empty boxes.
- Private and internal addresses (localhost, private IP ranges, cloud metadata) are refused.
- Not a visual diff or monitoring service by itself: combine it with a schedule and your own storage.
Run summary
Each run stores a summary in the key-value store (OUTPUT): screenshots taken, failed URLs by error code, HTTP error pages, blank pages, invalid and duplicate URLs, and anything skipped because of the free-plan or budget limit.
FAQ
How do I take screenshots of many websites at once? Paste up to 5,000 URLs, pick the device and format, and run: each URL returns a public link to the image, plus its HTTP status, page title and final URL.
Can I capture the full page or a mobile view? Yes: fullPage scrolls and captures the whole page (up to maxHeight), and device offers desktop, laptop, tablet, mobile or a custom size.
Can it hide cookie banners and ads? Yes, on by default: banners of the common consent platforms are hidden (not accepted), and the main ad networks are blocked. Use hideSelectors for anything else.
Can I get a PDF? Yes: savePdf also saves an A4 PDF of each page.
Does it work on pages behind a login or a bot challenge? No: no login, no proxies and no anti-bot bypass.
More PlainRows tools
Same pay-per-result pricing, same clean JSON, built to chain together in n8n, Make, Zapier or AI agents.
- SEO and keywords: Keyword Search Volume, CPC & Difficulty · Keyword Ideas Generator · Google Autocomplete & People Also Ask · Google Trends Explorer · Website Organic Traffic & Top Keywords · Bulk Domain Authority Checker · Backlink Checker · Broken Link Checker · AI Search Visibility Tracker (ChatGPT, Gemini, AI Mode) · Google Maps Rank Tracker (Geo-Grid Local SEO)
- Leads and companies: Google Maps Scraper · Website Technology Checker · ATS Jobs Scraper (Workday, Greenhouse, Lever, Ashby) · Google Jobs Scraper · Google Ads Scraper (Transparency Center) · Company Registry Lookup (SIRENE, LEI, Brreg) · Public Tenders Search (EU TED & UK)
- E-commerce and travel: Amazon Product Search Scraper · Google Shopping Prices Scraper · Google Hotels Prices Scraper · Tripadvisor Reviews Scraper
- Content and media: Google News Scraper · YouTube Search Scraper · YouTube Comments Scraper · Google Images Scraper · Google Maps Reviews Scraper · App Store & Google Play Reviews Scraper
Support
Missing an option or found a site that renders badly? Open an issue on this page with the URL and your settings. Issues are read and answered.