Website Screenshot API: URL to PNG or JPEG avatar

Website Screenshot API: URL to PNG or JPEG

Pricing

from $3.00 / 1,000 screenshots

Go to Apify Store
Website Screenshot API: URL to PNG or JPEG

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

Touchrock

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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 http and https addresses: private networks, localhost and 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.