S shotapi

ShotAPI docs

One endpoint. GET or POST. PNG/JPEG/WebP out.

GET /api/v1/screenshot

Pass query params:

POST /api/v1/screenshot

JSON body with the same fields:

{
  "url": "https://example.com",
  "fullPage": true,
  "format": "webp",
  "viewport": { "width": 1280, "height": 800 },
  "waitUntil": "networkidle0"
}

Response

Image bytes streamed back with the right content-type. Errors return JSON:

{"error":"Browser Rendering failed: 502","detail":"..."}

Limits (free tier)

Library snippets

Node.js

const res = await fetch("https://shotapi.coldsmith.dev/api/v1/screenshot?url=https://example.com&format=webp");
const buf = await res.arrayBuffer();
fs.writeFileSync("page.webp", Buffer.from(buf));

Python

import requests
r = requests.get("https://shotapi.coldsmith.dev/api/v1/screenshot",
                 params={"url": "https://example.com", "full": "1"})
open("page.png", "wb").write(r.content)