Shotkiln Get a free key
Screenshot API · HTML to PDF · OG images

Screenshot any web page with one API call

Send a URL, get the image or PDF back in seconds. Real browser rendering, nothing for you to host.

curl "https://shotkiln.com/v1/screenshot?url=https://example.com" -o shot.png
  • Runs on Cloudflare's global network
  • PNG, JPEG, WebP, PDF and OG images
  • MCP server for AI agents
  • OpenAPI 3.1 spec

Example output: the Wikipedia article on screenshots at 1280 by 800
Example output, 1280 × 800 WebP. Press Render to run it live.
~2.5 stypical screenshot
$0for cache hits and failed renders
$4.50per 1,000 renders on Starter
16,384 pxtallest full-page capture

Quick answers

What is a screenshot API?
A screenshot API loads a URL in a real browser and returns an image of the page in the HTTP response. Shotkiln is a screenshot API that also returns PDFs and Open Graph images.
How much does Shotkiln cost?
Free for 100 watermarked renders a month, no card needed. Paid plans are $9 for 2,000, $19 for 10,000 and $49 for 50,000, with no overage fees.
How long does a screenshot take?
A typical screenshot comes back in about 2.5 seconds. Repeat requests come straight from cache, often in under half a second.
Which output formats are supported?
Screenshots come back as PNG, JPEG or WebP, up to 3,840 px wide and 16,384 px tall for full pages. PDFs come in six paper sizes, and OG images are 1200 × 630 PNGs.
Do I need an API key?
Not to try it: without a key you get 10 watermarked renders a day. A free key takes one click and gives 100 a month; paid keys remove the watermark.
Should I use a screenshot API or run Puppeteer myself?
Run Puppeteer yourself for low-volume renders of your own site. Use a screenshot API when traffic is spiky or users submit the URLs: you get SSRF protection without running a browser fleet.
Endpoints

Three endpoints. One request each.

Call any endpoint with GET or POST and the response is the file. No job IDs to poll, no storage bucket to set up.

/v1/screenshot

Website screenshot API

Viewport or full-page captures up to 16,384 px tall, in retina and dark mode, with a delay for pages that animate in.

url
public http(s) URL
width, height
320–3840 px, default 1280 × 800
full_page
capture the whole scroll height
format
png, jpeg or webp, with quality

Screenshot API details

curlimage/webp
curl "https://shotkiln.com/v1/screenshot?url=https://example.com&full_page=true&format=webp" \
  -H "x-api-key: $SHOTKILN_KEY" -o page.webp
/v1/pdf

HTML to PDF API

Print any URL, or up to 1 MB of your own HTML, to PDF. Invoices and reports come out at your paper size and margins, portrait or landscape.

url | html
one of the two
format
A3, A4, A5, Letter, Legal, Tabloid
margin
px, mm, cm or in

HTML to PDF API details

nodeapplication/pdf
const res = await fetch("https://shotkiln.com/v1/pdf", {
  method: "POST",
  headers: { "x-api-key": process.env.SHOTKILN_KEY, "content-type": "application/json" },
  body: JSON.stringify({ html: invoiceHtml, format: "A4", margin: "15mm" }),
});
await fs.writeFile("invoice.pdf", Buffer.from(await res.arrayBuffer()));
/v1/og

OG image API

1200 × 630 social cards from a title and one of three templates. Generate them in your build step or the moment a page goes live.

title, subtitle
up to 200 and 300 characters
template
default, split, gradient
theme, accent
light or dark, any hex colour

OG image API details

shellimage/png
curl "https://shotkiln.com/v1/og?title=Release%20notes%202.4&site=acme.dev&template=split" \
  -H "x-api-key: $SHOTKILN_KEY" -o og.png
Safety

Safe to point at user-submitted URLs

Shotkiln checks every address the browser touches, redirects and subrequests included, before it loads.

  • Private and internal addresses. Loopback, RFC 1918, link-local, carrier-grade NAT, IPv6 ULA and cloud metadata (169.254.169.254), refused after DNS resolution.
  • Other schemes and ports. http and https only, on ports 80, 443, 8080 and 8443.
  • Known malicious hosts. A static denylist plus the abuse.ch URLhaus feed, refreshed hourly.
  • Runaway pages. Capped at 25 MB of resources, 300 requests and a 15–30 s time budget per render, by plan.
  • Identified traffic. Every render sends ShotkilnBot/1.0 in its user agent, linking to /bot.
Compare

Screenshot API pricing, side by side

The cheapest published plan for each volume, before overage. Shotkiln matches or beats every one. For ad blocking, proxies or storage uploads, the alternatives page shows who offers them.

Renders a month2,00010,00050,000
Shotkiln$9 Starter$19 Pro$49 Scale
ScreenshotOne$17 Basic$79 Growth$259 Scale
Urlbox$19 Lo-Fi$99 Ultraabove listed tiers
ApiFlash$35 Medium$35 Medium$180 Large
CaptureAPI$9 Starter$29 Pro$79 Business

Urlbox Lo-Fi ($19) renders third-party sites as thumbnails only; full captures of other sites start on Hi-Fi ($49 for 5,000).

List prices from each vendor's pricing page.

Agents

A screenshot tool for AI agents

Add the remote MCP server at /mcp to Claude, Cursor or any MCP client, and your agent gets take_screenshot, render_pdf and generate_og_image. Agents that speak HTTP can read the OpenAPI 3.1 spec or llms.txt. Setup: MCP screenshot server.

mcp.json
{
  "mcpServers": {
    "shotkiln": {
      "url": "https://shotkiln.com/mcp",
      "headers": { "x-api-key": "YOUR_KEY" }
    }
  }
}
Start

Get your free API key

Takes one click. No email or card. The free plan includes 100 watermarked renders a month to build with; paid plans remove the watermark when you ship.

From a terminal: curl -X POST https://shotkiln.com/v1/keys