Website Screenshot API: $2/1K, Full Page & PDF, No Login avatar

Website Screenshot API: $2/1K, Full Page & PDF, No Login

Pricing

from $1.40 / 1,000 captures

Go to Apify Store
Website Screenshot API: $2/1K, Full Page & PDF, No Login

Website Screenshot API: $2/1K, Full Page & PDF, No Login

Take full-page screenshots or PDFs of any list of URLs with a website screenshot API. $2 per 1,000 captures, failed URLs free. PNG, JPEG, WebP or PDF, desktop to mobile, one element by CSS selector, cookie banners hidden, public links. A ScreenshotOne and Urlbox alternative. MCP-ready, no login.

Pricing

from $1.40 / 1,000 captures

Rating

0.0

(0)

Developer

Don Mangu

Don Mangu

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Share

Website Screenshot API: Full Page, PDF, Bulk URLs

Website Screenshot API takes a full-page screenshot or a PDF of every URL you give it. Paste one URL or a few thousand, pick PNG, JPEG, WebP or PDF, pick a desktop, laptop, tablet or mobile screen, and get one file per page with a public link you can open, embed or download. You can capture the whole page, only the visible screen, or a single element by CSS selector. It costs $2 per 1,000 captures, and URLs that fail are free.

What can this website screenshot tool do?

  • Full-page screenshots of long pages, with lazy-loaded images scrolled into view first.
  • PNG, JPEG, WebP and PDF output. JPEG and WebP take a quality setting; PDF takes paper size, orientation and backgrounds.
  • Device presets: Desktop 1920x1080, Laptop 1366x768, Tablet 820x1180 at 2x, Mobile 390x844 at 3x, or a custom width, height and pixel density.
  • Element screenshots: capture only #pricing, .hero or any CSS selector.
  • Hide elements such as cookie banners, chat widgets and pop-ups before the capture.
  • Wait options: a delay, "wait for element", or wait until the network is quiet.
  • Dark mode for sites that support prefers-color-scheme: dark.
  • Bulk URLs with several pages in parallel and one dataset row per URL.

Typical uses: visual archives of competitor pages, social preview images, QA checks after a deploy, PDF copies of articles or invoices you are allowed to keep, and screenshots for reports and pitch decks.

How to take website screenshots in bulk

  1. Open the Actor and paste your URLs into URLs, one per line. A bare domain such as example.com works too.
  2. Choose a Format (PNG, JPEG, WebP or PDF) and a Device.
  3. Keep Full page on for the whole page, or turn it off for the visible screen only. To capture one part of the page, enter a CSS selector in Element.
  4. Optional: list cookie banners or pop-ups in Hide elements, and raise Delay for pages that animate in.
  5. Click Start. When the run ends, open the Screenshots tab to see previews, or download the dataset as JSON, CSV or Excel. Every row has a screenshotUrl link to the file.

You can also call the Actor from the Apify API, the Apify client for JavaScript or Python, Make, Zapier or n8n, and read the dataset when the run finishes.

An alternative to ScreenshotOne and Urlbox for bulk captures

This Actor is not ScreenshotOne or Urlbox and is not affiliated with either. You pay per capture, $2.00 per 1,000 files, and URLs that fail are free. Paste one URL or a few thousand, and every file gets a public link.

How much does the Website Screenshot API cost?

The price is pay per event: $2.00 per 1,000 captures ($0.002 per file). A capture is one file saved: one PNG, JPEG, WebP or PDF. Rows for URLs that could not be captured (invalid URL, robots.txt does not allow the page, timeout, bot check, missing element) are free. A page that answers 404 or 500 still gives a file of what it shows, so it counts as a capture. Platform usage is included in the price.

Worked example: 5,000 product pages as full-page PNG. 4,900 load fine and 100 time out. You pay 4,900 x $0.002 = $9.80. The 100 timeouts cost nothing.

On the Apify free plan, the monthly free credit covers about 2,500 captures. You can set a spending limit on any run; the Actor stops opening new pages when the next capture would pass it.

Input example

{
"urls": ["https://example.com", "https://www.wikipedia.org"],
"format": "png",
"fullPage": true,
"device": "mobile",
"hideSelectors": ["#onetrust-banner-sdk"],
"delaySeconds": 1
}

Output example

Each URL gives one dataset row. The file itself sits in the run's key-value store, and screenshotUrl links to it.

{
"url": "https://example.com/",
"finalUrl": "https://example.com/",
"status": "ok",
"httpStatus": 200,
"pageTitle": "Example Domain",
"format": "png",
"device": "mobile",
"width": 1170,
"height": 2532,
"pageHeight": 844,
"truncated": false,
"fileSizeBytes": 61234,
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/STORE_ID/records/00001-example.com.png",
"fileKey": "00001-example.com.png",
"capturedAt": "2026-09-27T09:00:00.000Z",
"warnings": [],
"error": null,
"charged": true
}

A failed URL looks the same with status set to the reason (for example timeout or robots_disallowed), error in plain words, no file and charged: false. A STATS record in the key-value store sums up the run.

Bulk lists

Use a long list of web page addresses from an Apify Dataset or from a file. Pick the Dataset under Dataset with the list and write the name of its field under Field in the dataset. Leave the field name empty to use the first text field. Or paste the web address of a .txt, .csv or .json file under List file URL. A .csv file uses its first column. A header row is skipped. The file can be up to 10 MB. Entries from the Dataset and the file are added to the ones typed under URLs, and duplicates are removed. The price per result does not change.

FAQ

Capturing a public web page is generally allowed, but what you do with the image can be limited by copyright, the site's terms and privacy law. Capture pages you have a right to use, and do not collect personal data with this tool. The Actor opens only public pages, sends no login or cookies, follows each site's robots.txt, identifies itself with a contact address in its User-Agent, and stops on a site that answers 401, 403 or 429 or shows a bot check. It never tries to solve a CAPTCHA.

What are the limits?

Full-page images stop at 16,000 pixels in height (5,333 CSS pixels on the 3x mobile preset); taller pages are cut there and marked truncated. Each page gets up to 120 seconds to load. Pages behind a login, a paywall or a bot check are not captured. Addresses on private networks are refused.

Why is my screenshot blank or missing content?

Some pages draw their content after the load event. Raise Delay, set Wait for element to something that appears last, or choose "Network quiet" in Page ready when. Cookie banners that cover the page can be removed with Hide elements.

How do I get more speed?

Give the run more memory and raise Parallel pages (default 4, up to 10). Memory sets a cap of one page per 512 MB above the first 512 MB: 1 GB opens one page at a time, 2 GB opens three, and 4 GB opens seven when Parallel pages is 7 or more.

Something does not work

Open an issue on the Issues tab with the run link and the URL. We aim to answer within a day.