Screenshot API pricing

What a screenshot API costs when failures are free

The unit that decides your bill is a successful, non-cached capture. Everything else — retries you did not ask for, timeouts, a page that answered 500 — costs nothing here, so the table below is smaller than the request count you send.

screenshot api pricing · request and resultPAGECAPTURE / 01
Capture, then reconcile what it cost
# 1. Capture. The response header carries the request id.
curl -G https://api.pagecapture.dev/v1/take \
  -H "X-Access-Key: $PAGECAPTURE_KEY" \
  --data-urlencode "url=https://example.com" \
  -d "format=png" \
  -D headers.txt -o page.png

# 2. Ask what that single request was charged.
REQUEST_ID=$(grep -i '^x-request-id:' headers.txt | tr -d '\r' | cut -d' ' -f2)
curl https://api.pagecapture.dev/v1/requests/$REQUEST_ID \
  -H "X-Access-Key: $PAGECAPTURE_KEY"

# 3. Ask what the period looks like so far.
curl https://api.pagecapture.dev/v1/usage \
  -H "X-Access-Key: $PAGECAPTURE_KEY"
Capture result
succeeded
https://example.com
Noma
Shop now
NEW COLLECTION

Objects for slower mornings.

Thoughtful essentials, made in small batches from natural materials.

Explore the collection
No. 01 · Hinoki
PLANT-BASEDMADE IN SMALL BATCHESREFILLABLE
Artifact
PNG · 1440×900
Billing
1 credit
Engine
stable

A credit is a success

The ledger entry is written in the same transaction that marks the request succeeded. A failed capture cannot produce one — including when the failure is ours.

Cache hits are free

A repeat of the same render spec inside your own organization is served from cache and never charged. Pages you capture on a schedule get cheaper, not more expensive.

Overage is capped by you

Overage is opt-in, billed in blocks of a thousand credits, and stops at the hard limit you set. Off by default, it simply refuses the request instead of growing the invoice.

Reconcilable from the API

GET /v1/usage returns the period counters, and every request reports its own billable status — so a monthly figure can be checked against the requests that produced it.

No seats, no per-format surcharge

PNG, WebP, PDF, Markdown and HTML cost the same credit. A second engineer on the account costs nothing.

What this costs here

Priced on successful captures that miss cache

Every number in this table is computed from the published plans — failures and organization-scoped cache hits are removed before the plan is chosen, because they are not billable.

ScenarioBillable successesSmallest included planPublished monthly price
1,000 screenshots882Basic$10.00
10,000 screenshots8,820Growth$47.00
50,000 screenshots44,100Scale$155.00

Assumes 10% cache hits and 2% failures. Change either assumption and the billable count changes with it — that is the point of charging for success.

What these vendors publish

Their own numbers, not our summary of them

These figures are quoted from each vendor's own pricing page, with the date we last checked it. They are not converted to our billing unit, because they do not measure the same thing.

ScreenshotOne

A complete, developer-friendly specialist API for screenshots.

Free tier
100 screenshots per month
Entry plan
US$ 17 / 2,000 screenshots per month
10,000 screenshots
US$ 79 per month
50,000 screenshots
US$ 259 per month

Published by the vendor, checked 2026-08-14.

screenshotone.com

Urlbox

High-fidelity capture with an emphasis on evidence, compliance and specialist support.

Entry plan
US$ 19 / up to 2,000 renders per month
5,000 renders
US$ 49 per month
15,000 renders
US$ 99 per month

Published by the vendor, checked 2026-08-14.

urlbox.com

ApiFlash

Simplicity and low cost on top of AWS Lambda.

Free tier
100 screenshots per month
Entry plan
US$ 7 / 1,000 screenshots per month
10,000 screenshots
US$ 35 per month
100,000 screenshots
US$ 180 per month

Published by the vendor, checked 2026-08-14.

apiflash.com

CaptureKit

Screenshot plus extraction and AI features at an aggressive price.

Free tier
100 credits
10,000 credits
US$ 29 per month
50,000 credits
US$ 89 per month

Published by the vendor, checked 2026-08-14.

capturekit.dev

These names are trademarked by their respective owners and mentioned only to describe the comparison people are searching for. No affiliation is claimed.

Questions this raises

Is a failed capture billed?

No error code in the public catalog is billable, and the test suite asserts it. That covers our own infrastructure failures too — an internal error is not your cost.

What counts as a cache hit?

A request whose render spec hashes to one your organization already produced, inside the cache_ttl you asked for. Options that do not change a pixel — webhook URL, attachment name, external identifier — are excluded from the hash, so they do not force a new capture.

Do multi-capture jobs cost more than one credit?

Yes. A job that produces several artifacts consumes one credit per successful non-cached capture, which is why the table above asks for captures rather than requests.

What happens when the included credits run out?

With overage off, the request fails with screenshots_limit_reached and is not charged. With overage on, it continues until your hard limit and the extra credits are invoiced in blocks of a thousand.

Can I be charged twice for the same request?

No. The ledger has a unique constraint per request, so a redelivered webhook or a retried batch cannot double-bill. That is a database guarantee, not a check that runs before writing.