Production-ready API

Screenshot & OG Image Generation
for Developers

Capture pixel-perfect screenshots and generate Open Graph images with a single HTTP request. Powered by Chromium, no headless browser setup required.

cURL
Node.js
Python
Response
# Screenshot any URL
curl "https://getsnapapi.dev/screenshot?url=https://example.com" \
  -H "X-Api-Key: snap_your_key_here" \
  --output screenshot.png

# OG Image (1200×630)
curl "https://getsnapapi.dev/og?url=https://example.com" \
  -H "X-Api-Key: snap_your_key_here" \
  --output og.png
const fs = require('fs');

async function takeScreenshot(url) {
  const res = await fetch(
    `https://getsnapapi.dev/screenshot?url=${encodeURIComponent(url)}`,
    { headers: { 'X-Api-Key': 'snap_your_key_here' } }
  );

  if (!res.ok) throw new Error(await res.text());

  fs.writeFileSync('screenshot.png', Buffer.from(await res.arrayBuffer()));
  console.log('✓ screenshot.png saved');
}

takeScreenshot('https://github.com');
import requests

API_KEY = "snap_your_key_here"
HEADERS = {"X-Api-Key": API_KEY}

# Take a screenshot
resp = requests.get(
    "https://getsnapapi.dev/screenshot",
    params={"url": "https://example.com", "width": 1440, "full_page": "true"},
    headers=HEADERS
)
resp.raise_for_status()
with open("screenshot.png", "wb") as f:
    f.write(resp.content)

# Generate OG image
og = requests.get(
    "https://getsnapapi.dev/og",
    params={"url": "https://example.com"},
    headers=HEADERS
)
with open("og.png", "wb") as f:
    f.write(og.content)
# Successful screenshot response
HTTP/2 200
Content-Type: image/png
Content-Length: 42891
Cache-Control: public, max-age=300
X-SnapAPI-Plan: free

# Error response (quota exceeded)
HTTP/2 429
{
  "error": "quota_exceeded",
  "plan": "free",
  "limit": 100,
  "used": 100,
  "upgrade_url": "https://getsnapapi.dev/#pricing"
}
1
HTTP Request
<3s
Avg Response
1200×630
OG Image Size
99.9%
Uptime SLA

Everything you need for visual automation

No browser clusters, no infrastructure to manage. Just a clean API that works.

📸

Full-Page Screenshots

Capture entire pages or viewport-only screenshots. Control width, height, format (PNG/JPEG), and dark-mode rendering.

🖼️

OG Image Generation

Render pixel-perfect 1200×630 Open Graph images from any URL. Perfect for social sharing previews and link cards.

🔑

Instant API Keys

Sign up with your email and get an API key immediately. No OAuth, no dashboard setup, no waiting.

🛡️

SSRF Protected

Internal IPs, localhost, and private networks are blocked. Your infrastructure stays safe from request-forgery attacks.

📊

Usage Tracking

Check your monthly usage, quota remaining, and billing period anytime via the /usage endpoint.

Chromium-Powered

Real Chromium rendering engine handles JavaScript-heavy SPAs, lazy-loaded images, and complex CSS layouts correctly.

Simple, predictable endpoints

All endpoints return binary image data on success, or JSON error objects on failure. Authentication via X-Api-Key header.

POST /signup No auth required
  • emailrequiredYour email address
  • planoptionalfree · pro · business (default: free)
Example Request
POST /signup
Content-Type: application/json

{
  "email": "you@example.com",
  "plan":  "free"
}

→ 201 Created
{ "api_key": "snap_..." }
GET /screenshot Returns image/png or image/jpeg
  • urlrequiredTarget URL (http/https)
  • widthoptionalViewport width (default: 1280)
  • heightoptionalViewport height (default: 800)
  • full_pageoptionaltrue = capture full page height
  • formatoptionalpng (default) or jpeg
  • darkoptionaltrue = dark-mode rendering
  • delayoptionalWait ms after load (max: 5000)
GET /og Returns image/png (1200×630)
  • urlrequiredTarget URL (http/https)
  • delayoptionalWait ms after load (default: 500)
Fixed output
Always 1200 × 630 px PNG — the standard OG image dimensions for Twitter, LinkedIn, Facebook & Slack.
GET /usage Returns JSON
Example Response
{
  "plan":               "pro",
  "billing_period":     "2026-05",
  "requests_used":      342,
  "requests_limit":     5000,
  "requests_remaining": 4658
}
🔐
Authentication
Pass your API key via the X-Api-Key request header, or as the ?api_key= query parameter. All endpoints except /signup and /health require authentication.

Simple, transparent pricing

Start free, upgrade when you need more. All plans include full API access and no hidden fees.

Free
$0/month
Perfect for side projects and testing
  • 100 requests / month
  • Screenshots & OG images
  • PNG & JPEG output
  • Full-page capture
  • Dark mode rendering
  • Priority support
  • SLA guarantee
Get started free
Business
$29/month
For high-volume apps and agencies
  • 50,000 requests / month
  • Screenshots & OG images
  • PNG & JPEG output
  • Full-page capture
  • Dark mode rendering
  • Priority support
  • 99.9% uptime SLA
Get Business

Quotas reset on the 1st of each month. Need more? Contact us for custom plans.

Get your API key in seconds

No credit card required for the free plan. Upgrade anytime.