Screenshot API vs Cloud Puppeteer: Cost and Performance Comparison
Published March 14, 2026 -- 11 min read
You need website screenshots at scale. The question is: should you use a managed Screenshot API, or run Puppeteer yourself in the cloud? This guide provides a honest comparison with real numbers.
The Two Approaches
Option A: Managed Screenshot API
Services like ScreenshotAPI provide a simple REST endpoint. Send a URL, get back an image. No infrastructure to manage, no browser updates, no scaling headaches. You pay per screenshot.
curl "https://screenshotapi-api-production.up.railway.app/v1/screenshot\ ?url=https://example.com&format=png&device=iphone15" \ -H "Authorization: Bearer YOUR_API_KEY" \ -o screenshot.png
Option B: Self-Hosted Puppeteer
Run headless Chrome on your own infrastructure. Full control over the browser, but you manage servers, Docker containers, browser updates, and scaling.
// Your own Puppeteer server
const browser = await puppeteer.launch({ headless: 'new' });
const page = await browser.newPage();
await page.setViewport({ width: 1280, height: 800 });
await page.goto('https://example.com', { waitUntil: 'networkidle0' });
const screenshot = await page.screenshot({ type: 'png' });
await page.close();Cost Comparison (Real Numbers)
| Factor | Screenshot API | Self-Hosted Puppeteer |
|---|---|---|
| 1,000 screenshots/mo | $0 (free tier) | $5-15/mo (small VPS) |
| 10,000 screenshots/mo | $29/mo (Pro) | $20-50/mo (2GB RAM VPS) |
| 100,000 screenshots/mo | $99/mo (Business) | $100-300/mo (dedicated) |
| Setup time | 5 minutes | 2-8 hours |
| Maintenance time/mo | 0 hours | 2-5 hours |
| Dev time (your cost) | None | $200-500/mo equivalent |
At first glance, self-hosting looks cheaper. But factor in developer time for setup, maintenance, Chrome updates, Docker debugging, and scaling -- and the API wins on total cost for most teams.
Performance Comparison
Latency
A managed API like ScreenshotAPI typically delivers screenshots in 3-8 seconds. Self-hosted Puppeteer can be faster (2-5 seconds) if you keep browser instances warm, but cold starts on serverless platforms (Lambda, Cloud Run) add 5-15 seconds.
Reliability
Puppeteer crashes. Browsers leak memory. Pages hang indefinitely. A managed API handles all of this with browser pool management, crash recovery, and automatic retries. Self-hosting means you build this infrastructure yourself.
Scaling
Each Chrome instance uses 200-500MB of RAM. Scaling to handle concurrent requests requires load balancing, browser pools, and queue management. APIs handle this transparently.
Common Cloud Puppeteer Setups
AWS Lambda + Puppeteer
Using chrome-aws-lambda, you can run Puppeteer on Lambda. But the 250MB package size limit is tight, cold starts are painful (8-15 seconds), and the 15-minute timeout limits complex captures. Memory-intensive at $0.0000166667/GB-second.
Google Cloud Run
Better than Lambda for Puppeteer since you get a full Docker container. But auto-scaling introduces cold starts, and you pay for idle time between requests.
Railway / Render with Docker
The best self-hosting experience. Pre-built Docker images with Chrome, always-on instances, easy deployment. This is what ScreenshotAPI uses internally.
When to Use Each Approach
Use a Screenshot API when:
- Screenshots are a feature, not your core product
- You need reliability without building infrastructure
- Your volume is under 100K screenshots/month
- Developer time is more expensive than API costs
- You need device presets, ad blocking, CSS injection out of the box
Self-host Puppeteer when:
- Screenshots are your core product (you ARE a screenshot API)
- You need custom browser extensions or profiles
- You process 500K+ screenshots/month
- You need to capture sites behind authentication (login required)
- Latency under 2 seconds is critical
Feature Comparison
| Feature | ScreenshotAPI | DIY Puppeteer |
|---|---|---|
| Device presets (iPhone, Galaxy, etc.) | Built-in | Build yourself |
| Ad/cookie blocking | One parameter | uBlock integration |
| CSS/JS injection | Built-in | Native |
| Thumbnail resize | Built-in | Add Sharp |
| Async + webhooks | Built-in | Build queue |
| PDF generation | Built-in | Native |
| SSRF protection | Built-in | Build yourself |
| Browser crash recovery | Automatic | Build yourself |
The Verdict
For 90% of teams, a managed Screenshot API is the right choice. The cost difference is minimal once you factor in developer time, and the reliability advantage is significant. Self-hosting only makes sense at very high volumes or when you need capabilities that APIs do not provide.
Try ScreenshotAPI free
100 screenshots/month on the free tier. No credit card required. Device presets, ad blocking, CSS injection, and async webhooks included.