Skip to content
AAPIScreenshot

Clean website screenshots, in one API call

Capture any page as a crisp PNG, JPEG or WebP in seconds. Cookie banners removed automatically, no browser infrastructure to run.

100 free screenshots, no credit card

curl https://api.apiscreenshot.com/v1/screenshot \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://en.wikipedia.org/wiki/Main_Page", "fullPage": true }' \
  -o screenshot.png
A screenshot of Wikipedia captured by the APIScreenshot API
→ screenshot.png · 200 · image/png

ONE CALL, ONE IMAGE

A URL in, the screenshot back, in any language

Send one request with your key and the response body is the image itself. No SDK to install, no job to poll, no orchestration on your side.

  • Same call from cURL, Node or Python — your key as a Bearer token
  • The response body is the image — save it, upload it, stream it
  • PNG, JPEG or WebP, any viewport, full page or one element
  • Cached results and failed requests are never billed
curl https://api.apiscreenshot.com/v1/screenshot \
  -H "Authorization: Bearer sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com", "fullPage": true }' \
  -o screenshot.png

CAPTURE ANYTHING

A live URL or your own HTML, captured pixel-perfect

Point it at any page, or send your own HTML, and get back exactly what a real browser renders. Capture the full page, or pinpoint a single element.

  • Full page or a single element — fullPage, or a CSS selector
  • Render your own HTML for receipts, OG images and email previews
  • Any device or viewport, retina-crisp with deviceScaleFactor
A screenshot of Wikipedia captured by the APIScreenshot API
screenshot.png returned by the call above

CLEAN BY DEFAULT

Every screenshot is presentation-ready

Cookie banners, consent popups and overlays are removed automatically before every capture, so your screenshots show the page, not the pop-up. There's nothing to configure.

A web page captured with a cookie-consent banner covering the content
Before · banner covers the page
The same web page captured clean, with the consent banner removed
After · clean by default

WHAT YOU GET

Everything a screenshot service should do, without running one

Any device or viewport, retina-crisp

Frame the page exactly as desktop, tablet or mobile users see it, sharp on retina. Set the viewport and bump deviceScaleFactor to 2 or 3.

View docs

Any format for the web: PNG, JPEG, WebP

Lossless PNG by default, or smaller JPEG and WebP with a quality setting for thumbnails, previews and fast-loading pages.

View docs

A URL or your own HTML → an image

Capture a live url, or send your own html and get back exactly that markup rendered. Good for receipts, OG images and email previews.

View docs

Safe to point at any URL

Requests to private, internal and loopback addresses are blocked by default, so a screenshot URL can never become a window onto your network.

View docs
{
  "mcpServers": {
    "apiscreenshot": {
      "url": "https://mcp.apiscreenshot.com",
      "headers": { "Authorization": "Bearer sk_live_..." }
    }
  }
}

Your AI agent can screenshot the web

Point Claude or any MCP client at APIScreenshot and it gets a native screenshot tool. Drop this in and your agent can capture any page. No glue code.

View docs

USE CASES

One endpoint, a lot of jobs

The same /v1/screenshot call powers each of these. Pick the one that fits and the page walks you through it.

PRICING

Pay per screenshot. Start free.

Every account starts with 100 free screenshots, no credit card. Cached results and failed requests are never billed.

Starter

Your first screenshots in production.

$9/ month

3,000 screenshots included · Never billed past your plan

Start free
  • 3,000 screenshots / month
  • Clean shots with banners removed
  • PNG, JPEG & WebP, retina & device viewports
  • Capture a live URL or your own HTML
  • MCP server for AI agents
  • Never billed past your plan
Most popular

Pro

When your screenshot volume climbs.

$29/ month

20,000 screenshots included · Never billed past your plan

Start free
  • 20,000 screenshots / month
  • Everything in Starter
  • Higher rate limits for steady volume
  • One screenshot = one credit; cached & failed never billed
  • Never billed past your plan

Scale

High-volume capture, lowest unit price.

$99/ month

100,000 screenshots included · Never billed past your plan

Start free
  • 100,000 screenshots / month
  • Everything in Pro
  • Highest rate limits
  • Lowest price per screenshot
  • Never billed past your plan

FAQ

Questions, answered

Still stuck? The docs cover every parameter, or reach us at support@apiscreenshot.com.

POST to /v1/screenshot with `{ "url": "https://example.com" }` and your key as `Authorization: Bearer sk_live_...`. The response body is the image bytes (content-type: image/png) — save it to a file, upload it to storage, or stream it straight to your user. One call, one image, no polling.

Yes. Set `"fullPage": true` and APIScreenshot scrolls and stitches the entire scrollable page, not just what fits in the viewport. Leave it off (or false) to capture just the current viewport. You can also pass a CSS `selector` to capture a single element instead.

No — every screenshot is clean and presentation-ready by default. Before each capture APIScreenshot automatically removes cookie banners, consent popups and overlays: it clicks the "reject all" / "decline" button on the common consent-management platforms (OneTrust, Cookiebot, Quantcast, Didomi, Usercentrics, TrustArc, Osano, CookieYes, Complianz and more), hides a curated list of cookie/consent/overlay elements, and lifts any scroll-lock the banner added, so your screenshot shows the page, not the pop-up. A page-health guard reverts the clean-up and captures the original if hiding ever left the page near-empty, so you never get a blank image. You can pass `hideSelectors` to remove your own extra elements, `"blockAds": true` to also drop common ad slots, or `"blockCookieBanners": false` if you ever want banners left in. Honest caveats: on "consent-or-pay" paywalls the wall is visually hidden, not legally consented to; and heavily bot-protected sites (aggressive CAPTCHAs / fingerprinting) are out of scope for now, though a stealth/proxy tier is on the roadmap.

Yes. Instead of `url`, send a `html` string and APIScreenshot renders exactly that markup in a real browser engine, then returns the screenshot. It is ideal for receipts, social/OG images, email previews and any HTML you generate on the fly — no need to host a page first.

Output is PNG (lossless, the default), or JPEG or WebP with a quality setting when you want smaller files — WebP gives the best size-for-quality on the web. You control the capture with `viewport` (width and height for desktop, tablet or mobile) and `deviceScaleFactor` (set 2 or 3 for crisp retina images).

No. By default each screenshot is rendered transiently and the bytes are streamed straight back to you; nothing is persisted on our side. Optional R2-backed hosting with signed URLs is on the roadmap for when you want us to host the image for you, but until you opt in, we keep nothing.

Yes — APIScreenshot ships a drop-in MCP (Model Context Protocol) server. Point Claude, or any MCP-capable client, at it and the agent gets a native `screenshot` tool: it can capture any web page or rendered HTML as part of a workflow, no glue code required.

One screenshot = one credit. Each screenshot is one render of browser time, so usage is metered per screenshot. Cached results and failed requests are never billed. Each plan includes a monthly bucket of screenshots; when you reach it, requests are hard-capped (HTTP 402) rather than billed for overage — upgrade to a larger plan to keep going.

Make your first call today

One endpoint, 100 free screenshots to start. No credit card.