Screenshot API — Turn any URL into screenshots and PDFs

3 min read Original article ↗

Pay only for what you render.
Screenshots & PDFs from any URL.

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

One API call. Any language.

Add screenshots and PDFs to any app in minutes.

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


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
from screenshotapis import Client

client = Client("sk_live_your_key")


png = client.screenshot("https://example.com")
with open("screenshot.png", "wb") as f:
    f.write(png)


pdf = client.pdf(html="<h1>Invoice #42</h1>")
with open("invoice.pdf", "wb") as f:
    f.write(pdf)
import Client from "screenshotapis";
import fs from "fs";

const client = new Client("sk_live_your_key");


const png = await client.screenshot({ url: "https://example.com" });
fs.writeFileSync("screenshot.png", Buffer.from(png));


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)
}

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.

Pay only for what you render

1 credit = 1 render. Pick a monthly plan, or buy credits one-time and use them whenever.

Or skip the subscription.

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.