One API call. Pixel-perfect results. Built for developers who ship fast.
curl "https://api.getscreenshot.dev/v1/screenshot?url=https://example.com" \
-H "X-API-Key: YOUR_KEY" \
-o screenshot.png
Full-featured screenshot and PDF API. No hidden limits, no gotchas.
PNG, JPEG, or WebP. Full-page or viewport. Custom dimensions, device emulation, dark mode support.
Included in all plans. A4, Letter, landscape, custom margins. Perfect for invoices, reports, and archiving.
Average render under 3 seconds. Smart caching returns instant results for repeated requests.
Target any CSS selector. Capture just a chart, a tweet, a product card — not the whole page.
Emulate dark color scheme with a single parameter. Perfect for generating themed previews.
Built on Playwright with isolated browser contexts. Your requests never interfere with each other.
24-hour cache by default. Customize TTL or bypass with fresh=true. Save credits, get faster responses.
Track your usage in real time. Daily and monthly breakdowns. Know exactly where you stand.
All features on every plan. No per-feature upsells. Just pick your volume.
Already subscribed? Manage your billing →
Two endpoints. That's it. Screenshots and PDFs in seconds.
/v1/screenshot
Capture a screenshot of any URL.
url requiredwidthheightfullPageformatqualitydelayselectordarkModedeviceScalecachefreshuserAgent/v1/pdf
Generate a PDF from any URL.
url requiredformatlandscapeprintBackgroundmarginscale# Take a screenshot
curl "https://api.getscreenshot.dev/v1/screenshot?url=https://github.com&width=1280&format=png" \
-H "X-API-Key: YOUR_API_KEY" \
-o screenshot.png
# Full-page screenshot in dark mode
curl "https://api.getscreenshot.dev/v1/screenshot?url=https://example.com&fullPage=true&darkMode=true" \
-H "X-API-Key: YOUR_API_KEY" \
-o dark-fullpage.png
# Generate a PDF
curl "https://api.getscreenshot.dev/v1/pdf?url=https://example.com&format=A4&landscape=true" \
-H "X-API-Key: YOUR_API_KEY" \
-o document.pdf
import requests
API_KEY = "YOUR_API_KEY"
BASE_URL = "https://api.getscreenshot.dev"
# Screenshot
response = requests.get(f"{BASE_URL}/v1/screenshot", params={
"url": "https://github.com",
"width": 1280,
"format": "png",
"fullPage": True,
}, headers={"X-API-Key": API_KEY})
with open("screenshot.png", "wb") as f:
f.write(response.content)
# PDF
response = requests.get(f"{BASE_URL}/v1/pdf", params={
"url": "https://example.com",
"format": "A4",
}, headers={"X-API-Key": API_KEY})
with open("document.pdf", "wb") as f:
f.write(response.content)
# Check usage
usage = requests.get(f"{BASE_URL}/v1/usage",
headers={"X-API-Key": API_KEY}).json()
print(f"Used: {usage['monthly']['used']}/{usage['monthly']['limit']}")
const API_KEY = "YOUR_API_KEY";
const BASE = "https://api.getscreenshot.dev";
// Screenshot
const screenshot = await fetch(
`${BASE}/v1/screenshot?url=https://github.com&width=1280&format=png`,
{ headers: { "X-API-Key": API_KEY } }
);
const fs = await import("fs");
fs.writeFileSync("screenshot.png", Buffer.from(await screenshot.arrayBuffer()));
// PDF via POST (JSON body)
const pdf = await fetch(`${BASE}/v1/pdf`, {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
url: "https://example.com",
format: "A4",
landscape: true,
}),
});
fs.writeFileSync("document.pdf", Buffer.from(await pdf.arrayBuffer()));
// Usage
const usage = await fetch(`${BASE}/v1/usage`, {
headers: { "X-API-Key": API_KEY },
}).then(r => r.json());
console.log(`Used: ${usage.monthly.used}/${usage.monthly.limit}`);
<?php
$apiKey = "YOUR_API_KEY";
$baseUrl = "https://api.getscreenshot.dev";
// Screenshot
$params = http_build_query([
'url' => 'https://github.com',
'width' => 1280,
'format' => 'png',
]);
$ch = curl_init("$baseUrl/v1/screenshot?$params");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["X-API-Key: $apiKey"]);
$image = curl_exec($ch);
curl_close($ch);
file_put_contents('screenshot.png', $image);
// PDF
$ch = curl_init("$baseUrl/v1/pdf");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_POSTFIELDS => json_encode([
'url' => 'https://example.com',
'format' => 'A4',
]),
CURLOPT_HTTPHEADER => [
"X-API-Key: $apiKey",
"Content-Type: application/json",
],
]);
$pdf = curl_exec($ch);
curl_close($ch);
file_put_contents('document.pdf', $pdf);
?>
X-Cache-HitX-Render-TimeX-Credits-RemainingPass your API key via header or query parameter:
# Via header (recommended)
curl -H "X-API-Key: YOUR_API_KEY" "https://api.getscreenshot.dev/v1/screenshot?url=..."
# Via query parameter
curl "https://api.getscreenshot.dev/v1/screenshot?url=...&api_key=YOUR_API_KEY"
Enter a URL below. Uses the demo key (10 requests/day).
Your screenshot will appear here
Get your free API key in 30 seconds. No credit card. 500 screenshots/month free forever.
Or use the demo key demo to start testing immediately.