Screenshot API

URL to image. One API call.

Capture screenshots of any public URL with configurable viewports, full-page mode, and device emulation. SSRF protection built in — safe for user-submitted URLs.

<1.5s
Capture time
3840px
Max width
SSRF
Protected
example.com
Desktop 1280×720 + Mobile 390×844 @2x

Capabilities

Everything you need from a screenshot API. Nothing you don't.

Custom viewports

Set any width from 320 to 3840 pixels. Capture at desktop, tablet, or mobile breakpoints.

Full-page capture

Capture the entire scrollable page, not just the viewport. Great for archiving and documentation.

SSRF protection

Built-in DNS validation blocks private IPs and internal networks. Safe to expose in user-facing features.

Sub-second rendering

Pre-warmed browser pool with smart wait strategies. No cold start, no stale captures.

Device emulation

Set deviceScaleFactor for Retina output. Emulate mobile user agents for responsive screenshots.

Configurable wait

Wait for network idle, specific selectors, or a fixed delay. Control exactly when the screenshot is taken.

Use Cases

What developers build with a screenshot API.

Link preview thumbnails

Show URL previews in your app — chat, CMS, bookmarks, RSS readers. Capture on-demand or on a schedule.

Competitor monitoring

Screenshot competitor pages on a cron job. Track design changes, pricing updates, and content shifts over time.

Archiving & compliance

Full-page captures for legal records, audit trails, or web archive projects. Timestamped, immutable CDN URLs.

QA & visual regression

Capture staging URLs before and after deploys. Compare screenshots to catch visual regressions in CI.

Social sharing cards

Generate thumbnails of user-submitted URLs for social feeds, directories, and showcase pages.

Documentation & tutorials

Auto-capture screenshots of live apps for docs. No more outdated manually-taken screenshots.

Integration

One endpoint. Any URL.

POST a URL, get back a CDN-hosted image. Configure viewport, format, quality, wait strategy, and device emulation.

# Capture a URL screenshot
curl -X POST https://api.rendshot.ai/v1/screenshot \
  -H "Authorization: Bearer rs_live_..." \
  -d '{
    "url": "https://example.com",
    "width": 1280,
    "height": 720,
    "format": "png",
    "full_page": false
  }'

# → { "url": "https://assets.rendshot.ai/img/abc123.png" }

# Full-page capture with mobile viewport
curl -X POST https://api.rendshot.ai/v1/screenshot \
  -H "Authorization: Bearer rs_live_..." \
  -d '{
    "url": "https://example.com",
    "width": 390,
    "height": 844,
    "full_page": true,
    "device_scale_factor": 2
  }'
PNG, JPEG, WebP output
Full-page & viewport capture
Custom wait strategies
SSRF protection built-in

How We Compare

RendShot vs other screenshot APIs.

FeatureRendShotScreenshotOneUrlbox
API callPOST /v1/screenshotGET with query paramsGET with query params
AuthBearer token (API key)API key + secret signingAPI key
SSRF protection
Custom viewport320–3840px320–3840px320–3840px
Full-page capture
HTML renderingYes (same API)Separate endpointYes
Output formatsPNG, JPEG, WebPPNG, JPEG, WebPPNG, JPEG, WebP, PDF
CDN deliveryBuilt-in (Cloudflare R2)S3 integrationBuilt-in CDN
Template systemVariables + validation
Free tier100/month100 one-timeNo free tier
Price (10k/mo)$19$39$99

RendShot's unique advantage: A unified API for both URL screenshots and HTML-to-image rendering. One API key, one SDK, one billing — whether you're capturing live pages or generating images from templates.

Security

SSRF protection you don't have to build.

Accepting user-submitted URLs is dangerous without proper validation. RendShot handles this for you.

DNS validation

Both A and AAAA records are checked before any connection is made. Private IPs are blocked at the DNS level.

Private IP blocking

10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8, and IPv6 link-local addresses are all blocked.

Cloud metadata blocked

AWS metadata endpoint (169.254.169.254), GCP, Azure, and other cloud metadata services are explicitly blocked.

Fail-closed design

If DNS resolution fails or returns unexpected results, the request is rejected. No fallthrough to unsafe behavior.

FAQ

Common questions about screenshot APIs

What is a screenshot API?

A screenshot API is a service that captures images of web pages programmatically. Instead of opening a browser, navigating to a URL, and taking a screenshot manually, you send an HTTP request with the URL and get back an image. RendShot uses a managed Chromium browser pool to render pages and return CDN-hosted image URLs.

Can I capture pages behind authentication?

No. RendShot can only capture public URLs. This is by design — it prevents credential leakage and simplifies the security model. For pages behind auth, consider using RendShot's HTML rendering endpoint instead: render the page server-side and send the HTML to /v1/image.

How does SSRF protection work?

Before fetching any URL, RendShot performs DNS resolution and validates both A and AAAA records. Private IPs (10.x, 172.16.x, 192.168.x, localhost), link-local addresses, and cloud metadata endpoints are blocked. This makes it safe to accept user-submitted URLs without risk of internal network scanning.

What wait strategies are available?

RendShot supports waiting for network idle (no pending requests for 500ms), waiting for a specific CSS selector to appear in the DOM, or a fixed delay in milliseconds. The default is network idle, which works for most pages.

Can I capture the full scrollable page?

Yes. Set fullPage: true in your request. RendShot will capture the entire page height, not just the viewport. The maximum pixel budget is 16.7 million pixels (e.g., 1920×8700). For very long pages, consider setting a maximum height.

How does this differ from RendShot's HTML rendering?

Screenshot API (POST /v1/screenshot) captures a live URL — it fetches the page, runs JavaScript, loads external resources, then captures. HTML rendering (POST /v1/image) renders your own HTML/CSS without fetching any external URL. Use screenshot for live pages, HTML rendering for templates and generated content.

Capture any URL. One API call.

100 free screenshots per month. SSRF protection included. No credit card required.