Website Screenshot API
Capture full-page website screenshots via REST API with mobile emulation, custom viewports, and proxy rotation.
The Agenty Screenshot API captures full-page or viewport screenshots of any URL using a real headless Chrome browser. It supports mobile device emulation, custom viewports, proxy rotation, cookie injection, and wait-for-element rules so you get pixel-perfect images even on JavaScript-heavy pages.
By default the API returns the raw image buffer. Pass responseType: "url" to upload the screenshot to our CDN and receive a hosted URL instead — ideal for social cards, dashboards, and Open Graph images.
Features
- Full-page captureStitch the entire scrollable page into one image.
- Mobile emulation15+ presets: iPhone, iPad, Pixel, Galaxy, and more.
- Custom viewportsAny width, height, and device pixel ratio.
- PNG, JPEG, WebPPick the format that fits your use case.
- Proxy & geolocationCapture how a page looks from any country.
- Cookies & headersInject auth cookies and custom headers.
- Wait rulesWait for selector, network idle, or fixed delay.
- URL or bufferReturn image buffer or hosted CDN URL via responseType.
Use cases
- Generate Open Graph and social preview images on demand
- Visual regression testing across breakpoints and devices
- Archive landing pages for compliance and audit trails
- Monitor competitor pricing and marketing pages
- Build visual reports for SEO and uptime dashboards
API examples
curl -X GET "https://api.agenty.ai/v1/screenshot?url=https://example.com" \
-H "Authorization: Bearer YOUR_API_KEY" \
--output screenshot.pngcurl -X POST https://api.agenty.ai/v1/screenshot \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"fullPage": true,
"device": "iPhone 14",
"format": "png",
"responseType": "url"
}'// Returns a hosted CDN URL instead of the raw buffer
const res = await fetch('https://api.agenty.ai/v1/screenshot', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
url: 'https://example.com',
fullPage: true,
responseType: 'url', // get a link instead of the buffer
}),
});
const { url } = await res.json();
console.log('Screenshot URL:', url);import requests
res = requests.post(
"https://api.agenty.ai/v1/screenshot",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"url": "https://example.com", "fullPage": True, "responseType": "url"},
)
print(res.json()["url"])How Agenty compares
| Feature | Agenty | Urlbox | ScreenshotOne | ApiFlash |
|---|---|---|---|---|
| Full-page capture | Yes | Yes | Yes | Yes |
| Mobile device emulation | Yes (15+ devices) | Yes | Yes | Limited |
| Proxy / geolocation | Yes (global) | Yes | Yes | No |
| Hosted URL response | Yes | Yes | Yes | Limited |
| Free tier | Yes | Yes | Yes | Yes |
Frequently asked questions
What is the Website Screenshot API?
The Agenty Screenshot API is a REST service that captures full-page or viewport screenshots of any URL. It uses headless Chrome to render pages exactly as a real user would see them, supporting mobile emulation, custom viewports, and multiple output formats.
How do I get a URL instead of the image buffer?
Pass responseType: "url" in your request body. The API uploads the capture to our CDN and returns a hosted link in JSON, which you can embed in dashboards, emails, or Open Graph tags without downloading the image yourself.
What output formats are supported?
PNG, JPEG, and WebP. Specify the format via the format parameter. PNG is best for crisp text and UI; JPEG and WebP keep file sizes small for photo-heavy pages.
Can I capture mobile screenshots?
Yes. Pass a device name like "iPhone 14", "iPad Pro", or "Pixel 7", or specify a custom viewport width, height, and device pixel ratio.
Can I use proxies for geo-targeted screenshots?
Yes. Pass the proxyCountry parameter to route the request through a specific country and capture how the page looks from that region.
Is there a free tier?
Yes. Every new account includes a 100 free monthly credit allowance. See our pricing page for current limits and paid plans.