Pixel-perfect webpage captures powered by Chromium. Full-page, dark mode, element selectors, WebP. 100 free screenshots every month, forever.
# Capture any webpage in one line
curl "https://pageshot.info/v1/screenshot?url=https://github.com" \
-H "Authorization: Bearer YOUR_API_KEY" \
--output screenshot.png
Zero to screenshot in three steps. No signup forms. No credit cards.
Generate a key instantly. Any string with the ps_live_ prefix auto-registers on first use.
Make a GET or POST request with the webpage URL and your preferred options.
Receive a pixel-perfect PNG, JPEG, or WebP image. Typically under 3 seconds.
One API. Endless possibilities. Powered by Chromium for pixel-perfect accuracy.
Capture entire pages including content below the fold. No scroll limits, up to 15,000px height.
Force dark color scheme on any website with a single parameter.
Remove ads and cookie banners for clean, professional screenshots.
Capture as any device. Custom viewport, scale factor, and user agent. From mobile to 4K.
Capture specific elements using CSS selectors. Perfect for components and widgets.
Inject custom CSS before capture. Hide elements, change styles, add branding.
Chromium-based rendering with smart wait strategies. Under 3s average capture time.
SSRF protection, rate limiting, no internal network access. Your data stays yours.
Simple REST API. If it can make HTTP requests, it can take screenshots.
# Simple screenshot
curl "https://pageshot.info/v1/screenshot?url=https://github.com" \
-H "Authorization: Bearer YOUR_API_KEY" \
--output screenshot.png
# Full page, dark mode, no ads
curl "https://pageshot.info/v1/screenshot?url=https://news.ycombinator.com\
&full_page=true&dark_mode=true&block_ads=true&format=webp" \
-H "Authorization: Bearer YOUR_API_KEY" \
--output full-dark.webp
const response = await fetch('https://pageshot.info/v1/screenshot', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://github.com',
width: 1920,
height: 1080,
full_page: true,
format: 'png'
})
});
const buffer = Buffer.from(await response.arrayBuffer());
fs.writeFileSync('screenshot.png', buffer);
import requests
response = requests.post('https://pageshot.info/v1/screenshot',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'url': 'https://github.com',
'width': 1920,
'height': 1080,
'full_page': True,
'dark_mode': True,
'format': 'png'
}
)
with open('screenshot.png', 'wb') as f:
f.write(response.content)
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer YOUR_API_KEY");
var payload = new {
url = "https://github.com",
width = 1920, height = 1080,
full_page = true, dark_mode = true
};
var response = await client.PostAsJsonAsync(
"https://pageshot.info/v1/screenshot", payload);
var bytes = await response.Content.ReadAsByteArrayAsync();
await File.WriteAllBytesAsync("screenshot.png", bytes);
Enter any public URL and watch the API capture it in real-time. No signup required.
Using shared demo key (limited). Get your own free API key for 100 screenshots/month.
Start free. Scale when ready. No credit card required.
Everything you need to know about PageShot API.
You'll receive a 429 response with your current usage. Your access resumes at the start of the next calendar month. No surprise charges, ever.
Most screenshots complete in 1-3 seconds. Complex pages with heavy JavaScript may take up to 10 seconds. You can set a custom timeout per request.
No. Screenshots are generated on-the-fly and streamed directly to you. We do not store, cache, or log your captured images.
Yes. Plan changes take effect immediately. If you upgrade mid-cycle, your new quota applies right away. Downgrades apply at the next billing cycle.
Currently deployed in Azure West Europe. We plan to add US East and Asia Pacific regions for lower latency worldwide.
Free tier: 30 requests per minute. Paid plans have higher limits. Rate limit headers are included in every response so you can track usage programmatically.
PageShot supports PNG, JPEG, and WebP output formats. You can specify the format via the format parameter in your API request. WebP offers the best compression for web use.
No signup forms required. Generate an API key with the ps_live_ prefix followed by any unique string. It auto-registers on first use. Start capturing in under 30 seconds.
100 free screenshots per month. No credit card. No signup forms. Just start building.
PageShot works beautifully alongside our other developer APIs.
Extract rich metadata, Open Graph tags, and structured data from any URL.
AI-powered address parsing, validation, and geolocation intelligence.
Screenshot any webpage with a single API call. You are here.