Skip to content
Aback Screenshot

Website screenshots through a documented API

Submit a public address, choose the output you need, and receive a reproducible PNG or JPEG. Every request is checked against a strict address policy, bounded by documented limits and metered against your plan.

Capture a page

Submit a public address and receive a PNG or JPEG. Every request is checked against the address policy before a browser opens. The page is visited from our servers, so the site you submit sees a request from us and may load its own resources.

Public http and https pages only. Local and private addresses are rejected.

Capture options

Width 320 to 1920 pixels, height 240 to 1080 pixels. The Free plan sets these limits; a paid plan raises them.

One request, one image

terminalbash
curl -X POST https://aback-screenshot.pages.dev/api/v1/captures \
  -H "Authorization: Bearer $ABACK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "format": "png",
    "width": 1280,
    "height": 800,
    "fullPage": false
  }'

Why developers choose Aback Screenshot

Safe by construction

Loopback, private, link-local and cloud metadata addresses are rejected before a browser opens, and the check is repeated on every redirect hop. Which subresources are inspected depends on the capture driver, and the security notes say exactly what each one enforces.

Predictable output

Format, viewport, device pixel ratio, readiness strategy, timeout and JPEG quality are the only options. Each one is enforced on the server and documented with its exact range.

Bounded and fast

Navigation time, output size, resource count, concurrency and retention all have hard limits, so a slow page never holds a worker and never blocks another customer.

Honest errors

Every failure carries a stable error code and a message that says what happened and how to fix it. Internal addresses, paths and stack traces never appear.

Common use cases

Link previews

Generate a thumbnail for a link when it is shared, with a fixed viewport so every card looks the same.

Documentation images

Capture a product page once and keep the image next to the guide, without running a browser on every build.

Visual checks

Point the same URL at a scheduled job and keep an image trail to compare against later.

Open graph images

Render the hero section of a page at a fixed width for social cards and rich link previews.

Change detection

Store a capture, then capture again later and compare the two images to spot a change.

Private previews

Share a capture with a short lived signed link instead of making the whole page publicly reachable.

How a capture works

1. The address is validated

The URL is parsed, the scheme is checked against the allow list, embedded credentials are rejected, and the host name is resolved. Every address the host maps to must be a public address. A host that answers with both a public and a private record is refused.

2. Redirects are followed under the same rules

Each hop is validated again. A redirect that points at a loopback or private address is stopped before the browser follows it.

3. The page is rendered in an isolated context

The capture runs in a fresh browser context with downloads, service workers and WebSockets disabled, and a hard deadline that cannot be extended by the target page.

4. The result is validated, stored and metered

The image type and size are checked, the bytes are written to private storage, and one usage event is recorded. A capture only counts against the quota when it succeeds.

Frequently asked questions

Any public page that loads over http or https. Local addresses, private networks, link-local ranges, cloud metadata endpoints and internal host names are rejected before the request is made.

Yes. The page is rendered by a real browser, so scripts run and the image shows what a visitor would see. Choose the network idle readiness strategy when a single page application needs a moment longer.

One hour by default. The image is stored privately and is reachable through a signed link that expires with it, or through your dashboard while the account is signed in.

The response carries a stable error code such as blocked_address, capture_timeout or navigation_failed, together with a short message that says what to change. Nothing internal is exposed.

No. Only a capture that produced a usable image counts against the monthly allowance. Validation failures, blocked addresses, timeouts and target site errors are recorded but not charged.

No. Aback Screenshot does not store passwords or cookies for the pages it visits, and it does not attempt to work around authentication, paywalls or bot protection.

Yes. The limit depends on the plan and is applied per API key or per account. Anonymous requests have the tightest limit. Every response carries the limit and the remaining allowance in the x-ratelimit-limit and x-ratelimit-remaining headers, and the values are also listed on the limits endpoint.

Open the pricing page and start a checkout. Payments are handled by Dodo Payments, and the plan is applied to your account when the payment webhook arrives, not when the browser returns.

Ready to capture?

Create an API key and make your first request in under a minute.