Capture pixel-perfect screenshots and generate Open Graph images with a single HTTP request. Powered by Chromium, no headless browser setup required.
# 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" }
No browser clusters, no infrastructure to manage. Just a clean API that works.
Capture entire pages or viewport-only screenshots. Control width, height, format (PNG/JPEG), and dark-mode rendering.
Render pixel-perfect 1200×630 Open Graph images from any URL. Perfect for social sharing previews and link cards.
Sign up with your email and get an API key immediately. No OAuth, no dashboard setup, no waiting.
Internal IPs, localhost, and private networks are blocked. Your infrastructure stays safe from request-forgery attacks.
Check your monthly usage, quota remaining, and billing period anytime via the /usage endpoint.
Real Chromium rendering engine handles JavaScript-heavy SPAs, lazy-loaded images, and complex CSS layouts correctly.
All endpoints return binary image data on success, or JSON error objects on failure. Authentication via X-Api-Key header.
POST /signup Content-Type: application/json { "email": "you@example.com", "plan": "free" } → 201 Created { "api_key": "snap_..." }
{
"plan": "pro",
"billing_period": "2026-05",
"requests_used": 342,
"requests_limit": 5000,
"requests_remaining": 4658
}
X-Api-Key request header, or as the ?api_key= query parameter. All endpoints except /signup and /health require authentication.Start free, upgrade when you need more. All plans include full API access and no hidden fees.
Quotas reset on the 1st of each month. Need more? Contact us for custom plans.
No credit card required for the free plan. Upgrade anytime.
⚠️ Store this key safely — it won't be shown again. Use it as the X-Api-Key header in your requests.