Website Screenshot API – Full Page & PDF
Pricing
from $3.00 / 1,000 screenshots
Website Screenshot API – Full Page & PDF
Full-page website screenshots and PDFs for many URLs on desktop, tablet and mobile. Lazy images loaded, cookie banners hidden. Optional visual change alerts. $3 per 1,000 screenshots; failed pages free.
Pricing
from $3.00 / 1,000 screenshots
Rating
0.0
(0)
Developer
Tidyrun
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Capture full-page screenshots and PDFs of many URLs on desktop, tablet and mobile in one run. Lazy images are loaded, cookie banners are hidden and sticky headers don't repeat down the page. Turn on change detection and every run tells you which pages changed visually since the last one, with a highlighted diff image.
$3 per 1,000 screenshots. Failed pages are free.
Quick start
- Add your URLs (bare domains like
example.comwork). - Pick Devices: desktop, laptop, wide, tablet, mobile.
- Optional: tick Also save a PDF or Detect visual changes.
- Click Start. The Output tab shows every screenshot as a preview with a link to the full image.
Input example:
{"urls": [{ "url": "https://stripe.com" }, { "url": "https://www.python.org" }],"devices": ["desktop", "mobile"],"pdf": true}
One output row per URL and device:
{"url": "https://www.python.org/","device": "desktop","statusCode": 200,"title": "Welcome to Python.org","screenshotUrl": "https://api.apify.com/v2/key-value-stores/.../records/www-python-org-3f1c2a9b7e-desktop.png","imageWidth": 1366,"imageHeight": 2546,"truncatedAtMaxHeight": false,"pdfUrl": "https://api.apify.com/v2/key-value-stores/.../records/www-python-org-3f1c2a9b7e-print.pdf","error": null}
Why this one
| Common problem | What happens here |
|---|---|
| One screenshot per run, one device | Paste a list of URLs and pick several devices; you get one row per URL × device. |
| Grey boxes where images should be | The page is scrolled first so lazy-loaded images render. |
| Cookie pop-ups covering the page | Common consent banners are hidden (OneTrust, Cookiebot, Didomi, Usercentrics and more). Nothing is clicked or accepted. |
| Sticky header repeated or covering content | Fixed and sticky elements are pinned so the full-page image reads naturally. |
| Emoji and non-Latin text show as boxes | Emoji, Thai, Chinese, Japanese and Korean fonts are installed. |
| Paying for pages that failed | Failed pages are never charged. Errors say what to fix. |
| Need to know when a page changes | Detect visual changes compares with the previous run and returns changed, changedPercent and a diff image. |
Monitor pages for visual changes
Turn on Detect visual changes and put the Actor on a Schedule (for example daily). The first run saves a baseline; every later run compares against the previous screenshot of the same URL and device:
"change": { "status": "compared", "changed": true, "changedPercent": 3.42, "previousCapturedAt": "2026-10-08T09:00:00.000Z", "diffUrl": "https://api.apify.com/v2/key-value-stores/.../records/example-com-1a2b3c4d5e-desktop-diff.png" }
Connect a Slack, email or webhook integration to get alerted when changed is true. Baselines live in a named key-value store in your own account (screenshot-baselines by default); use a different Baseline store name to keep separate monitors.
Pricing
| Event | Price |
|---|---|
| Screenshot (captures taller than 15,000 px count as 2) | $0.003 |
| $0.003 | |
| Change check (comparison with the previous run) | $0.001 |
So 1,000 full-page screenshots cost $3; only very long pages (over 15,000 px captured) count twice. Set Maximum height to 15,000 to never pay double. Pages that fail to load are free, and the run stops cleanly at your maximum charge limit.
Call it from your code
curl -X POST "https://api.apify.com/v2/acts/tidyrun~web-screenshot/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"urls":[{"url":"https://example.com"}]}'
Tips
- Full-page shots stop at Maximum height (20,000 px by default);
truncatedAtMaxHeighttells you when that happened. - Use JPEG for much smaller files when you don't need pixel-perfect images.
- If a page keeps loading forever (chat widgets, live tickers), set Wait until to "DOM ready" and add an Extra delay.
Responsible use
This Actor opens public pages in a normal browser, like a visitor would. It does not log in, solve CAPTCHAs or get around bot protection; pages that block automated browsers are reported as errors and not charged. Make sure you have the right to capture and store the pages you list, and respect each site's terms.