Website Screenshot Capture — Full Page & Custom Viewport avatar

Website Screenshot Capture — Full Page & Custom Viewport

Under maintenance

Pricing

Pay per usage

Go to Apify Store
Website Screenshot Capture — Full Page & Custom Viewport

Website Screenshot Capture — Full Page & Custom Viewport

Under maintenance

Takes a list of URLs and captures screenshots of each page using Playwright (headless Chromium). Supports viewport size, full-page capture, and PNG/JPEG formats. Ideal for website monitoring, content archiving, and competitive analysis.

Pricing

Pay per usage

Rating

0.0

(0)

Developer

陈俊杰

陈俊杰

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Screenshot Capture

apify

An Apify Actor that captures full-page or viewport-sized screenshots of websites using Playwright (headless Chromium). Input a list of URLs, get high-quality PNG or JPEG screenshots stored in the Actor's key-value store.

🎯 Use Cases

  • Website Monitoring — Capture visual snapshots of your sites over time
  • Content Archiving — Archive web pages as images for offline records
  • Competitive Analysis — Screenshot competitor landing pages and products
  • UI/Visual Regression — Baseline screenshots for later comparison
  • SEO Audits — Verify how pages render across viewport sizes

📥 Input

FieldTypeDefaultDescription
urlsarray[string]Required. List of URLs to capture.
widthinteger1280Viewport width in pixels (max 3840).
heightinteger720Viewport height in pixels (max 2160).
full_pagebooleanfalseCapture the entire page, including below-the-fold content.
formatstring"png"Image format — "png" or "jpeg".

Example Input

{
"urls": ["https://example.com", "https://httpbin.org"],
"width": 1920,
"height": 1080,
"full_page": true,
"format": "png"
}

📤 Output

Each captured URL produces a result record pushed via Actor.push_data():

FieldTypeDescription
urlstringThe original URL.
screenshot_keystring|nullKey in key-value store (null if failed).
widthintegerViewport width used.
heightintegerViewport height used.
full_pagebooleanWhether full-page capture was enabled.
formatstringImage format.
captured_atstringISO-8601 timestamp.
status_codeintegerHTTP response status code.
elapsed_secsnumberTime taken to capture.
errorstring|nullError message if capture failed.

Screenshots are stored in the Key-value store under the key screenshot-{sanitized-url}-{timestamp}.{format}.

⚙️ Technical Details

  • Engine: Playwright (headless Chromium) via Crawlee
  • Navigation: networkidle wait strategy + 2s settle delay
  • Retries: Up to 3 retries with exponential backoff
  • Timeout: 45s navigation, 60s total per request
  • Browser args: --no-sandbox, --disable-setuid-sandbox, --disable-dev-shm-usage, --disable-gpu

🔧 Development

Prerequisites

Local Run

# Install dependencies
pip install -r requirements.txt
# Install Playwright browsers
playwright install chromium
# Run the actor
python -m src

Local Development with Apify CLI

$apify run

Project Structure

screenshot-capture/
├── .actor/
│ ├── actor.json # Actor definition
│ ├── input_schema.json # JSON Schema for input
│ ├── output_schema.json # JSON Schema for output
│ └── pay_per_event.json # Pricing configuration
├── src/
│ ├── __init__.py # Package init
│ ├── __main__.py # Entry point
│ └── main.py # Core logic
├── Dockerfile # apify/actor-python:3.14
├── requirements.txt # Python dependencies
├── .dockerignore
├── .gitignore
└── README.md

💰 Pricing

  • $0.01 per screenshot captured
  • Default included: 100 screenshots

📝 License

MIT