Pixel-perfect webpage captures powered by Chromium. Full-page, dark mode, element selectors, WebP. No API key. No limits. No catch.
# Capture any webpage in one line
curl "https://pageshot.info/v1/screenshot?url=https://example.com" \
--output screenshot.png
Zero to screenshot in two steps. No signup. No API key. No credit cards.
Make a GET or POST request with any webpage URL and your options. No API key needed.
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://example.com" \
--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" \
--output full-dark.webp
const response = await fetch('https://pageshot.info/v1/screenshot', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://example.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',
json={
'url': 'https://example.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();
var payload = new {
url = "https://example.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.
Everything you need to know about PageShot API.
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.
Currently deployed in Azure West Europe. We plan to add US East and Asia Pacific regions for lower latency worldwide.
30 requests per minute per IP address. 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 and no API key required. Just send a URL to our API endpoint and get your screenshot back. Start capturing in under 10 seconds.
Completely free. No API key. No signup. No limits. Just screenshots.
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.