Website Screenshot Capture — Full Page & Custom Viewport
Under maintenancePricing
Pay per usage
Website Screenshot Capture — Full Page & Custom Viewport
Under maintenanceTakes 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 CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Screenshot Capture
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
| Field | Type | Default | Description |
|---|---|---|---|
urls | array[string] | — | Required. List of URLs to capture. |
width | integer | 1280 | Viewport width in pixels (max 3840). |
height | integer | 720 | Viewport height in pixels (max 2160). |
full_page | boolean | false | Capture the entire page, including below-the-fold content. |
format | string | "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():
| Field | Type | Description |
|---|---|---|
url | string | The original URL. |
screenshot_key | string|null | Key in key-value store (null if failed). |
width | integer | Viewport width used. |
height | integer | Viewport height used. |
full_page | boolean | Whether full-page capture was enabled. |
format | string | Image format. |
captured_at | string | ISO-8601 timestamp. |
status_code | integer | HTTP response status code. |
elapsed_secs | number | Time taken to capture. |
error | string|null | Error 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:
networkidlewait 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
- Python 3.14+
- Apify CLI
Local Run
# Install dependenciespip install -r requirements.txt# Install Playwright browsersplaywright install chromium# Run the actorpython -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