Screenshot API
Pixel-perfect screenshots of any webpage
Render pages in real Chromium and get PNG, JPEG, WebP or PDF back in about a second. Full page, element capture, 18 devices, dark mode and clean output without banners.
No credit card required · 100 free credits every month
How it works
From URL to result in four steps
- 1
Send a URL
Call GET /v1/capture with the page URL and your x-api-key header.
- 2
We render it
A fresh Chromium loads the page, waits for your condition and cleans up banners and ads.
- 3
Capture
Viewport, full page, a CSS selector or a device profile — in the format you asked for.
- 4
Get the file
Receive the binary directly, a cached copy, a URL in your S3 bucket, or a webhook.
Features
Every capture option you need
PNG, JPEG, WebP & PDF
Full-page capture
CSS selector capture
18 devices
No cookie banners
Block anything
Dark mode & retina
Smart waiting
Stealth & proxies
S3 / R2 upload
Edge cache up to 30 days
Async + webhooks
Capture in a few lines
The response is the image itself, so you can stream it to disk, a CDN or a user.
import { writeFile } from "node:fs/promises";
const params = new URLSearchParams({
url: "https://example.com",
full_page: "true",
format: "webp",
remove_cookie_banners: "true",
});
const res = await fetch(`https://api.screenshotdude.com/v1/capture?${params}`, {
headers: { "x-api-key": process.env.SCREENSHOTDUDE_API_KEY },
});
if (!res.ok) throw new Error((await res.json()).error);
await writeFile("page.webp", Buffer.from(await res.arrayBuffer()));Response with s3_url=true
{
"success": true,
"data": {
"url": "https://my-bucket.s3.eu-west-1.amazonaws.com/screens/acme-home.png",
"key": "screens/acme-home.png",
"bucket": "my-bucket"
}
}Frequently asked questions
Start capturing in minutes
Create a free account and get 100 free screenshots every month. No credit card required.