Website screenshot API examples
# Direct image (no auth needed for free tier)
curl "https://snap.i2dev.com/v1/screenshot?url=https%3A%2F%2Fgithub.com" > github.webp
# JSON API (with API key)
curl -X POST https://snap.i2dev.com/v1/screenshots \
-H "Authorization: Bearer YOUR_KEY" \
-d '{"url": "https://example.com"}'Embed directly in HTML — no JavaScript required:
<!-- Display only -->
<img src="https://snap.i2dev.com/v1/screenshot?url=https%3A%2F%2Fexample.com&width=1280" />
<!-- CORS mode: JavaScript/canvas can read the pixels -->
<img crossorigin="anonymous" src="https://snap.i2dev.com/v1/screenshot?url=https%3A%2F%2Fexample.com&width=1280" />The CORS-enabled form is public and sends no credentials. Use it when your page needs canvas or JavaScript pixel access.
Deterministic
Pinned browser versions and fonts. Same input, same output, every time.
Fast & Free
30 screenshots/day for free. No account needed. Just link and go.
Secure by Default
SSRF-hardened. We block private IPs and validate URLs so you don't have to.
Frequently asked questions
Do I need an account to use the screenshot API?
No. The anonymous GET /v1/screenshot endpoint works with no signup and no API key — up to 30 screenshots a day per IP.
What's the daily limit, exactly?
30 screenshots per day per IP, resetting at midnight UTC. Each network also shares a much higher 10,000-attempt daily ceiling, which exists to stop rotating cloud or proxy egress from bypassing the per-IP limit — it's not meant to constrain a single visitor. Cache hits never count against either daily quota. A repeat request for the exact same canonical options is usually served from the CDN edge and doesn't touch the per-minute rate limit at all; the rate limit only applies to requests that reach the origin, including any cache hit served from storage rather than the edge.
What happens when I hit a limit?
Rate-limit and quota responses return HTTP 429 with a Retry-After header and a scope header identifying which limit was hit. Other capture failures return HTTP 200 with a placeholder image, so existing <img> embeds keep rendering instead of breaking.
What image formats and sizes are supported?
WebP (default), JPEG, or PNG, at widths from 1–1920px and heights from 1–1080px, plus an optional full-page capture mode that captures the whole scrollable page.
Can I use the screenshot directly in an <img> tag?
Yes — the default response sends no credentials, so it works in a plain <img src="...">. Add crossorigin="anonymous" if your page needs canvas or JavaScript pixel access to the image.
Testing UIs, not just capturing them?
Snap's Hosted Visual CI adds centralized baselines, PR diffs, and a review dashboard on top of this same engine. Comparing hosted visual regression tools? See the Percy vs Chromatic vs Argos pricing comparison.
