Now in Public Beta

Screenshots & OG Images
via API

Generate pixel-perfect screenshots, Open Graph images, and PDFs with a single API call. Built for developers who ship fast.

Get Free API Key Read the Docs
bash
curl -X POST https://api.snapapi.dev/v1/screenshot \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "viewport": { "width": 1280, "height": 720 },
    "format": "png",
    "full_page": false
  }' \
  --output screenshot.png

Try it now

Enter any URL to see SnapAPI in action. No API key required for the demo.

Screenshot preview will appear here

Everything you need to capture the web

A complete toolkit for rendering, capturing, and transforming web content at scale.

Screenshot Capture

Full-page or viewport screenshots in PNG, JPEG, and WebP. Custom viewports, device emulation, and retina support. Renders JavaScript-heavy SPAs flawlessly.

OG Image Generation

Generate dynamic Open Graph images from templates or custom HTML. Perfect for social media cards, blog post previews, and link unfurling across platforms.

PDF Export

Convert any webpage to a clean PDF. Control page size, margins, headers, footers, and background printing. Ideal for invoices, reports, and documentation.

Smart Caching

Automatic edge caching with configurable TTL. Repeated requests for the same URL return cached results instantly. Cache invalidation via API or dashboard.

Custom CSS Injection

Inject custom CSS before capture to hide cookie banners, remove ads, change fonts, or restyle any element. Full control over the rendered output.

Dark Mode Rendering

Force dark mode via prefers-color-scheme emulation. Capture how your pages look in dark mode without modifying any code. Works with any site.

Drop in with any stack

First-class support for every major language. Copy, paste, ship.

bash
curl -X POST https://api.snapapi.dev/v1/screenshot \
  -H "Authorization: Bearer sk_live_abc123" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "viewport": { "width": 1280, "height": 720 },
    "format": "png",
    "full_page": true,
    "dark_mode": false,
    "cache_ttl": 3600
  }' \
  --output screenshot.png
python
import requests

response = requests.post(
    "https://api.snapapi.dev/v1/screenshot",
    headers={
        "Authorization": "Bearer sk_live_abc123",
        "Content-Type": "application/json",
    },
    json={
        "url": "https://example.com",
        "viewport": {"width": 1280, "height": 720},
        "format": "png",
        "full_page": True,
    },
)

with open("screenshot.png", "wb") as f:
    f.write(response.content)
javascript
import { writeFileSync } from "node:fs";

const response = await fetch("https://api.snapapi.dev/v1/screenshot", {
  method: "POST",
  headers: {
    "Authorization": "Bearer sk_live_abc123",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    url: "https://example.com",
    viewport: { width: 1280, height: 720 },
    format: "png",
    full_page: true,
  }),
});

const buffer = Buffer.from(await response.arrayBuffer());
writeFileSync("screenshot.png", buffer);
php
<?php

$ch = curl_init('https://api.snapapi.dev/v1/screenshot');

curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer sk_live_abc123',
        'Content-Type: application/json',
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'url'       => 'https://example.com',
        'viewport'  => ['width' => 1280, 'height' => 720],
        'format'    => 'png',
        'full_page' => true,
    ]),
]);

$image = curl_exec($ch);
curl_close($ch);

file_put_contents('screenshot.png', $image);

Simple, transparent pricing

Start free. Scale as you grow. No hidden fees, no overages, no surprises.

Free
$0/mo
For side projects and experimentation
  • 100 captures per month
  • PNG, JPEG, WebP formats
  • 1280x720 max viewport
  • 5 second render timeout
  • Community support
Get Started
Starter
$9/mo
For developers building products
  • 1,000 captures per month
  • All formats including PDF
  • 1920x1080 max viewport
  • 15 second render timeout
  • Custom CSS injection
  • Email support
Pay with TON, USDT, BTC via Telegram
TON · USDT · BTC
Business
$79/mo
For high-volume applications
  • 25,000 captures per month
  • All formats including PDF
  • Unlimited viewport size
  • 60 second render timeout
  • Custom OG templates
  • Smart caching (24h TTL)
  • Dedicated support + SLA
  • Webhook notifications
Pay with TON, USDT, BTC via Telegram
TON · USDT · BTC

Powered by @CryptoBot

Built for real workflows

From link previews to compliance archiving, SnapAPI powers capture workflows across industries.

Link Previews

Generate rich link preview thumbnails for your app's feed, chat, or content aggregator. Show users what they'll see before they click.

Social Media Cards

Auto-generate Open Graph and Twitter Card images for every blog post, product page, or landing page. Dynamic templates with custom branding.

Automated Testing

Visual regression testing at scale. Capture baseline screenshots and diff against new deployments. Integrate with CI/CD pipelines via API.

Web Archiving

Preserve point-in-time snapshots of web pages for compliance, legal discovery, or historical records. PDF and image formats with timestamps.

SEO Tools

Monitor competitor pages visually. Track layout changes, A/B test variations, and SERP feature screenshots. Build SEO dashboards with live previews.

Content Platforms

Enrich content management systems with auto-generated thumbnails, preview cards, and PDF exports. Seamless integration with any CMS or headless backend.

Start capturing in 30 seconds

100 free screenshots every month. No credit card required. API key delivered instantly.

By signing up, you agree to our Terms of Service and Privacy Policy.