Website Screenshots via API
Fast, Reliable, Simple

Capture pixel-perfect screenshots of any website with a single API call. No browser required. Built for developers.

Get Free API Key → View Documentation

🔍 Try it — enter any URL

Screenshot will appear here

Built for developers

Everything you need to capture screenshots at scale

Lightning Fast

Screenshots delivered in under 3 seconds. Optimized Chromium instances with smart resource management.

🖼️

Multiple Formats

Export as PNG, JPEG, or PDF. Control quality, dimensions, and full-page capture.

🔒

Secure by Default

API key authentication, rate limiting, and input validation. Your requests are safe.

📊

Usage Dashboard

Track your usage, manage API keys, and monitor performance from your dashboard.

🔄

Queue System

Smart request queuing ensures consistent performance even under heavy load.

🌍

Any Website

Captures JavaScript-rendered pages, SPAs, and dynamic content with full browser rendering.

Simple integration

Get started in under a minute with your favorite language

# Take a screenshot
curl -X POST https://api.pandan.is/api/screenshot \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://github.com", "width": 1280, "height": 720}' \
  --output screenshot.png
import requests

response = requests.post(
    "https://api.pandan.is/api/screenshot",
    headers={"X-API-Key": "YOUR_API_KEY"},
    json={
        "url": "https://github.com",
        "width": 1280,
        "height": 720,
        "format": "png"
    }
)

with open("screenshot.png", "wb") as f:
    f.write(response.content)
const response = await fetch('https://api.pandan.is/api/screenshot', {
  method: 'POST',
  headers: {
    'X-API-Key': 'YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    url: 'https://github.com',
    width: 1280,
    height: 720
  })
});

const buffer = await response.arrayBuffer();
fs.writeFileSync('screenshot.png', Buffer.from(buffer));
<?php
$ch = curl_init('https://api.pandan.is/api/screenshot');

curl_setopt_array($ch, [
    CURLOPT_POST => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        'X-API-Key: YOUR_API_KEY',
        'Content-Type: application/json'
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'url' => 'https://github.com',
        'width' => 1280,
        'height' => 720
    ])
]);

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

Simple, transparent pricing

Start free, scale as you grow

Free

For side projects & testing

$0/mo
  • 100 screenshots/month
  • 5 requests/minute
  • PNG, JPEG, PDF
  • 1280×720 max resolution
  • Community support
Get Started

Business

For production workloads

$29/mo
  • 25,000 screenshots/month
  • 60 requests/minute
  • All formats
  • Custom viewport sizes
  • Webhook notifications
  • Dedicated support
Get Business

Scale

For high-volume needs

$79/mo
  • 100,000 screenshots/month
  • 120 requests/minute
  • All formats
  • Priority queue
  • Custom headers & cookies
  • SLA guarantee
Contact Sales

Frequently asked questions

How fast are screenshots captured?
Most screenshots are captured in 2-4 seconds, depending on the target website's complexity and load time. Our optimized Chromium instances and smart queue system ensure consistent performance.
Can I capture full-page screenshots?
Yes! Set the fullPage parameter to true in your API request to capture the entire scrollable page, not just the viewport.
Does it work with JavaScript-rendered pages?
Absolutely. We use a full Chromium browser engine, so SPAs, React apps, and any JavaScript-rendered content is captured perfectly. You can also add a delay to wait for animations or lazy-loaded content.
What formats are supported?
We support PNG (lossless, best quality), JPEG (smaller files, configurable quality 1-100), and PDF (great for documents and reports).
What happens if I exceed my plan limit?
You'll receive a 429 response with details about your current usage. Your service won't be interrupted — simply upgrade your plan or wait for the next billing cycle to reset your quota.
Can I change plans at any time?
Yes, you can upgrade or downgrade at any time from your dashboard. Changes take effect immediately, and billing is prorated.

Ready to get started?

Get your free API key in 30 seconds. No credit card required.

Create Free Account →