Screenshot API for Developers

One API call.
Any website as image.

Capture perfect screenshots with a simple REST API. PNG, JPEG, WebP, PDF. No browser management, no infrastructure headaches.

curl -X POST https://api.snap.krovn.io/v1/screenshot \
  -H "Authorization: Bearer sf_your_key" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://github.com"}' \
  --output screenshot.png
<3sAvg response
99.9%Uptime
1,000Free screenshots/mo

Built for developers

Fast

Average response under 3 seconds. Browser pool with instance reuse. Redis caching for repeated requests.

📰

Multiple Formats

PNG, JPEG, WebP, and PDF. Full page capture, element selectors, custom viewports up to 4K.

🌍

Any Website

JavaScript rendering, dark mode emulation, ad blocking, custom headers and cookies.

🔒

Secure

SSRF protection, input validation, API key authentication, rate limiting per key.

📊

Usage Dashboard

Track your API usage in real time. Per-day and per-month stats. Rate limit headers on every response.

🚀

Simple Integration

One POST request. Works with any language. GET endpoint for <img src> embedding.

Works everywhere

curl -X POST https://api.snap.krovn.io/v1/screenshot \
  -H "Authorization: Bearer sf_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "format": "png",
    "width": 1280,
    "height": 800,
    "fullPage": false
  }' \
  --output screenshot.png
const response = await fetch('https://api.snap.krovn.io/v1/screenshot', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sf_your_api_key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    url: 'https://example.com',
    format: 'png',
    width: 1280,
    fullPage: true
  })
});

const buffer = await response.arrayBuffer();
fs.writeFileSync('screenshot.png', Buffer.from(buffer));
import requests

response = requests.post(
    'https://api.snap.krovn.io/v1/screenshot',
    headers={'Authorization': 'Bearer sf_your_api_key'},
    json={
        'url': 'https://example.com',
        'format': 'png',
        'width': 1280,
        'fullPage': True
    }
)

with open('screenshot.png', 'wb') as f:
    f.write(response.content)
$ch = curl_init('https://api.snap.krovn.io/v1/screenshot');
curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer sf_your_api_key',
        'Content-Type: application/json'
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'url' => 'https://example.com',
        'format' => 'png',
        'width' => 1280
    ])
]);

$screenshot = curl_exec($ch);
file_put_contents('screenshot.png', $screenshot);

Simple pricing

Start free. Upgrade when you need more.

Monthly Yearly Save 17%

Free

$0/month
  • 1,000 screenshots/month
  • PNG, JPEG, WebP
  • Max 1280x800
  • 5 req/min
  • Community docs
Get Free Key

Pro

$49/month
  • 50,000 screenshots/month
  • PDF export
  • Custom headers & cookies
  • 4K resolution
  • Priority email (24h)
Get Started

Business

$149/month
  • 200,000 screenshots/month
  • Everything in Pro
  • Priority queue
  • Slack support
  • Custom cache TTL
Contact Us

FAQ

How fast are screenshots?

Average response time is under 3 seconds. Cached requests return in under 100ms. Complex pages with heavy JavaScript may take up to 10 seconds.

Can I capture pages behind a login?

Yes! Pro and Business plans support custom headers and cookies. Inject your session cookies and we'll capture the authenticated page.

What happens when I hit my limit?

You'll get a 429 response with a Retry-After header. Upgrade your plan for higher limits, or wait for the next billing period.

Is there a free trial?

The Free plan gives you 1,000 screenshots/month forever. No credit card required. Upgrade anytime.

Where are servers located?

Our servers are in Germany, ensuring fast response times for European and global users with GDPR compliance.