Website Screenshot: Full Page, Mobile & PDF avatar

Website Screenshot: Full Page, Mobile & PDF

Pricing

from $5.00 / 1,000 screenshots

Go to Apify Store
Website Screenshot: Full Page, Mobile & PDF

Website Screenshot: Full Page, Mobile & PDF

Turn a list of URLs into one clean screenshot per page with a link and HTTP status: full page, desktop or mobile, PNG, JPEG or PDF. $0.005 per saved screenshot + $0.00005/GB start fee per run; error pages that load are charged, unreachable URLs are not.

Pricing

from $5.00 / 1,000 screenshots

Rating

0.0

(0)

Developer

Digitální produkty pro život

Digitální produkty pro život

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

13 days ago

Last modified

Share

Capture screenshots of any number of websites in one run. Full page or only the visible area, as desktop, laptop, tablet or mobile, saved as PNG, JPEG or PDF. Cookie banners and chat bubbles are hidden automatically and lazy-loaded images are loaded before the capture, so you get clean, complete pages.

You pay $0.005 per saved screenshot (one per unique URL in a run), plus a tiny Actor start fee of $0.00005 per GB of run memory ($0.0001 per run at the default 2 GB). A URL that could not be captured at all (unknown domain, navigation timeout, missing Wait for element, screenshot error) produces no result and no screenshot fee. A page that loads but shows an error, a block or a captcha page (404, 500, 403, bot protection) is still captured and charged, because you get its image; check the statusCode field to spot those.

Features

  • Bulk: paste hundreds of URLs, they are captured in parallel.
  • Full page with lazy-loaded images (the page is scrolled before capturing), or just the visible area.
  • Devices: desktop 1920×1080, laptop 1366×768, tablet (iPad) and mobile (iPhone, retina), or your own width and height.
  • Formats: PNG, JPEG (with quality) or PDF (A4).
  • Clean shots: hides OneTrust, Cookiebot, Usercentrics, Didomi, Quantcast and other consent pop-ups, plus Intercom, HubSpot, Drift and Crisp chat widgets. Hide your own elements with CSS selectors.
  • Element screenshots: capture only a header, a pricing table or a chart.
  • Wait options: network idle, extra delay or wait for a specific element.
  • Dark mode for sites that support it.

Output

Each screenshot is stored in the run's key-value store and you get a direct link in the dataset:

{
"url": "https://apify.com/",
"finalUrl": "https://apify.com/",
"statusCode": 200,
"title": "Apify: Full-stack web scraping and data extraction platform",
"screenshotUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/0001-apify.com.png",
"format": "png",
"device": "desktop",
"viewport": { "width": 1920, "height": 1080 },
"fullPage": true,
"fileSizeBytes": 1224899,
"loadTimeMs": 9800,
"capturedAt": "2026-10-08T18:18:53.170Z"
}

A SUMMARY record lists every failed URL with the reason.

  • screenshotUrl works without an API token. It is a signed link to that one file, so you can paste it into a spreadsheet, Slack, Notion or a report. The same link without its signature parameter returns 403, so the rest of your storage stays private. (Checked October 13, 2026: signed link 200, unsigned 403.)
  • How long the files stay: screenshots are saved in the run's default key-value store, which Apify deletes according to your plan's data retention (see Apify storage retention). After that, old links stop working.
  • To keep them permanently (proof, archiving, before/after comparisons): rename the run's key-value store in Apify Console (Storage → the store → Actions → Rename). Named storages are not deleted. Or copy the files to your own storage (for example Google Drive or S3) with an integration or webhook right after each run.

Use cases

1. Screenshots from a list of URLs

Paste your URLs, pick the device and format, run. Example input:

{ "urls": ["https://example.com", "https://crawlee.dev"], "device": "desktop", "fullPage": false, "format": "jpeg" }

You get one dataset item per URL with screenshotUrl, statusCode, title, fileSizeBytes and loadTimeMs. A real run of this input saved 2 screenshots in about 20 seconds and cost $0.0101 (2 × $0.005 + $0.0001 start fee).

2. QA check after a release

Run the same list of 20–50 key pages before and after you deploy (use the Device setting to repeat it for mobile). Export both datasets and compare statusCode and fileSizeBytes per URL: a page that now answers 404/500, or whose image size changed a lot, needs a look. Two runs of 50 URLs cost about $0.50.

3. Visual report for a client

Capture 30–100 pages of a client site once a month (schedule the Actor), export the dataset and build a table with the page title, statusCode, capture time and the screenshotUrl links. 100 URLs cost about $0.50. Rename the run's storage if the links must stay available (see Sharing the links and keeping the screenshots).

Other uses: competitor page monitoring, dated proof of what a page showed, website previews.

Tips

  • Use JPEG for smaller files and PNG for crisp text.
  • If something still covers the page, add its selector to Hide elements.
  • For very long pages, Max full-page height cuts the image (default 15,000 px).
  • Maximum cost per run: if you set a maximum cost per run, the Actor stops starting new pages as soon as that limit is reached. URLs not yet processed are skipped (no result, no charge), the screenshots already saved stay, and the run status message and the stopReason field in the SUMMARY record say "Your maximum cost per run was reached." Split a long list into several runs if you need all of it.
  • Pages behind a login are not supported. Only capture pages you are allowed to access.

Questions or ideas?

Open an issue on the Issues tab. Feature requests are welcome.

How to use it via API

You can run the Actor from the Apify Console, on a schedule, or from your own code. Get your API token in Apify Console → Settings → Integrations.

Python

from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("digitalni.produkty.pro.zivot/website-screenshot").call(run_input={
"urls": [
"https://apify.com"
],
"fullPage": True
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

JavaScript / Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });
const run = await client.actor('digitalni.produkty.pro.zivot/website-screenshot').call({
"urls": [
"https://apify.com"
],
"fullPage": true
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Integrations and AI agents

  • Export results as JSON, CSV, Excel, XML or HTML, or open them directly in Google Sheets.
  • Connect to Make, Zapier, n8n, Slack, Google Drive, Airbyte or any webhook to get screenshots of web pages into your workflow automatically.
  • Use it from AI agents and LLM apps (Claude, ChatGPT, Cursor, LangChain…) through the Apify MCP server: the agent can call this Actor as a tool.
  • Schedule runs (hourly, daily, weekly) to keep data fresh without any code.

FAQ

How much does it cost? $0.005 per saved screenshot, one per unique URL in a run, plus an Actor start fee of $0.00005 per GB of memory once per run ($0.0001 at the default 2 GB). 1,000 URLs in one run cost about $5.0001. URLs that could not be captured at all are not charged a screenshot fee and are listed in the SUMMARY record. Error, blocked and captcha pages that still load are captured and charged; their statusCode shows the error. Device, format and element are run-level settings, so capturing the same URL on two devices takes two runs (or two URLs) and costs two screenshots.

Can I take mobile screenshots? Yes. Choose a desktop, laptop, tablet or mobile viewport, and full page or only the visible area.

What about cookie banners? Common cookie and consent banners are hidden automatically, and lazy-loaded images are scrolled into view before capture.

Do the screenshot links expire? The links work without a token, but the files are deleted together with the run's storage according to your plan's data retention. Rename the storage (or copy the files to your own storage) to keep them permanently. See Sharing the links and keeping the screenshots above.

Can I get a PDF instead of an image? Yes. PNG, JPEG and PDF output are supported.

More tools from the same developer

All tools with code examples: github.com/Phenixik/apify-actors

Need a custom tool? I build custom Apify Actors, scrapers, data feeds and automations, and adapt existing Actors to your workflow. Write to digitalniproduktyprozivot@email.cz or open an issue on the Issues tab.