VOOZH about

URL: https://apify.com/george.the.developer/screenshot-pdf-api

โ‡ฑ Website Screenshot and PDF API - Sub-3s Capture ยท Apify


๐Ÿ‘ Website Screenshot & PDF API โ€” Fast Captures avatar

Website Screenshot & PDF API โ€” Fast Captures

Under maintenance

Pricing

Pay per event + usage

Go to Apify Store

Website Screenshot & PDF API โ€” Fast Captures

Under maintenance

Capture pixel-perfect screenshots and PDFs from any URL in under 3 seconds. PNG/JPEG/WebP formats, custom viewports, full-page capture, batch up to 20 URLs.

Pricing

Pay per event + usage

Rating

0.0

(0)

Developer

๐Ÿ‘ George Kioko

George Kioko

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

2

Monthly active users

48 days

Issues response

a month ago

Last modified

Share

๐Ÿ“ธ Website Screenshot & PDF API โ€” Pixel-Perfect Captures in Under 3 Seconds

The fastest screenshot API on the market. Capture any webpage as PNG, JPEG, WebP, or PDF with sub-3-second delivery. Competitors take 6-21 seconds. We deliver in 1-2 seconds.


Architecture Overview

flowchart TB
subgraph Client["Your Application"]
REQ["HTTP Request"]
end
subgraph API["Screenshot & PDF API"]
ROUTER["Request Router"]
VALIDATE["Input Validation"]
CACHE["10-min LRU Cache"]
BROWSER["Pre-Warmed Puppeteer<br/>Chromium Browser"]
RENDER["Page Renderer"]
FORMAT["Output Formatter"]
CHARGE["PPE Billing"]
end
subgraph Output["Response"]
BIN["Binary Image/PDF"]
B64["Base64 JSON"]
end
REQ --> ROUTER
ROUTER -->|"/screenshot"| VALIDATE
ROUTER -->|"/pdf"| VALIDATE
ROUTER -->|"/batch"| VALIDATE
VALIDATE --> CACHE
CACHE -->|"Hit"| FORMAT
CACHE -->|"Miss"| BROWSER
BROWSER --> RENDER --> FORMAT
FORMAT --> CHARGE
CHARGE --> BIN & B64
style Client fill:#1a1a2e,color:#fff
style API fill:#16213e,color:#fff
style Output fill:#533483,color:#fff

Performance Comparison

gantt
title Screenshot Latency Comparison (lower is better)
dateFormat X
axisFormat %s seconds
section This API
Screenshot (2.1s) :done, 0, 2100
PDF (1.2s) :done, 0, 1200
section Competitor A
Screenshot (8.4s) :crit, 0, 8400
section Competitor B
Screenshot (14.2s) :crit, 0, 14200
section Competitor C
Screenshot (21s) :crit, 0, 21000
MetricThis APICompetitor Avg
Screenshot latency2.1 seconds14.5 seconds
PDF latency1.2 seconds8.3 seconds
Uptime100%74-94%
FormatsPNG, JPEG, WebP, PDFPNG only
Batch support20 URLs per callNone
Full-page captureYesLimited

Request Flow

sequenceDiagram
participant App as Your App
participant API as Screenshot API
participant Cache as LRU Cache
participant Chrome as Puppeteer Chrome
App->>API: GET /screenshot?url=github.com&width=1280
API->>Cache: Lookup (url + params hash)
alt Cache Hit (within 10 min)
Cache-->>API: Cached screenshot
API-->>App: Image binary (instant)
else Cache Miss
API->>Chrome: Create new page
Chrome->>Chrome: Set viewport (1280x720)
Chrome->>Chrome: Navigate to URL
Chrome->>Chrome: Wait for networkidle2
Chrome-->>API: Screenshot buffer
API->>Cache: Store screenshot
API->>API: Actor.charge($0.005)
API-->>App: Image binary (~2.1s)
end

API Endpoints

GET /screenshot โ€” Capture webpage

GET /screenshot?url=https://github.com&width=1920&height=1080&format=png&fullPage=true
ParameterTypeDefaultRangeDescription
urlstringrequiredโ€”URL to capture
widthnumber1280320-3840Viewport width in pixels
heightnumber720200-2160Viewport height in pixels
formatstringpngpng, jpeg, webpImage format
fullPagebooleanfalseโ€”Capture full scrollable page
qualitynumber801-100Compression (jpeg/webp only)
delaynumber00-10000Wait ms before capture

GET /pdf โ€” Generate PDF

GET /pdf?url=https://github.com&format=A4&landscape=false
ParameterTypeDefaultOptionsDescription
urlstringrequiredโ€”URL to convert
formatstringA4A4, Letter, LegalPaper size
landscapebooleanfalseโ€”Landscape orientation
printBackgroundbooleantrueโ€”Include backgrounds

POST /batch โ€” Batch screenshots

POST /batch
{
"urls":[
"https://google.com",
"https://github.com",
"https://apple.com"
],
"width":1280,
"height":720,
"format":"jpeg"
}

Output Formats

Binary (Default)

Returns raw bytes with headers:

Content-Type:image/png (or image/jpeg, image/webp, application/pdf)
Content-Length:15856
X-Latency-Ms:2172
X-From-Cache:false

Base64 JSON

Send header Accept: application/json to get:

{
"base64":"iVBORw0KGgoAAAANSUhEUgAABQ...",
"mimeType":"image/png",
"size":15856,
"latencyMs":2172,
"fromCache":false,
"url":"https://github.com"
}

Batch Response

{
"count":3,
"succeeded":3,
"failed":0,
"latencyMs":4521,
"results":[
{"url":"https://google.com","base64":"...","mimeType":"image/jpeg","size":12340},
{"url":"https://github.com","base64":"...","mimeType":"image/jpeg","size":45678},
{"url":"https://apple.com","base64":"...","mimeType":"image/jpeg","size":23456}
]
}

Use Case Workflows

Visual QA Testing Pipeline

flowchart LR
DEPLOY["New Deployment"] --> URLS["Page URL List"]
URLS --> BATCH["Screenshot API<br/>POST /batch"]
BATCH --> COMPARE["Visual Diff<br/>Engine"]
COMPARE --> PASS["All Match?"]
PASS -->|Yes| OK["Deploy to Prod"]
PASS -->|No| ALERT["Alert QA Team<br/>+ Diff Report"]
style BATCH fill:#10b981,color:#fff
style OK fill:#3b82f6,color:#fff
style ALERT fill:#ef4444,color:#fff

Social Media Preview Generator

flowchart LR
BLOG["New Blog Post<br/>Published"] --> SCREEN["Screenshot API<br/>GET /screenshot"]
SCREEN --> THUMB["1200x630<br/>OG Image"]
THUMB --> TWITTER["Twitter Card"]
THUMB --> LINKEDIN["LinkedIn Preview"]
THUMB --> FACEBOOK["Facebook Share"]
style SCREEN fill:#10b981,color:#fff

Competitive Price Monitoring

flowchart LR
SCHEDULE["Daily Cron Job"] --> URLS["Competitor<br/>Product Pages"]
URLS --> SCREEN["Screenshot API<br/>POST /batch"]
SCREEN --> ARCHIVE["Screenshot<br/>Archive"]
ARCHIVE --> COMPARE["Price Change<br/>Detection"]
COMPARE --> ALERT["Slack Alert:<br/>Price Changed!"]
style SCREEN fill:#10b981,color:#fff
style ALERT fill:#f59e0b,color:#fff

PDF Report Generation

flowchart LR
DASH["Web Dashboard<br/>URL"] --> PDF["Screenshot API<br/>GET /pdf"]
PDF --> EMAIL["Email PDF<br/>to Stakeholders"]
PDF --> DRIVE["Save to<br/>Google Drive"]
PDF --> ARCHIVE["Monthly<br/>Report Archive"]
style PDF fill:#10b981,color:#fff

Pricing

EventPriceCost per 100Cost per 1,000
Screenshot$0.005$0.50$5.00
PDF$0.008$0.80$8.00

Cost Comparison

SolutionPer ScreenshotMonthly (1K/day)
This Actor$0.005$150
ScreenshotAPI.net$0.01$300
Urlbox$0.02$600
Custom Puppeteer server$50/mo + maintenance$50+
Browserless.io$0.008$240

Technical Details

flowchart TB
subgraph "Actor Lifecycle"
INIT["Actor.init()"] --> LAUNCH["Launch Puppeteer<br/>(pre-warmed)"]
LAUNCH --> LISTEN["HTTP Server<br/>on STANDBY_PORT"]
LISTEN --> READY["Ready for<br/>Requests"]
end
subgraph "Per Request"
READY --> PAGE["Create New Page"]
PAGE --> VIEWPORT["Set Viewport"]
VIEWPORT --> NAV["Navigate to URL<br/>(networkidle2, 25s timeout)"]
NAV --> DELAY["Optional Delay"]
DELAY --> CAPTURE["Screenshot or PDF"]
CAPTURE --> CLOSE["Close Page"]
CLOSE --> READY
end
style LAUNCH fill:#10b981,color:#fff
style CAPTURE fill:#3b82f6,color:#fff
  • Browser: Chromium via Puppeteer, pre-launched at startup
  • Concurrency: 3 parallel captures per batch
  • Cache: In-memory LRU, 100 entries, 10-minute TTL
  • Timeout: 25 seconds per page navigation
  • Base Image: apify/actor-node-puppeteer-chrome:22-24.11.1

Integrations

PlatformIntegration Method
ZapierWebhook -> GET /screenshot
Make (Integromat)HTTP module
n8nHTTP Request node
GitHub Actionscurl in CI/CD pipeline
Selenium/PlaywrightScreenshot service replacement
Apify OrchestratorDirect Standby URL call

FAQ

Q: What browser is used? A: Chromium via Puppeteer, pre-warmed at actor startup for instant response.

Q: Can it capture login-protected pages? A: Current version captures public pages only. Authentication support coming soon.

Q: Maximum resolution? A: 3840x2160 (4K Ultra HD). Default: 1280x720 (HD).

Q: How does the cache work? A: Screenshots cached in-memory for 10 minutes. Same URL + same parameters = instant cached response at no additional cost.

Q: Can it handle SPAs / JavaScript-heavy pages? A: Yes! Puppeteer renders JavaScript completely before capture. Uses networkidle2 to wait for all resources.

Q: What's the maximum batch size? A: 20 URLs per batch request. Processed with bounded concurrency (3 at a time).


Related Actors


Built by George Kioko | 6,196+ data extraction jobs | 35+ production APIs | Sub-3s delivery guaranteed

You might also like

๐Ÿ”ฅ Website Screenshot Generator

extractmaster01/website-screenshot-generator

[๐Ÿฅ‡ high-quality ๐Ÿ†] Website Screenshot generator for full-page, viewport, and element screenshots. Capture websites as PNG, JPEG, WebP, or PDF with mobile emulation, metadata extraction, and batch processing.

๐Ÿ‘ User avatar

extractmaster01

2

Multi-Resolution Screenshot

junipr/multi-resolution-screenshot

Capture screenshots at multiple viewports in one run. Default: mobile, tablet, desktop. PNG/JPEG/WebP output, full-page capture, device emulation. Configurable wait for dynamic content. Ideal for responsive QA.

Screenshot Saver

codingfrontend/screenshot-saver

Capture screenshots of websites and save to cloud storage. Supports multiple URLs, full page capture, custom viewports, and various output destinations.

๐Ÿ‘ User avatar

codingfrontend

12

Ultimate Website Screenshot / PDF / Video

crawlerbros/ultimate-screenshot

Capture JPEG/PNG screenshots, PDFs, GIFs and MP4s of any website. 12+ device presets, full-page, custom viewport, scroll-to-bottom, cookie injection, proxy support.

15

Website Screenshot API โ€” Full-Page, Element & Device Capture

cheapapi/website-screenshot-api

Website Screenshot API: capture any URL as PNG, JPEG or WebP (PDF too) โ€” true full-page, element & region capture, 13 device profiles, dark mode, retina, ad/cookie-banner blocking, stealth, auth & geo. Self-scaling and SSRF-safe. Standby HTTP + batch.

Website Screenshot Generator

parseforge/screenshot-url

Capture pixel-perfect website screenshots in seconds! Generate full-page or viewport PNG and JPEG shots of any URL with custom viewport sizes, wait times, and device modes. Includes page title, description, OG image, and metadata. Perfect for audits, monitoring, and visual QA. Start capturing today!

Website Screenshot Capture

allscreenshots/website-screenshot-capture

30+ device presets, full-page capture, dark mode, cookie banner blocking and batch processing for pixel-perfect website screenshots. Supports iPhone, iPad, Android, Desktop, and up to 100 URLs per run.

๐Ÿ‘ User avatar

Allscreenshots

13

Related articles

How to take screenshots and generate PDFs with Puppeteer
Read more