Screenshot API

Website Screenshots
via API

Capture pixel-perfect screenshots of any website with a single API call. PNG, JPEG, or PDF. Lightning fast.

https://apisnap.dev/api/screenshot?url=example.com&api_key=YOUR_KEY
Quick Start
# Capture a screenshot curl "https://apisnap.dev/api/screenshot?url=example.com&api_key=YOUR_KEY" \ -o screenshot.png # Full-page PDF with dark mode curl "https://apisnap.dev/api/screenshot?url=github.com&format=pdf&full_page=true&dark_mode=true&api_key=YOUR_KEY" \ -o page.pdf

Built for Developers

Everything you need, nothing you don't

Fast & Reliable

Screenshots rendered in a real Chromium browser. Average response time under 3 seconds.

🖼

Multiple Formats

Export as PNG, JPEG, or PDF. Control quality, dimensions, and device scale factor.

🌓

Dark Mode

Capture sites in dark mode with a single parameter. Perfect for generating preview cards.

📐

Full Page Capture

Capture the entire scrollable page, not just the viewport. Great for archival and testing.

🎯

Element Selector

Target specific elements via CSS selector. Screenshot just a chart, form, or any component.

🔒

Secure

SSRF protection, private IP blocking, rate limiting. Your API key, your data.

Simple Pricing

Start free. Scale when you're ready.

Free

Get started at no cost

$0/mo
  • 100 screenshots/month
  • PNG, JPEG, PDF formats
  • All API parameters
  • Community support
Get Started

Pro

For production workloads

$29/mo
  • 25,000 screenshots/month
  • PNG, JPEG, PDF formats
  • All API parameters
  • Priority rendering
  • Priority email support
Subscribe

API Documentation

Everything you need to get started

Authentication

Include your API key via Bearer token or query parameter:

# Via header (recommended) curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://apisnap.dev/api/screenshot?url=example.com" # Via query parameter curl "https://apisnap.dev/api/screenshot?url=example.com&api_key=YOUR_KEY"

GET /api/screenshot

Capture a screenshot of any public URL.

ParameterTypeDefaultDescription
urlstringrequiredURL to screenshot
formatstringpngpng, jpeg, or pdf
widthinteger1280Viewport width (320-3840)
heightinteger800Viewport height (200-2160)
full_pagebooleanfalseCapture entire scrollable page
qualityinteger80JPEG quality (1-100)
delayinteger0Wait (ms) after page load (0-10000)
dark_modebooleanfalseEmulate dark color scheme
scalenumber1Device scale factor (1-3, use 2 for retina)
selectorstring-CSS selector to screenshot a specific element

POST /api/register

Create a free API key.

curl -X POST "https://apisnap.dev/api/register" \ -H "Content-Type: application/json" \ -d '{"email": "you@example.com"}'

GET /api/usage

Check your current usage and limits. Requires authentication.

Response Headers

Every screenshot response includes these headers:

HeaderDescription
X-Usage-RemainingScreenshots remaining this month
X-Response-TimeTime taken to generate screenshot
X-Screenshot-WidthRendered viewport width
X-Screenshot-HeightRendered viewport height

Code Examples

JavaScript / Node.js
const response = await fetch( `https://apisnap.dev/api/screenshot?url=${encodeURIComponent(url)}`, { headers: { 'Authorization': `Bearer ${apiKey}` } } ); const buffer = await response.arrayBuffer();
Python
import requests r = requests.get( "https://apisnap.dev/api/screenshot", params={"url": "https://example.com"}, headers={"Authorization": f"Bearer {api_key}"} ) with open("screenshot.png", "wb") as f: f.write(r.content)

Try It Live

See it in action (requires an API key)

Get Your Free API Key

100 screenshots/month. No credit card required.