Website Screenshot & URL to PDF API (Bulk) avatar

Website Screenshot & URL to PDF API (Bulk)

Pricing

from $2.00 / 1,000 screenshots

Go to Apify Store
Website Screenshot & URL to PDF API (Bulk)

Website Screenshot & URL to PDF API (Bulk)

Capture public web pages or your own HTML as PNG, JPEG, WebP or PDF: full page, one element, or desktop/tablet/mobile presets. Bulk URLs, one file per page, and failed captures are free. Every browser request is checked, so internal addresses are never reached.

Pricing

from $2.00 / 1,000 screenshots

Rating

0.0

(0)

Developer

kelp forest

kelp forest

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 days ago

Last modified

Share

Capture public web pages, or HTML you paste in, as PNG, JPEG, WebP or PDF. Built for developers and AI agents who need reliable captures in bulk.

Use cases

  • Archive pages or proofs of publication as PDF.
  • Thumbnails and previews for directories, link pages and dashboards.
  • Visual checks of landing pages on desktop and mobile before a launch.
  • Render your own HTML (invoices, reports, certificates) to PDF or PNG.
  • Give an AI agent a picture of a page it is working on.

What it does

  • One row per capture, with a link to the file in the run's key-value store.
  • Bare domains work (example.com is opened as https://example.com); input that is not an http(s) address gets a free error row that says what a valid link looks like.
  • Device presets (desktop, laptop, tablet, mobile) or a custom viewport; full-page or single-element (CSS selector) captures.
  • PDF output with paper size (Letter, Legal, A4, A3, Tabloid) and backgrounds.
  • Raw HTML mode for invoices, reports and social cards.

Pricing (pay per event)

EventPrice
screenshot (PNG/JPEG/WebP saved)US$0.002
pdf (PDF saved)US$0.003

Failed captures are free: blocked targets, timeouts and pages answering HTTP 400 or higher produce an error row and no charge.

Each run also has Apify's run-start charge of US$0.00005 per GB of run memory (US$0.0001 at the default 2048 MB), charged when the run starts, even if every capture fails.

How to use

  1. Open the actor in Apify Console and fill in the input form (or paste the JSON example below into the JSON editor).
  2. Optional: set a maximum charge for the run under the run options to cap what a run can cost.
  3. Click Start. Results appear in the Output tab as they are produced; export them as JSON, CSV, Excel or HTML.

You can also start runs from the Apify API or CLI, run the actor on a schedule (for example weekly), and send results to other apps with Apify integrations and webhooks.

Input example

{"urls": ["https://example.com/"], "format": "pdf", "pdfFormat": "A4"}

Output example (one row, as on the platform)

{"url": "https://example.com/", "format": "png", "status": "ok", "event": "screenshot", "httpStatus": 200, "key": "screenshot-4e3d5eb182a8.png", "fileUrl": "https://api.apify.com/v2/key-value-stores/<store-id>/records/screenshot-4e3d5eb182a8.png", "bytes": 20567, "seconds": 0.35}

FAQ

Can it capture pages behind a login or a cookie banner? No. It loads pages like a fresh visitor with no cookies; it does not log in, click banners away or solve captchas. Use selector to capture just the part you need.

How long can a full-page capture be? Very long pages are captured in one image; extremely long pages may be cut by the browser's own image size limit. PDF has no such limit.

What does a failed capture cost? Nothing. Timeouts, HTTP 4xx/5xx pages and blocked addresses produce an error row without a charge. The only cost of a run where everything fails is Apify's run-start charge (US$0.00005 per GB of memory, US$0.0001 at the default 2048 MB).

Where are the files? In the run's key-value store; each dataset row has key and a fileUrl link.

Why is a sub-resource listed in blockedRequests? The page tried to load something from a private or internal address (for example 127.0.0.1 or a cloud metadata address). The guard refused it; the rest of the page was captured.

Limits: what this actor does not do

  • No logins, cookies, captcha solving or proxies to get around blocks. Login-walled pages are out of scope.
  • No private, loopback or cloud-metadata addresses. Every browser request (the page, each redirect hop, images, scripts, frames, fetch/XHR, WebSockets) goes through a guard that refuses such addresses. If the page itself redirects there, you get a free blocked_target error row; if only some sub-resources are refused, the capture is saved and the refused hosts are listed in blockedRequests.
  • It does not bypass paywalls or a site's terms. Only capture pages you are allowed to capture.

Changelog

  • 1.0 (October 2026): first public version.