Pixel-perfect screenshots and PDFs from any URL — powered by a real Chromium browser. No setup, no browser farm.
# Capture a full-page screenshot curl "https://api.snapapi.dev/v1/screenshot?url=https://github.com&fullPage=true" \ -H "x-api-key: sk_your_key_here" \ --output screenshot.png # Generate a PDF curl "https://api.snapapi.dev/v1/pdf?url=https://example.com&format=A4" \ -H "x-api-key: sk_your_key_here" \ --output page.pdf
A focused API surface that just works.
PNG, JPEG, or WebP output. Control viewport size, full-page capture, and pre-capture delay.
A4, Letter, and more. Landscape mode, print CSS support, background printing — all handled.
Playwright-powered headless Chrome. JS execution, lazy loading, cookie banners — rendered correctly.
Simple header-based auth. Create keys instantly, revoke them any time from your dashboard.
Every request logged. Monitor your usage against your monthly limit in real time.
Fair-use limits per API key. Headers tell you exactly how many requests remain.
All endpoints use GET requests. Authenticate with your x-api-key header.
Capture a screenshot of any public URL. Returns the raw image binary by default.
| Parameter | Type | Default | Description |
|---|---|---|---|
url required | string | — | Target URL including protocol (https://...) |
format optional | string | png | png | jpeg | webp |
width optional | integer | 1280 | Viewport width in px (100 – 3840) |
height optional | integer | 720 | Viewport height in px (100 – 2160) |
fullPage optional | boolean | false | Capture full scrollable page height |
delay optional | integer | 0 | Wait after page load (ms, max 10 000) |
json optional | boolean | false | Return JSON with base64 image instead of binary |
curl "https://api.snapapi.dev/v1/screenshot?url=https://github.com&format=png&width=1440&height=900&fullPage=true" \ -H "x-api-key: sk_your_key_here" \ --output screenshot.png
| Header | Description |
|---|---|
Content-Type | image/png, image/jpeg, or image/webp |
X-Usage-Count | Requests used this month (including this one) |
X-Usage-Limit | Monthly limit for your plan |
Generate a PDF of any public URL. Returns raw PDF binary with Content-Disposition: attachment.
| Parameter | Type | Default | Description |
|---|---|---|---|
url required | string | — | Target URL including protocol (https://...) |
format optional | string | A4 | A4 | A3 | A5 | Letter | Legal | Tabloid |
landscape optional | boolean | false | Use landscape orientation |
curl "https://api.snapapi.dev/v1/pdf?url=https://example.com&format=A4&landscape=false" \ -H "x-api-key: sk_your_key_here" \ --output page.pdf
No authentication required. Returns service health status.
// 200 OK — all systems operational { "status": "ok", "checks": { "api": "ok", "database": "ok", "browser": "ok" }, "version": "1.0.0", "uptime": 3742, "timestamp": "2024-01-15T12:00:00.000Z" }
All errors return JSON with an error field and an optional hint.
| Status | Meaning | Common Cause |
|---|---|---|
400 | Bad Request | Missing or invalid query parameter |
401 | Unauthorized | Missing or invalid x-api-key |
422 | Unprocessable | URL could not be loaded by the browser |
429 | Rate Limited | Hourly or monthly quota exceeded |
500 | Server Error | Internal failure — contact support |
504 | Gateway Timeout | Page load exceeded 30 s |
// 429 — monthly limit reached { "error": "Monthly limit reached", "usage": 100, "limit": 100, "hint": "Upgrade your plan at https://snapapi.dev/pricing" }
Start free. Scale as you grow. No surprise fees.