500 free screenshots/month

Screenshot any website
with one API call

PNG, JPEG, WebP, or PDF. Custom viewports, device emulation, ad blocking, dark mode, and smart caching. Built for developers.

No credit card required

terminal
$ curl "https://app.snap-render.com/v1/screenshot?url=https://github.com" \
    -H "X-API-Key: sk_live_your_key_here" \
    --output screenshot.png

  % Total    % Received
  100  245k  100  245k    0     0   156k      0  0:00:01  0:00:01 --:--:--

$ open screenshot.png   # Done!

Everything you need

One API call to capture any website. Built for developers who need reliable screenshots at scale.

Multiple Formats

PNG, JPEG, WebP, and PDF output. Control quality, viewport size, and full-page capture with simple query params. One endpoint, four formats.

.png .jpeg .webp .pdf

Device Emulation

Capture as iPhone 15 Pro, iPad, Pixel 7, or any custom viewport. Perfect for responsive testing and social previews.

Smart Caching

R2-backed caching with configurable TTL. Cached responses in under 200ms. Skip redundant renders, save time and money.

Ad & Cookie Blocking

Automatically remove ads, cookie consent banners, and GDPR dialogs. Clean screenshots every time, no manual cleanup.

Dark Mode

Capture pages in dark mode with dark_mode=true. One parameter, no extra configuration needed.

SSRF Protected

Enterprise-grade URL validation. Blocks private IPs, localhost, cloud metadata, and internal endpoints. Safe by default.

AI & MCP Ready

Official MCP server for Claude Desktop & Claude Code. Connect instantly via https://app.snap-render.com/mcp — no install needed. Also available as npm package, OpenAPI spec, and JSON response mode for any AI integration.

Remote MCP Local MCP OpenAPI 3.1

Built for your use case

The same powerful API, tailored messaging for your specific workflow.

Integrated across the developer ecosystem

4

Output formats

5

Device presets

<3s

Avg render time

30d

Max cache TTL

Simple to integrate

A single HTTP request is all you need. Works with any language.

cURL
curl "https://app.snap-render.com/v1/screenshot?url=https://example.com&format=png" \
  -H "X-API-Key: sk_live_your_key_here" \
  --output screenshot.png
Node.js SDK
import SnapRender from 'snaprender';
import fs from 'node:fs';

const snap = new SnapRender({ apiKey: 'sk_live_your_key_here' });
const buffer = await snap.capture({ url: 'https://example.com', format: 'png' });
fs.writeFileSync('screenshot.png', buffer);
Python SDK
from snaprender import SnapRender

snap = SnapRender("sk_live_your_key_here")
data = snap.capture("https://example.com", format="png")
with open("screenshot.png", "wb") as f:
    f.write(data)
MCP Server (Claude) — Remote
// Add to claude_desktop_config.json
{
  "mcpServers": {
    "snaprender": {
      "type": "streamable-http",
      "url": "https://app.snap-render.com/mcp",
      "headers": {
        "Authorization": "Bearer sk_live_your_key_here"
      }
    }
  }
}

// Then ask Claude: "Take a screenshot of github.com"
MCP Server (Claude) — Local
// Add to claude_desktop_config.json
{
  "mcpServers": {
    "snaprender": {
      "command": "npx",
      "args": ["-y", "snaprender-mcp"],
      "env": {
        "SNAPRENDER_API_KEY": "sk_live_your_key_here"
      }
    }
  }
}

API Parameters

All features available on every plan. Pass parameters as query strings.

Parameter Default Description
urlURL to screenshot required
formatpngOutput format: png jpeg webp pdf
width1280Viewport width in px (320–3840)
height800Viewport height in px (200–10000)
full_pagefalseCapture full scrollable page
dark_modefalseEmulate prefers-color-scheme: dark
deviceDevice preset: iphone_14 iphone_15_pro pixel_7 ipad_pro macbook_pro
block_adstrueBlock ads and tracking scripts
block_cookie_bannerstrueRemove cookie consent banners and GDPR dialogs
quality90JPEG/WebP quality (1–100)
delay0Wait ms after page load before capture (max 10000)
cachetrueUse cached result if available. Set to false to force a fresh capture
hide_selectorsComma-separated CSS selectors to hide
response_typebinaryjson returns metadata + base64 data URI (recommended for AI agents)

Dark mode example

Add dark_mode=true to capture any site in its dark theme. Works with any site that supports prefers-color-scheme: dark in CSS.

Dark mode screenshot
curl "https://app.snap-render.com/v1/screenshot?url=https://github.com&dark_mode=true&format=png" \
  -H "X-API-Key: sk_live_your_key_here" \
  --output github-dark.png

Device emulation example

Use the device parameter to capture as a real device. Sets viewport, pixel density, user agent, and touch support automatically.

iPhone 15 Pro screenshot
curl "https://app.snap-render.com/v1/screenshot?url=https://example.com&device=iphone_15_pro&format=png" \
  -H "X-API-Key: sk_live_your_key_here" \
  --output mobile.png
View full API documentation

All endpoints, parameters, error codes, rate limits, and more.

Simple, transparent pricing

Start free. Scale as you grow. No hidden fees.

Free

$0/mo

500 screenshots/mo

  • All features included
  • 10 req/min burst
  • 1-day cache
Get started free

Starter

$9/mo

2,000 screenshots/mo

  • All features included
  • 30 req/min burst
  • 7-day cache
Subscribe
Most popular

Growth

$29/mo

10,000 screenshots/mo

  • All features included
  • 60 req/min burst
  • 30-day cache
Subscribe

Business

$79/mo

50,000 screenshots/mo

  • All features included
  • 120 req/min burst
  • 30-day cache
Subscribe

Scale

$199/mo

200,000 screenshots/mo

  • All features included
  • 200 req/min burst
  • 30-day cache
Subscribe

Frequently asked questions

Everything you need to know about SnapRender.

How does the screenshot API work?
Send a GET request with your target URL and API key. SnapRender renders the page in a real Chromium browser, captures the screenshot, and returns the image binary. It's a single HTTP call — no browser setup, no infrastructure to manage.
What formats are supported?
PNG, JPEG, WebP, and PDF. You can control output quality for JPEG and WebP (1–100), and capture full-page scrolling screenshots in any format.
Is there a free plan?
Yes. The free plan includes 500 screenshots per month with all features enabled — no credit card required. All API parameters (device emulation, dark mode, ad blocking, etc.) work on every plan.
How fast are screenshots?
Fresh screenshots typically take 2–5 seconds depending on the target page. Cached screenshots return in under 200ms. Smart caching with configurable TTL means repeated requests are nearly instant.
Do you have SDKs?
Yes — official SDKs for Node.js (npm) and Python (PyPI). The API is also a simple REST endpoint that works with any HTTP client in any language.
Can I capture mobile screenshots?
Yes. Use the device parameter with presets like iphone_15_pro, pixel_7, or ipad_pro. This sets the correct viewport, pixel density, user agent, and touch support automatically.
Can AI agents use SnapRender?
Yes. We offer an official MCP server (Model Context Protocol) that lets Claude Desktop and Claude Code capture screenshots natively. Just run npx snaprender-mcp with your API key. We also provide an OpenAPI spec and a response_type=json mode for any AI tool integration.

Ready to get started?

Sign up in 30 seconds. Get your API key instantly. Take your first screenshot.

Create free account