Webpage to PDF

Archive a webpage as a PDF you can keep

When a PDF is a record, the file alone is not enough — you need what was captured, from where, and when.

webpage to pdf api · request and resultPAGECAPTURE / 01
TypeScript
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/terms",
    format: "pdf",
    pdf_print_background: true,
    response_type: "json",
    metadata_page_title: true,
    metadata_http_response_status_code: true,
    external_identifier: "terms-2026-07-31",
    store: true,
    storage_config_id: "sto_01...",
  }),
});

const { result_url, page_title, http_response_status_code } = await response.json();
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

Provenance in the response

Final URL, HTTP status, page title and capture timestamp come back with the file.

Your bucket, your retention

Archives belong in storage you control, not in a temporary cache.

Correlation id

external_identifier travels through logs, JSON and webhook, so the archive maps to your record.

Full audit log

Every request keeps its options, duration, cache and billing disposition for your plan's retention window.

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

Do you keep a copy of the PDF?

Only briefly. Without caching, artifacts are deleted after a short window. If you need to keep it, send it to your own bucket.

Can I capture a page that redirects?

Yes. Redirects are followed up to ten hops, each revalidated against the egress policy, and the final URL is reported back.

Is the capture timestamped?

Yes — accepted_at and completed_at are in the request log and in GET /v1/requests/{id}.