Website screenshots

Website screenshots for thumbnails, previews and social cards

Turn a URL into a preview image sized exactly for the surface it will appear in.

website screenshot api · request and resultPAGECAPTURE / 01
TypeScript
// A 1200×630 social card, ready to upload
const response = await fetch("https://api.pagecapture.dev/v1/take", {
  method: "POST",
  headers: {
    "X-Access-Key": process.env.PAGECAPTURE_KEY!,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    url: "https://example.com/post/hello",
    viewport_device: "og_image",
    format: "webp",
    block_cookie_banners: true,
    cache: true,
    cache_ttl: 86400,
  }),
});

const card = Buffer.from(await response.arrayBuffer());
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

Social card preset

A 1200×630 device preset at 2× — the size every platform expects.

Banners removed

Consent overlays and chat widgets stripped before the shot, so the thumbnail shows the page.

Cache what repeats

A thumbnail regenerated on every page view is billed once per TTL, not once per view.

WebP and AVIF

Smaller files for the same preview, without a second processing step in your app.

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

How do I keep thumbnails from going stale?

Set cache_ttl to how long a preview may lag reality — a day is common. Hits inside the window are free; the first request after it re-renders.

Can I write straight to my CDN bucket?

Yes. Set store=true with a saved storage configuration and response_type=empty, and the object lands in your bucket without passing through your app.

What about pages that block automation?

We apply the evasions consistent with ordinary navigation and do not solve CAPTCHAs. A page determined to block automated browsers will still block ours.