Screenshot API — Turn any URL into screenshots and PDFs
"><br>">
Pay only for what you render.<br>Screenshots & PDFs from any URL.
One API for screenshots and PDFs. Buy credits once , use them<br>whenever — credits never expire. Or pick a monthly plan. No subscription required.
Start free →<br>Read the docs
100 free renders / month · no credit card · cancel anytime
Render
↑ live render of posthog.com · paste a URL above to try yours
100
Free renders/month
$0
Card required
Live
Operational status
PNG/PDF
+ JPEG · WebP
One API call. Any language.
Add screenshots and PDFs to any app in minutes.
cURL<br>Python<br>Node.js<br>Go
# Screenshot a URL → PNG<br>curl -X POST https://screenshotapis.org/v1/screenshot \<br>-H "X-Api-Key: sk_live_your_key" \<br>-H "Content-Type: application/json" \<br>-d '{"url": "https://example.com", "format": "png"}' \<br>--output screenshot.png
# Render HTML → PDF<br>curl -X POST https://screenshotapis.org/v1/pdf \<br>-H "X-Api-Key: sk_live_your_key" \<br>-H "Content-Type: application/json" \<br>-d '{"html": "Hello", "format": "A4"}' \<br>--output document.pdf
# pip install screenshotapis<br>from screenshotapis import Client
client = Client("sk_live_your_key")
# Screenshot<br>png = client.screenshot("https://example.com")<br>with open("screenshot.png", "wb") as f:<br>f.write(png)
# PDF<br>pdf = client.pdf(html="Invoice #42")<br>with open("invoice.pdf", "wb") as f:<br>f.write(pdf)
// npm install screenshotapis<br>import Client from "screenshotapis";<br>import fs from "fs";
const client = new Client("sk_live_your_key");
// Screenshot<br>const png = await client.screenshot({ url: "https://example.com" });<br>fs.writeFileSync("screenshot.png", Buffer.from(png));
// PDF<br>const pdf = await client.pdf({ html: "Invoice #42" });<br>fs.writeFileSync("invoice.pdf", Buffer.from(pdf));
package main
import (<br>"bytes"; "io"; "net/http"; "os"
func main() {<br>body := []byte(`{"url":"https://example.com","format":"png"}`)<br>req, _ := http.NewRequest("POST",<br>"https://screenshotapis.org/v1/screenshot",<br>bytes.NewReader(body))<br>req.Header.Set("X-Api-Key", "sk_live_your_key")<br>req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)<br>data, _ := io.ReadAll(resp.Body)<br>os.WriteFile("screenshot.png", data, 0644)
Everything you need to render the web
Production-ready from day one.
🖼
Screenshots
PNG, JPEG, or WebP. Full-page or viewport. Retina-quality. Perfect for link thumbnails and visual regression.
📄
PDF rendering
A4, Letter, Legal, Tabloid. Custom margins and headers. Great for invoices and report generation.
🎯
OG image generation
Pass a CSS selector to capture just one element. Render dynamic social cards from your own HTML.
🌐
URL or raw HTML
Render any public URL or inject your own HTML directly — no hosting required.
🛡
Ad & cookie blocking
Block ads, trackers, and cookie banners for clean captures. One flag, 40+ ad networks blocked.
💉
CSS & JS injection
Inject custom CSS or JavaScript before capture. Hide elements, change styles, run setup code.
Fast & reliable
Powered by Playwright + Chromium. Sub-second renders. Custom wait strategies and user agents.
🔔
Webhook callbacks
Get results async. Add a webhook_url and we POST the render result when it's ready. HMAC-signed.
Try the API on these URLs
Click any card to render it in the demo above — live, with our API.
posthog.comRun this →
vercel.comRun this →
linear.appRun this →
tailwindcss.comRun this →
github.comRun this →
raycast.comRun this →
Pay only for what you render
1 credit = 1 render. Pick a monthly plan, or buy credits one-time and use them whenever.
Free
$0
100 renders/mo
No card needed
Start free
Starter
$19/mo
2,000 renders/mo
30 req/min
Choose Starter
Growth
$49/mo
6,000 renders/mo
60 req/min
Choose Growth
Business
$149/mo
25,000 renders/mo
120 req/min
Choose Business
Scale
$299/mo
75,000 renders/mo
300 req/min
Choose Scale
Or skip the subscription.<br>Buy credits one-time and use them whenever — credits never expire. Great for agencies, side projects, and one-off batches.
Buy credits
Need more? Contact us for volume pricing.
Render your first screenshot in 30 seconds
100 free renders every month. No credit card. Cancel anytime.
Start free →