200 free screenshots/month

Website screenshots via API, in seconds

A fast, reliable screenshot API with ad blocking, PDF export, and smart caching. One API call, one screenshot. SDKs for every platform.

No credit card required PNG · JPEG · WebP · PDF SDKs for 10 languages
capture
request.sh
$ curl -H "x-api-key: sk_live_xxxxx" \
  "https://screenshotapi.to/api/v1/screenshot
   ?url=https://example.com
   &type=png
   &blockAds=true
   &removeCookieBanners=true"

200 OK · image/png · 412ms
200 free screenshots/month

Website screenshots
via API, in seconds

A fast, reliable screenshot API with ad blocking, PDF export, and smart caching. One API call, one screenshot. SDKs for every platform.

Terminal
curl -H "x-api-key: sk_live_xxxxx" \
  "https://screenshotapi.to/api/v1/screenshot
   ?url=https://example.com
   &type=png
   &blockAds=true
   &removeCookieBanners=true"

The screenshot API that respects your time

Everything you need to capture the web — from ad blocking and caching to HTML rendering and stealth mode.

Simple REST API

One GET request is all it takes. Pass a URL, get back a screenshot. Works with any HTTP client.

Multiple Formats

Export as PNG, JPEG, WebP, or PDF. Control quality settings. Full-page or viewport captures.

Ad Blocking

Remove ads, trackers, and cookie banners automatically. Clean screenshots every time.

Response Caching

Smart caching with configurable TTL. Cached responses are served instantly and don't count against your quota.

HTML Rendering

Render raw HTML to images or PDFs. Perfect for OG images, invoices, and email previews.

Smart Wait Strategies

Wait for network idle, CSS selectors, or fixed delays. Capture dynamic content reliably.

Stealth Mode

Bypass bot detection with user agent rotation and anti-fingerprinting. Capture protected sites.

Flexible Pricing

Monthly subscriptions for predictable costs or credit packs for pay-as-you-go. 200 free screenshots/month.

Up and running in minutes

Three simple steps to your first screenshot.

1

Create an account

Sign up and get 200 free screenshots per month. No credit card required.

2

Generate an API key

Create a key in your dashboard with one click. Use it in the x-api-key header.

3

Take screenshots

Make a GET request with a URL. Get back a screenshot in PNG, JPEG, WebP, or PDF.

Flexible pricing for every scale

Start free with 200 screenshots/month. Upgrade as you grow.

Free

$0

200 screenshots/month

Get started

Starter

$19/mo

5,000 screenshots/month

Choose plan
Most popular

Growth

$49/mo

25,000 screenshots/month

Choose plan

Scale

$149/mo

100,000 screenshots/month

Choose plan

SDKs and integrations for every stack

Official libraries for every major language, plus step-by-step guides for 30+ frameworks, platforms, and automation tools.

Start capturing screenshots today

Create a free account and get 200 screenshots per month. No credit card required.

Create free account

Screenshot API questions, answered

Straight answers about how the API behaves in production — limits, formats, failure handling, and cost.

What is a screenshot API?

A screenshot API renders a web page in a real browser on hosted infrastructure and returns the result as an image or PDF over HTTP. Instead of installing and operating Chrome yourself, you send one authenticated request containing a URL and get back a PNG, JPEG, WebP, or PDF. ScreenshotAPI's endpoint is https://screenshotapi.to/api/v1/screenshot and authenticates with an x-api-key header.

Should I use a screenshot API or run Puppeteer myself?

Run Puppeteer or Playwright yourself when you already operate browser infrastructure, need fully scripted control of a page, or must keep rendering inside your own network. The recurring cost of self-hosting is rarely the library — it is pinning a Chrome build, shipping the fonts and codecs a page expects, isolating crashes, capping memory, surviving bot detection, and retrying transient failures. A hosted API moves that operational surface off your roadmap and turns rendering into one HTTP call.

Compare ScreenshotAPI and Puppeteer →

Can I take a screenshot without an API key?

Yes. GET /api/v1/public/screenshot?url=... returns an image with no API key and no signup, at 8 requests per minute, with tighter caps and no PDF support. It is intended for a quick test or a low-volume embed; build production integrations on the authenticated endpoint. A free account adds 200 screenshots per month and requires no credit card.

What image formats and page sizes are supported?

Set type to png, jpeg, webp, or pdf. Viewport width goes up to 1920 pixels and height up to 10000 pixels, and fullPage=true captures the entire scrollable page instead, ignoring the height parameter. The quality parameter accepts 1 to 100 and applies to JPEG and WebP output.

How do I screenshot pages that load their content dynamically?

Three parameters control timing. waitUntil chooses the page load event to wait for and defaults to networkidle2, with load, domcontentloaded, and networkidle0 also available. waitForSelector blocks until a specific CSS selector appears in the DOM. delay adds a fixed pause of 0 to 30000 milliseconds. For single-page applications, waiting on a selector that only exists once your data has rendered is far more reliable than guessing a fixed delay.

Screenshotting single-page applications →

What happens when a capture fails?

Every render failure returns a stable error code you can branch on, together with a retryable flag, a human-readable message, a suggested fix, and a docsUrl. Transient faults are labelled explicitly: a 503 TARGET_RESOLUTION_UNAVAILABLE means the hostname could not be looked up at that moment, which is a fault on our side rather than a problem with your URL, and it returns retryAfterSeconds so you know how long to wait. Treating retryable: true as a retry with backoff removes most transient failures. Only successful captures consume your allowance.

How do I run many screenshots at once?

Screenshots are generated sequentially per API key, so pushing a large batch through a single key queues the work rather than parallelising it. For higher throughput, spread the batch across multiple API keys, or queue requests in your own worker and let each key drain its own share. Setting cacheTtl above zero serves identical repeat requests from cache within the window, which is the cheapest way to cut load on recurring captures.

What does ScreenshotAPI cost as usage grows?

The free tier is 200 screenshots per month, recurring rather than a trial, and it resets when your billing period rolls over. Starter is $19 per month for 5,000 screenshots, Growth is $49 for 25,000 and adds signed URLs, and Scale is $149 for 100,000 and adds priority support. Paid plans bill overage per screenshot instead of stopping at a hard cap, and one-time credit packs cover occasional bursts.

See full pricing and credit packs →

Every parameter is listed in the API documentation, and live availability is on the status page.