Screenshot API for developers
POST a URL, get an image. Capture any web page as a PNG, JPEG, or WebP with a single REST call — full-page, cached, and idempotent. Built for developers who don't want to babysit a headless browser.
One request, one screenshot
Authenticate with a Bearer API key and send a single POST request. No SDK required.
macOS / Linux
curl -X POST https://api.screenshotapis.app/screenshot \
-H 'Authorization: Bearer shot_yourkey_here' \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.com"}' \
-o screenshot.pngWindows (cmd.exe) — single line
curl -X POST https://api.screenshotapis.app/screenshot -H "Authorization: Bearer shot_yourkey_here" -H "Content-Type: application/json" -d "{\"url\":\"https://example.com\"}" -o screenshot.pngCustom viewport (width & height are nested under viewport)
curl -X POST https://api.screenshotapis.app/screenshot \
-H 'Authorization: Bearer shot_yourkey_here' \
-H 'Content-Type: application/json' \
-d '{"url":"https://example.com","full_page":true,"viewport":{"width":1920,"height":1080}}' \
-o screenshot.pngEverything you need to render the web
PNG, JPEG & WebP
Return raw image bytes or a hosted URL. Pick the format and quality you need.
Full-page capture
Grab the entire scrollable page (up to 65,536 px tall), or a fixed viewport with custom width, height, and device pixel ratio.
Built-in caching
Identical requests are served from cache (configurable TTL). Cache hits are never billed.
Idempotent retries
Send an Idempotency-Key and retry safely — replays return the original result for 24 hours.
Ad & cookie blocking
Strip ads and clutter so screenshots come out clean and consistent.
SSRF-safe by default
Private IPs, loopback, and cloud-metadata URLs are blocked, so it's safe on user-supplied URLs.
Built for
- Open Graph (og:image) generation
- Link preview cards
- Status pages & uptime monitoring
- Visual regression & monitoring
- Email and marketing previews
- Archiving and compliance snapshots
Simple, predictable pricing
Free
Free
100 renders / month
Starter
$9/mo
2,000 renders / month
Pro
$29/mo
10,000 renders / month
Failed renders and cache hits don't count toward your quota.
Frequently asked questions
Is there a free screenshot API?
Yes. The Free plan includes 100 billable renders per month with no credit card required. Paid plans add more renders and higher rate limits.
What image formats does the screenshot API support?
PNG, JPEG, and WebP. You can also request full-page captures, set a custom viewport and device pixel ratio, and return either raw image bytes or a hosted URL.
Can it capture full-page screenshots?
Yes. Set full_page to true to capture the entire scrollable page, up to 65,536 pixels tall.
How is usage billed?
A billable render is a successful (2xx) render that was not served from cache and was not an idempotency replay. Failed renders and cache hits never count toward your quota.
How do I integrate it?
Send a single POST request to the /screenshot endpoint with an Authorization: Bearer API key. It works from curl, Python, Node, or any HTTP client — no headless browser to run yourself.
Start capturing screenshots today
Create a free account and get 100 renders a month — no credit card required.
Get a free API key