Skip to content

REST API · 200 free screenshots/month · No credit card

Screenshot API That Just Works

Capture pixel-perfect website screenshots from any URL in under 2 seconds. Full-page, custom viewports, element-level. PNG, JPEG, WebP, PDF. Built for developers who hate maintaining headless Chrome.

One HTTP call. Three languages.

Same endpoint, same parameters. Drop it into any stack.

cURL

curl "https://captureapi.dev/api/v1/screenshot\
  ?url=https://example.com\
  &width=1280&height=720\
  &full_page=true&format=png" \
  -H "X-API-Key: cap_your_key" \
  -o screenshot.png

Python

import requests

resp = requests.get(
    "https://captureapi.dev/api/v1/screenshot",
    params={
        "url": "https://example.com",
        "width": 1280, "height": 720,
        "full_page": True, "format": "png",
    },
    headers={"X-API-Key": "cap_your_key"},
)
with open("screenshot.png", "wb") as f:
    f.write(resp.content)

Node.js / TypeScript

import fs from "node:fs";

const params = new URLSearchParams({
  url: "https://example.com",
  width: "1280", height: "720",
  full_page: "true", format: "png",
});

const res = await fetch(
  `https://captureapi.dev/api/v1/screenshot?${params}`,
  { headers: { "X-API-Key": "cap_your_key" } },
);
fs.writeFileSync("screenshot.png", Buffer.from(await res.arrayBuffer()));

Everything a serious screenshot API needs

Full-page screenshots

Capture the entire scrollable page, not just the viewport. Auto-handles lazy-loaded images, infinite scroll triggers, and sticky headers.

Custom viewports

Any width × height combination from mobile (320px) to 4K (3840px). Pre-set device profiles for iPhone, iPad, Android, desktop.

Element capture

Pass a CSS selector to screenshot just one element. Perfect for chart exports, social-card previews, or component testing.

Multiple formats

PNG (lossless), JPEG (small files), WebP (modern), PDF (multi-page documents). Quality control on JPEG/WebP from 1 to 100.

Wait conditions

Wait for network idle, a specific selector, or a custom JavaScript condition before capture. Eliminates flaky screenshots.

Cookie + auth support

Inject cookies, localStorage, or basic auth headers to screenshot logged-in pages, dashboards, or member-only content.

Block ads + cookies

Built-in ad blocker and cookie banner dismisser. Get clean marketing screenshots without manual cropping.

Geo-routed regions

Screenshot from US, EU, or APAC origin to capture geo-targeted content correctly.

Common screenshot API use cases

Social card generation

Generate Open Graph images on demand from a template URL. Replaces server-side puppeteer with a 50ms HTTP call. See our /blog/og-images-guide for the full pattern.

Visual regression testing

Drop CaptureAPI into Playwright or Cypress to grab pixel-stable screenshots from a clean cloud environment. No more flaky local screenshots due to font rendering or zoom level.

PDF document generation

Render an HTML invoice, quote, or report into a paginated PDF in one call. No headless Chrome on your servers, no Puppeteer maintenance.

Marketing thumbnails

Auto-generate website thumbnails for directory listings, blog cards, or competitor monitoring dashboards.

SEO + accessibility audits

Capture before/after screenshots when running Lighthouse, axe, or other audit tools. Export them to client reports.

QA automation

Take screenshots inside CI/CD pipelines without provisioning Selenium grids or maintaining headless browser containers.

Screenshot API pricing comparison

Compared to the most-cited alternatives at our launch volume tier.

ProviderEntry priceNotes
CaptureAPI (us)$9/mo for 5k200 free/month, full Chromium, PDF + WebP included.
Urlbox$9/mo for 1kWe match the price, deliver 200 free vs none.
ScreenshotOne$17/mo for 2kWe're 47% cheaper at the same volume.
ApiFlash$29/mo for 1kSame volume, 1/3 the price.
Browserless$50/mo (BYO Puppeteer)We're a managed REST API, no Puppeteer code.
Roll your own (AWS Lambda + Puppeteer)~$30/mo + maintenanceWe handle Chromium upgrades, IP rotation, queue scaling.

Prices verified May 2026 from each provider's public pricing page. Volumes equalized to ~5,000 screenshots/month.

Frequently asked questions

What is a screenshot API?v

A screenshot API is an HTTP service that takes a URL or HTML payload and returns an image (PNG, JPEG, WebP) or PDF rendered by a real browser. It removes the need to run headless Chromium yourself, manage memory leaks, rotate IPs to avoid bot blocks, or queue concurrent requests.

How fast is CaptureAPI?v

Median response time is under 2 seconds for a typical 1280x720 PNG of a public marketing page. Heavy SPAs with many third-party scripts can take 4-6 seconds; pages behind CDNs in your region typically resolve in 1.2 seconds.

Can I screenshot a logged-in page?v

Yes. Pass cookies, localStorage values, or basic-auth headers in the request body. We support session cookies, Authorization Bearer tokens, and custom headers. We never store auth material between requests.

Does CaptureAPI render JavaScript?v

Yes. Every capture runs in a real Chromium 130+ instance with full JavaScript, WebGL, web fonts, and modern CSS support. You can also disable JavaScript per-request if you need a fast static snapshot.

What's the difference between screenshot and PDF?v

Screenshots return a single image at the captured viewport. PDFs return a paginated document, optionally multi-page, with print-friendly CSS applied. Use screenshots for cards and previews; use PDFs for invoices, reports, and printable documents.

Is there a free tier?v

Yes — 200 screenshots per month at 720p, PNG only, with a small CaptureAPI watermark. No credit card required to start. Paid plans from $9/month remove the watermark, raise the resolution to 4K, add PDF / WebP / JPEG, and lift rate limits.

Can I cache screenshots?v

Yes. Pass cache_ttl (1-86400 seconds) and we'll return the cached image at zero cost on subsequent identical requests. Default cache is 0 (always fresh).

How do you handle bot blocking?v

We rotate residential and datacenter IPs across multiple regions, use realistic browser fingerprints, and respect robots.txt by default. For sites that aggressively block automation, switch on the stealth flag (paid plans).

Stop maintaining Puppeteer.

Get a free API key in 30 seconds, take 200 screenshots/month forever, scale to 100k for $79.