ScreenshotOne-compatible API

Screenshot API
for developers

Capture any website as PNG, JPEG, WebP, or PDF with a single API call. Fast, affordable, and dead simple. Free tier included.

Try it right now

No API key needed for basic usage. Just run this:

Terminal
curl "https://shotapi.io/take?url=https://example.com&format=png" \
  --output screenshot.png

Everything you need

A screenshot API that just works. No browser management, no infrastructure headaches.

Fast Capture

Screenshots rendered in milliseconds using headless Chromium. Optimized for speed with smart caching.

Affordable

Free tier with 100 screenshots/day. Paid plans from $9/mo. Up to 70% cheaper than alternatives.

ScreenshotOne Compatible

Drop-in replacement for ScreenshotOne. Same parameter names, same behavior. Migrate in minutes.

Multiple Formats

Export as PNG, JPEG, WebP, or PDF. Control quality, viewport size, and device scale factor.

Dark Mode

Capture websites in dark mode with a single parameter. Perfect for showcasing dark-themed sites.

Full Page Capture

Capture entire scrollable pages, specific CSS selectors, or just the visible viewport.

Works with any language

Simple REST API. No SDKs required.

curl
curl "https://shotapi.io/take?url=https://github.com&format=webp&viewport_width=1440&dark_mode=true" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  --output github-dark.webp
Node.js
const params = new URLSearchParams({
  url: 'https://github.com',
  format: 'png',
  viewport_width: '1440',
  full_page: 'true',
});

const res = await fetch(`https://shotapi.io/take?${params}`, {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' }
});

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

response = requests.get(
    "https://shotapi.io/take",
    params={
        "url": "https://github.com",
        "format": "png",
        "viewport_width": "1440",
    },
    headers={"Authorization": "Bearer YOUR_API_KEY"},
)

with open("screenshot.png", "wb") as f:
    f.write(response.content)

Simple, transparent pricing

Start free. Scale when you need to. No hidden fees, no contracts.

Anonymous

Free

No API key needed

  • 10 screenshots/day
  • PNG, JPEG, WebP, PDF
  • All parameters
Try it now

Free

$0 /mo

With API key

  • 100 screenshots/day
  • PNG, JPEG, WebP, PDF
  • All parameters
  • API key authentication
Get API Key
Popular

Starter

$9 /mo

For growing projects

  • 2,500 screenshots/day
  • PNG, JPEG, WebP, PDF
  • All parameters
  • Priority rendering
  • Email support
Get Started

Pro

$29 /mo

For high-volume apps

  • 10,000 screenshots/day
  • PNG, JPEG, WebP, PDF
  • All parameters
  • Priority rendering
  • Priority support
  • Custom viewport sizes
Get Started

Frequently asked questions

How does the free tier work? +
Without an API key, you get 10 free screenshots per day (rate-limited by IP). Sign up for a free API key to get 100 screenshots per day. No credit card required.
Is ShotAPI compatible with ScreenshotOne? +
Yes. ShotAPI uses the same parameter names and behavior as ScreenshotOne. If you are migrating from ScreenshotOne, you only need to change the base URL and API key. Your existing code should work as-is.
What formats are supported? +
ShotAPI supports PNG, JPEG, WebP, and PDF output. You can control the quality for JPEG and WebP with the image_quality parameter (1-100).
Can I capture full-page screenshots? +
Yes. Set full_page=true to capture the entire scrollable page. You can also target a specific element using the selector parameter with a CSS selector.
How fast are screenshots? +
Most screenshots are returned in 1-3 seconds depending on the target site's complexity. We use headless Chromium with optimized settings to minimize capture time.
Do you block ads and cookie banners? +
Yes. Use block_ads=true and block_cookie_banners=true to get clean screenshots without distracting overlays.

Start capturing screenshots today

Free tier included. No credit card required. Get your API key in seconds.

Get Free API Key