Buy credits one-time and use them whenever — credits never expire. Great for agencies, side projects, and one-off batches.
One API for screenshots and PDFs. Buy credits once, use them whenever — credits never expire. Or pick a monthly plan. No subscription required.
100 free renders / month · no credit card · cancel anytime
Add screenshots and PDFs to any app in minutes.
# Screenshot a URL → PNG curl -X POST https://screenshotapis.org/v1/screenshot \ -H "X-Api-Key: sk_live_your_key" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com", "format": "png"}' \ --output screenshot.png # Render HTML → PDF curl -X POST https://screenshotapis.org/v1/pdf \ -H "X-Api-Key: sk_live_your_key" \ -H "Content-Type: application/json" \ -d '{"html": "<h1>Hello</h1>", "format": "A4"}' \ --output document.pdf
# pip install screenshotapis from screenshotapis import Client client = Client("sk_live_your_key") # Screenshot png = client.screenshot("https://example.com") with open("screenshot.png", "wb") as f: f.write(png) # PDF pdf = client.pdf(html="<h1>Invoice #42</h1>") with open("invoice.pdf", "wb") as f: f.write(pdf)
// npm install screenshotapis import Client from "screenshotapis"; import fs from "fs"; const client = new Client("sk_live_your_key"); // Screenshot const png = await client.screenshot({ url: "https://example.com" }); fs.writeFileSync("screenshot.png", Buffer.from(png)); // PDF const pdf = await client.pdf({ html: "<h1>Invoice #42</h1>" }); fs.writeFileSync("invoice.pdf", Buffer.from(pdf));
package main import ( "bytes"; "io"; "net/http"; "os" ) func main() { body := []byte(`{"url":"https://example.com","format":"png"}`) req, _ := http.NewRequest("POST", "https://screenshotapis.org/v1/screenshot", bytes.NewReader(body)) req.Header.Set("X-Api-Key", "sk_live_your_key") req.Header.Set("Content-Type", "application/json") resp, _ := http.DefaultClient.Do(req) data, _ := io.ReadAll(resp.Body) os.WriteFile("screenshot.png", data, 0644) }
Production-ready from day one.
PNG, JPEG, or WebP. Full-page or viewport. Retina-quality. Perfect for link thumbnails and visual regression.
A4, Letter, Legal, Tabloid. Custom margins and headers. Great for invoices and report generation.
Pass a CSS selector to capture just one element. Render dynamic social cards from your own HTML.
Render any public URL or inject your own HTML directly — no hosting required.
Block ads, trackers, and cookie banners for clean captures. One flag, 40+ ad networks blocked.
Inject custom CSS or JavaScript before capture. Hide elements, change styles, run setup code.
Powered by Playwright + Chromium. Sub-second renders. Custom wait strategies and user agents.
Webhooks are not available on this deployment yet. Synchronous screenshots and PDFs are available now.
Click any card to render it in the demo above — live, with our API.
1 credit = 1 render. Pick a monthly plan, or buy credits one-time and use them whenever.
No subscription. Purchased credits never expire.
Start free, then buy creditsNo subscription. Purchased credits never expire.
Start free, then buy creditsBuy credits one-time and use them whenever — credits never expire. Great for agencies, side projects, and one-off batches.
Need more? Contact us for volume pricing.
Use your own HTML and data. Start with a working report template and a Python example.
Try the report workflow