Get your first screenshot in under 5 minutes.
- Go to snapapi.pics/register.html
- Sign up — no credit card required
- Copy your API key from the Dashboard
Your key looks like: YOUR_API_KEYxxxxxxxxxxxxxxxxxxxxx
Free tier: 200 API calls/month — enough to explore every feature.
curl -X POST "https://api.snapapi.pics/v1/screenshot" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com", "format": "png"}' \
--output screenshot.png
# ✅ screenshot.png saved!Open screenshot.png — you should see a full-browser screenshot of example.com.
For production use, install the SDK for your language:
# JavaScript / TypeScript
npm install @snapapi/sdk
# Python
pip install snapapi
# PHP
composer require snapapi/sdk
# Go
go get github.com/Sleywill/snapapi-goJavaScript quick test:
const { SnapAPI } = require('@snapapi/sdk');
const fs = require('fs');
const client = new SnapAPI({ apiKey: 'YOUR_API_KEY' });
async function main() {
const screenshot = await client.screenshot({
url: 'https://example.com',
format: 'png'
});
fs.writeFileSync('screenshot.png', screenshot);
console.log('✅ Screenshot saved!');
}
main();curl -X POST "https://api.snapapi.pics/v1/screenshot" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://github.com",
"format": "webp",
"fullPage": true,
"blockAds": true,
"blockCookieBanners": true,
"darkMode": true,
"quality": 90
}' \
--output github-dark.webpcurl -X POST "https://api.snapapi.pics/v1/pdf" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"pdfOptions": {
"pageSize": "a4",
"marginTop": "20mm",
"marginBottom": "20mm",
"printBackground": true
}
}' \
--output document.pdfcurl -X POST "https://api.snapapi.pics/v1/extract" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://en.wikipedia.org/wiki/Web_scraping",
"type": "article",
"cleanOutput": true
}'curl -X POST "https://api.snapapi.pics/v1/screenshot" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"device": "iphone-15-pro",
"format": "png"
}' \
--output mobile.pngcurl -X POST "https://api.snapapi.pics/v1/video" \
-H "X-Api-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"format": "mp4",
"scroll": true,
"scrollEasing": "ease_in_out",
"scrollBack": true
}' \
--output scroll.mp4curl "https://api.snapapi.pics/v1/usage" \
-H "X-Api-Key: YOUR_API_KEY"{
"used": 12,
"limit": 200,
"remaining": 188,
"resetAt": "2026-04-01T00:00:00Z"
}| I want to… | Read this |
|---|---|
| Learn all screenshot options | screenshot.md |
| Extract content for AI | extract.md |
| Use AI to analyze pages | analyze.md |
| Use proxies for blocked sites | proxy.md |
| Capture hundreds of URLs | webhooks.md |
| Schedule daily screenshots | scheduled.md |
| Handle errors & retries | errors.md |
My screenshot is blank / wrong
- Add
"delay": 2000to wait for JS to render - Try
"waitUntil": "networkidle"for SPAs
I get 401 Unauthorized
- Check your API key in the Dashboard
- Use header
X-Api-Key, notAuthorization
I get 402 Quota Exceeded
- Check usage:
GET /v1/usage - Upgrade your plan
Page loads but content is in another language
- Set
"locale": "en-US"and"timezone": "America/New_York"