Screenshots, PDFs, and video.
Predictable pricing.
The web-capture API for developers who ship. Capture any URL as PNG, JPG, WebP, AVIF, or PDF — or record it as MP4/GIF — with AI-powered popup removal, cron-driven scheduled captures, and per-request geo/proxy routing.
From $9/mo. 100 free credits/month, no card required.
curl -X POST https://api.getsnap.dev/v1/screenshot \
-H "X-API-Key: sk_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"format": "png",
"full_page": true,
"remove_popups": true,
"extract_metadata": true
}'
See it capture the web.
Every screenshot below was taken with a single POST request to /v1/screenshot. Pick a site, or watch it cycle automatically.
{
"url": "https://github.com",
"format": "png",
"viewport_width": 1280,
"viewport_height": 800,
"full_page": true,
"remove_popups": true,
"block_ads": true
}
Why developers choose getsnap.dev
AI Popup Removal
Automatically removes cookie banners, newsletter popups, and chat widgets. Auto-click Accept buttons on OneTrust, Cookiebot, and FundingChoices. Clean captures, every time.
Every format that matters
PNG, JPG, WebP, AVIF, and PDF. Or record scrolling video as MP4 or GIF. Full-page captures, Retina, transparent backgrounds, mobile/tablet emulation, dark mode, print media type.
Scrolling video (MP4 & GIF)
Record any URL as a smoothly-scrolling video. 10–30 fps, up to 30 seconds, MP4 (h264) or optimized GIF. Great for changelog demos, marketing hero clips, and design-review approvals. Only Urlbox and getSnap have this.
Scheduled captures
Cron-driven recurring captures with IANA timezone support, HMAC-signed webhooks, and a built-in audit trail of the last 100 runs. Set once, monitor forever. Perfect for compliance archives, competitor snapshots, and morning traffic dashboards.
Geo & proxy routing
Route any capture through your own proxy (BYOP: HTTP/HTTPS/SOCKS5) or a managed geo pool. Pass proxy_country: "DE" and see the site the way a German visitor does. Credentials never leak into logs or cache keys.
Fast & reliable
Average response time under 3 seconds. Built on Playwright with intelligent caching and CDN delivery. Batch up to 100 URLs in one request. 99.9% uptime target with a public status page.
Your key is never stored
We keep a SHA-256 hash of your API key, not the key — so a database dump, or one of our nightly backups, contains nothing that can call the API. Signed render links are keyed by a server-held secret rather than anything on your account row, and every capture URL is checked against its resolved address, so the renderer cannot be pointed at a private network.
Extraction & metadata
Get text, HTML, or full page metadata in the same call — title, favicon, Open Graph tags, actually-loaded fonts, HTTP status, and response headers. Perfect for SEO tooling, archiving, and content analysis.
Full-page slicing for AI vision
Vision models cap at ~8k pixel height. Enable full_page_slices and we split tall captures into overlapping strips uploaded as separate objects. Feed them straight into GPT-4V, Claude, or Gemini without cropping code.
Precise capture control
Wait for selectors, auto-scroll for lazy content, click elements, scroll to sections, clip a specific rectangle, inject custom CSS/JS, block images/fonts/scripts/frames, set cookies & headers for authenticated pages, bypass CSP when you need to.
PDF, done properly
Every paper size A0–A6, Letter, Legal, Tabloid, Ledger. Portrait or landscape. Per-side margins, scale, templated headers/footers with page numbers, page-range filters, and full document metadata (title, subject, author, keywords, creator).
OG image generator
Dedicated POST /v1/og-image endpoint tuned for social share cards. 1200×630 PNG, hi-DPI (2x), popup/ad-blocking by default. Drop the returned CDN URL straight into <meta property="og:image"> and every scraper — Facebook, LinkedIn, Slack, Discord, Twitter — renders the same crisp preview.
Visual regression diff
New POST /v1/diff compares two URLs pixel-by-pixel and returns a similarity score plus a red-overlay diff image. Wire it into CI to catch unintended visual changes on deploys, or run it as a scheduled check against your competitors. Sub-second math on top of Playwright captures, cached like everything else.
Accessibility audit
New POST /v1/audit runs axe-core against any URL and returns categorised WCAG 2.0/2.1/2.2 violations by impact (critical / serious / moderate / minor). Filter by tag (wcag2aa, section508, ACT) or specific rule ID. Ships with a getsnap audit CLI for one-shot checks and CI regression gates.
Team accounts + team billing
Share one plan, one monthly quota, and one rate limit across multiple api_keys. Invite by email — roles are owner / admin / member. Owners can transfer ownership or dissolve the team. Each team gets its own Stripe subscription (independent from any member's personal billing) via /checkout + /portal + /billing. 7-day trial included.
Render links & S3
Signed GET URLs that serve screenshots without exposing your API key — embed them in <img> tags, OG meta, or emails. Or push directly to your own S3-compatible bucket (AWS, R2, DO Spaces, etc).
4–12× cheaper
$0.79–1.80/1K captures vs. competitors at $1.75–9.80/1K. Starting at $9/mo for 5,000 credits. No hidden fees, no per-feature upcharges. Node.js SDK on npm, Python SDK on PyPI.
How we compare
Same category. Same quality. Dramatically better pricing.
| Feature | getSnap.dev | ScreenshotAPI | Urlbox | ScreenshotOne | ApiFlash |
|---|---|---|---|---|---|
| 5,000 screenshots / month | $9 | $39.99 | $49 | $29 | $19 |
| Cost per 1,000 | $1.80 | $8.00 | $9.80 | $5.80 | $3.80 |
| Free tier | 100/mo | 100/mo | no | 100/mo | 100/mo |
| AI popup removal (90+ selectors) | yes | no | partial | partial | no |
| Batch capture (up to 100 URLs) | yes | no | no | no | no |
| Text & HTML extraction | yes | no | no | partial | no |
| Signed render links | yes | no | yes | yes | no |
| Async webhooks | yes | no | yes | yes | no |
| Upload to your S3 bucket | yes | no | yes | yes | no |
| Node.js + Python SDKs | yes | Node only | Node only | yes | no |
| AVIF output | yes | no | yes | yes | no |
| Full-page slicing for AI vision | yes | no | no | no | no |
| PDF metadata + page ranges + custom H/F | yes | no | partial | partial | no |
| Page metadata extraction (title, favicon, OG, fonts, status) | yes | no | yes | partial | no |
| Scheduled captures (cron + webhook + HMAC) | yes | no | yes | no | no |
| Scrolling video (MP4/GIF) | yes | no | yes | no | no |
| Geo/proxy routing (BYOP + pool) | yes | yes | yes | no | yes |
Pricing pulled from each vendor's public pricing page. See detailed comparisons: vs ScreenshotAPI · vs Urlbox · vs ScreenshotOne · vs ApiFlash
Simple, transparent pricing
Start free. Upgrade when you're ready. Cancel anytime.
Free
- 100 screenshots/mo
- All formats (PNG, JPG, WebP, PDF)
- AI popup removal
- CDN delivery
- 5 req/min rate limit
Starter
- 5,000 screenshots/mo
- All formats
- AI popup removal
- CDN delivery
- 30 req/min rate limit
- Priority support
Pro
- 25,000 screenshots/mo
- All formats
- AI popup removal
- CDN delivery
- 60 req/min rate limit
- Priority support
Business
- 100,000 screenshots/mo
- All formats
- AI popup removal
- CDN delivery
- 120 req/min rate limit
- Dedicated support
All paid plans include a 7-day free trial — card required, cancel anytime, no charge if you cancel before day 7. Overage billed at $0.003/screenshot. Custom enterprise plans available.
Learn how billing & payments work →
Built for developers
One line to install. Two lines to capture. Ready in production in under 5 minutes.
$ npm install getsnap
import GetSnap from "getsnap";
const snap = new GetSnap("sk_live_YOUR_KEY");
const { url } = await snap.screenshot({ url: "https://example.com" });
$ pip install getsnap
from getsnap import GetSnap
snap = GetSnap("sk_live_YOUR_KEY")
result = snap.screenshot(url="https://example.com")
$ curl -X POST https://api.getsnap.dev
curl -X POST https://api.getsnap.dev/v1/screenshot \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
Full reference: API docs · Code examples · Interactive playground
Real-time uptime and response-time monitoring, publicly viewable.
Frequently Asked Questions
Do I need a credit card to start?
No. The free tier gives you 100 screenshots per month with no credit card required. Sign up with an email, click the activation link we send you, and the key is ready.
How fast are screenshots?
Sub-3-second average. Cached responses are served instantly via CDN with an X-Cache: HIT header and don't count against your monthly quota. Full-page captures on JS-heavy sites can take up to 5 seconds.
Why is getsnap.dev cheaper than the alternatives?
We run a lean stack — Fastify + Playwright + Redis in Docker on a single DigitalOcean droplet, screenshots served via DigitalOcean Spaces CDN. No VC funding to service, no sales team, no bloat. The savings pass to you.
What happens if I exceed my monthly limit?
You won't be cut off. Overage is billed at $0.003 per screenshot. Upgrade any time for a higher allowance.
How does AI popup removal work?
Our system detects and removes cookie banners, newsletter popups, chat widgets, and overlay modals before capture using 90+ heuristic selectors. You can also pass your own hide_selectors or remove_selectors arrays for full control.
What output formats are supported?
PNG, JPG, WebP, and PDF. You can set custom viewports, emulate mobile or tablet, render in dark mode, capture specific elements via CSS selector, and take Retina-quality captures.
Is there an uptime SLA?
Yes — we target 99.9% and publish real uptime and response-time data at our public status page.
Can I capture pages behind authentication?
Yes. Pass custom cookies and HTTP headers (including auth tokens) in your request. You can also inject JavaScript to handle login flows or dismiss dialogs before capture.
Do you have Node.js and Python SDKs?
Yes. npm install getsnap for Node/TypeScript, pip install getsnap for Python. Both are officially maintained and cover every API option including batch capture, render links, extraction, and webhooks.
How do I cancel my subscription?
Cancel any time via the Stripe billing portal (POST /v1/billing). No questions asked, no lock-in. Your API key stays active until the end of the billing period.
How does signing up for a paid plan work?
Enter your email → get an API key → click the activation link in the welcome email → for paid plans, you'll be redirected to Stripe checkout. Your plan upgrades automatically after payment.
Refer developers, earn $5 for every paid signup
Every account gets a unique ?ref=CODE link at signup — no opt-in, no approval.
Stripe balance credit the moment they pay their first invoice. Reduces your next bill.
One-time Stripe coupon on their first paid month. Starter, Pro, or Business.
20 referrals = $100 = one free month of Pro. Stack them, no cap. Anti-abuse: self-referrals blocked, one referrer per referee, credit only on real payments.
Get your free API key in 30 seconds
No credit card required. 100 free screenshots every month.