Website Screenshot and PDF icon

Website Screenshot and PDF Generator

This Actor captures full-page PNG or JPEG screenshots, or PDFs, of a list of URLs with real Chrome, in desktop, tablet or mobile view, with cookie banners hidden and ads blocked by default. It is for agencies, SEO teams and anyone who archives or monitors web pages.

Main price: $6.00 to $8.00 per 1,000 captures, depending on your Apify plan.

What you can do with it

  • Take daily snapshots of competitor pricing and landing pages.
  • Make visual reports for clients, including mobile and desktop checks.
  • Keep time-stamped PDF copies of terms, ads or listings.
  • Make website thumbnails for directories and newsletters.

What you get

Results come as rows in an Apify dataset, which you can export as JSON, CSV or Excel or read over the API. These are the main fields:

FieldExampleMeaning
url, finalUrlhttps://www.bbc.com/newsRequested and final URL
httpStatus200Response status
titleBBC News...Page title
fileUrlhttps://api.apify.com/v2/key-value-stores/...Link to the file in your run
fileBytes2969470File size
capturefull-pagefull-page or viewport-fallback
clippedfalsetrue when the page was cut at the max height

Pricing

This Actor is pay per event. Apify plan tiers set the price: the column for your Apify plan is what you pay, and higher plans pay less per result. Prices are per 1,000 events.

EventWhat is chargedFreeStarterScaleBusiness
CaptureOne screenshot or PDF saved. Failed URLs are not charged.$8.00$6.00$6.00$6.00

Run start fee: $0.05 per 1,000 runs. Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event). Prices come from the Apify Store and can change; the Actor's Apify page always shows the current ones. Platform usage is billed through your Apify account.

Run it from code

Create an API token in Apify Console (Settings, API and Integrations) and replace YOUR_APIFY_TOKEN. This call starts a run with a small input and returns the rows when it finishes. Synchronous calls suit small inputs; for big jobs, start a run and read the dataset later.

curl

curl -X POST "https://api.apify.com/v2/acts/apisamurai~website-screenshot-pdf/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "urls": [
    "https://apify.com",
    "https://www.wikipedia.org"
  ]
}'

Python (pip install apify-client)

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
run_input = {
    "urls": ["https://apify.com", "https://www.wikipedia.org"],
}

# Start the Actor and wait for it to finish.
run = client.actor("apisamurai/website-screenshot-pdf").call(run_input=run_input)

# Read the results from the run's default dataset.
items = client.dataset(run.default_dataset_id).list_items().items
for item in items:
    print(item)

JavaScript (npm install apify-client)

import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const input = {
    urls: ['https://apify.com', 'https://www.wikipedia.org'],
};

// Start the Actor and wait for it to finish.
const run = await client.actor('apisamurai/website-screenshot-pdf').call(input);

// Read the results from the run's default dataset.
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Client calls follow the Python and JavaScript client docs. The full input reference is on the Actor's Apify page.

FAQ

What happens with very long pages?
Full-page captures taller than the max page height (12,000 px by default, up to 30,000 px) are cut, and the row shows clipped: true.
Are ads and trackers blocked?
Yes, by default. Set blockAds to false to capture pages with them.
Am I charged when a site blocks the Actor?
No. Blocked pages and pages that fail to load are not saved and not charged. They are listed in the SUMMARY record.
What is a viewport fallback?
Some heavy pages crash the browser or never stop animating. The Actor retries once in a fresh browser, and if a full-page PNG or JPEG still fails it captures the visible screen and marks the row. That row is charged, because you get a real image. PDFs have no fallback.
Where do I report a problem?
Email hello@apisamurai.com, or open an issue on the Actor's Apify page.