Website Screenshot API: URL to PNG or JPEG
Pricing
from $3.00 / 1,000 screenshots
Website Screenshot API: URL to PNG or JPEG
Take screenshots of any list of public URLs: viewport or full page, PNG or JPEG, custom width and height. Pay only for screenshots stored; URLs that fail are free.
Pricing
from $3.00 / 1,000 screenshots
Rating
0.0
(0)
Developer
Touchrock
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Give it a list of public URLs and get one screenshot per URL: the visible viewport or the full page, as PNG or JPEG, at the width and height you choose. Each screenshot is stored with a public link in the run's key-value store, and the dataset lists every URL with its result.
What you get
- Viewport or full page. Full-page shots scroll the whole page (very long pages are cut at 16,000 px, and the row
says so with
cutAtMaxHeight: true). - PNG or JPEG, JPEG quality 1-100.
- Any viewport from 320×240 (phones) to 3840×2160 (4K).
- Wait options: page loaded, HTML ready, or network quiet, plus an extra delay of up to 10 s for animations.
- Clean browser for each URL: no cookies, no login, no shared state between URLs.
- The reason for every URL that could not be captured, in the dataset.
Pricing
$3.00 per 1,000 screenshots ($0.003 each), pay per event. You pay only for screenshots that are stored. Never charged: invalid URLs, pages that do not load, pages that answer an HTTP error (4xx or 5xx), and URLs beyond your maximum cost per run (they are not opened). Apify also bills its usual tiny "Actor start" event.
Input example
{"urls": ["https://example.com", "https://en.wikipedia.org/wiki/Web_scraping"],"fullPage": false,"width": 1280,"height": 800,"format": "png"}
Output example (one dataset row)
{"url": "https://example.com/","ok": true,"screenshotUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/screenshot-0f115db062b7c0dd030b.png","screenshotKey": "screenshot-0f115db062b7c0dd030b.png","finalUrl": "https://example.com/","httpStatus": 200,"title": "Example Domain","format": "png","width": 1280,"height": 800,"fullPage": false,"cutAtMaxHeight": false,"bytes": 21016,"capturedAt": "2026-10-23T22:40:00.000Z","charged": true,"error": null}
A URL that fails has ok: false, charged: false and the reason in error (for example
the page answered HTTP 404 or the domain does not resolve (DNS lookup failed)).
The run also writes an OUTPUT record with the totals: captured, failed, invalid, over the maximum cost, and the
amount charged.
Limits and good use
- Up to 1,000 URLs per run. Only public
httpandhttpsaddresses: private networks,localhostand URLs with a login are refused. - The Actor does not log in, solve CAPTCHAs or bypass blocks. A site that blocks automated browsers gives an error (free) or a screenshot of its block page.
- You are responsible for using it in line with each website's terms of use and the law (for example copyright of what you capture). Capture only pages you are allowed to capture.
Use from the API
curl -X POST "https://api.apify.com/v2/acts/touchrock~url-screenshot/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \-H "Content-Type: application/json" \-d '{"urls": ["https://example.com"]}'
Support
Open an issue on the Actor's Issues tab; we answer within a few days.