GUIDE · UPDATED OCT 2026

Screenshot API: turn any URL into an image

A screenshot API is a managed headless browser you call over HTTP. Instead of running Puppeteer or Playwright yourself — managing browser pools, memory leaks, and scaling — you send a URL and get back a PNG.

What people use it for

The one-request version

curl "https://shotsapi.com/v1/screenshot?url=https://example.com&width=1280" \
  -H "Authorization: Bearer $SHOTS_KEY" \
  --output screenshot.png

That's it. The API loads the page in a real browser, waits for it to settle, and returns a PNG.

Options that matter

ParameterWhat it doesExample
urlPage to capture (required)?url=https://example.com
widthViewport width in px&width=390 (mobile view)
full_pageCapture the whole scrollable page&full_page=true
delayWait ms before capturing (for animations)&delay=2000

Node.js example

const res = await fetch(
  "https://shotsapi.com/v1/screenshot?url=" + encodeURIComponent("https://example.com"),
  { headers: { Authorization: `Bearer ${process.env.SHOTS_KEY}` } }
);
if (!res.ok) throw new Error("screenshot failed: " + res.status);
await Bun.write("screenshot.png", res); // or fs.writeFile with arrayBuffer()

Python example

import os, requests

r = requests.get(
    "https://shotsapi.com/v1/screenshot",
    params={"url": "https://example.com", "width": 1280},
    headers={"Authorization": f"Bearer {os.environ['SHOTS_KEY']}"},
    timeout=60,
)
r.raise_for_status()
open("screenshot.png", "wb").write(r.content)

DIY vs API: the real tradeoff

Running your own Playwright works fine at 10 screenshots a day. At 10,000 a day you're debugging browser memory leaks, zombie Chromium processes, proxy rotation, and sites that detect headless browsers. The API exists so you never think about any of that — one endpoint, predictable latency, no infrastructure.

Try it free

Shots is free while in beta. The live demo on the homepage captures real screenshots with no signup — or use the free screenshot tool for one-off captures.

Ship screenshots today, not next sprint.

Free during beta · docs with curl, Node & Python examples.

Read the quickstart Shots vs Microlink