ScreenshotOne alternative

A ScreenshotOne alternative with a contract you can inspect

PageCapture is an independent implementation of the same core job: turn a webpage into a production-ready artifact. Compare the parts your integration depends on before moving traffic.

screenshotone alternative · request and resultPAGECAPTURE / 01
Migration smoke test
curl -G https://api.pagecapture.dev/v1/take \
  -H "X-Access-Key: $PAGECAPTURE_KEY" \
  --data-urlencode "url=https://example.com" \
  -d "format=png" \
  -d "full_page=true" \
  -d "block_cookie_banners=true" \
  -o pagecapture.png
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 small public surface

Take, animate, bulk and usage cover the core workflow. OpenAPI 3.1 is the source of truth for every option and error.

Sync or async delivery

Receive bytes directly, poll a durable request, store in S3 or accept a signed webhook — without changing the render options.

Billing after success

A credit is recorded only after the requested artifact succeeds. Failed requests and organization-scoped cache hits are not charged.

A migration you can test

Run both providers against your own fixture set, compare the artifacts and move traffic gradually. No compatibility claim replaces that test.

Parameter names carried over, not improved

viewport_mobile, full_page_slice_height, block_banners_by_heuristics and the rest keep the names you already have in your query strings. A parameter renamed for taste is an adoption bug, so we did not rename any.

Error codes are the contract

The error_code is stable and the HTTP status is derived from it — including 400 for authentication, quota and rate limit, so a client that treats 401 as 'refresh the credential' does not start seeing 401 from us.

What we do differently, stated plainly

Signed links accept an optional expires with a maximum validity; the reference has none. IP location and GPU rendering are not serving traffic here yet. Both are on the pricing page, not buried in a footnote.

Pricing

One credit per successful capture. Failures and cache hits are free.

Free
$0
100 credits
Basic
$10
2,000 credits
Growth
$47
10,000 credits
All plans

Questions this raises

Is PageCapture affiliated with ScreenshotOne?

No. PageCapture is an independent product with its own implementation. ScreenshotOne is a trademark of its owner and is mentioned only to describe the comparison people are searching for.

Is it a drop-in replacement?

Do not assume that. The concepts and many option names are familiar, but you should map the documented contract, change the base URL and key, then validate your own representative pages before shifting production traffic.

What should I compare first?

Start with the pages that are hardest for your current pipeline: long pages, authenticated views, custom fonts, lazy content, webhooks and storage. Then compare errors, rate limits and the billing result — not only the final PNG.

What is missing today?

There is no managed proxy pool behind ip_country_code and no GPU pool behind request_gpu_rendering, and checkout is not wired to a merchant of record yet. If your migration depends on any of those, this is not the moment to move.

How do I know a capture was charged?

Every request carries a billable status in the log and in GET /v1/requests/{id}, backed by a ledger entry that cannot exist without a successful, non-cached capture behind it. Reconcile with GET /v1/usage before and after your test batch.