Intro Auth POST /capture POST /users Rate Limits Pricing SDKs

API Reference

Capture any webpage as a pixel-perfect PDF or PNG with a single HTTP request. No browser automation to maintain. No captchas. Just ship.

Introduction

PageProof is a REST API that renders any URL using a headless Chromium browser and returns a PNG screenshot or PDF document. Authentication is via API key in the Authorization header. All responses are raw binary (image or PDF) or JSON for error/user responses.

Base URL: https://pageproof.b9acfb8.p.egbe.app

All endpoints: /api/capture  |  /api/users

Authentication

Include your API key in every request using the Authorization header:

Authorization: Bearer YOUR_API_KEY

Free accounts get 50 captures/month. Your API key is returned immediately when you sign up — no email verification required.

To get an API key, use the signup form below or run:

curl -X POST https://pageproof.b9acfb8.p.egbe.app/api/users \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com"}'

POST /api/capture

Capture a webpage as PNG or PDF. Returns raw binary — set Accept: image/png or Accept: application/pdf based on the format you want.

POST /api/capture

Request Body

FieldTypeDescription
url required string The fully-qualified URL to capture. Must include https:// or http://.
format "png" | "pdf" default: "png" — Output format. PNG for screenshots, PDF for full documents.
fullPage boolean default: false — When true, captures the entire scrollable page. When false, captures only the viewport.

Example Request

curl -X POST https://pageproof.b9acfb8.p.egbe.app/api/capture \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://example.com",
    "format": "png",
    "fullPage": false
  }' \
  --output screenshot.png

Response

Returns raw binary with Content-Type: image/png or Content-Type: application/pdf. HTTP 200 on success. HTTP 400 if the URL is invalid or unreachable. HTTP 429 if your plan's capture limit is exceeded.

Try it

Results will appear here

POST /api/users

Create an account and receive an API key instantly. No email verification needed. Free tier gives 50 captures/month.

POST /api/users

Request Body

FieldTypeDescription
email required string Your email address. Used to identify your account. Duplicates are rejected.

Example Request

curl -X POST https://pageproof.b9acfb8.p.egbe.app/api/users \
  -H "Content-Type: application/json" \
  -d '{"email":"developer@yourcompany.com"}'

Success Response (201)

{
  "message": "Account created",
  "apiKey": "pp_549941e9204bf336f5270d606bb1391c",
  "plan": "free",
  "capturesRemaining": 50
}

Error Responses

  • 400 — Missing or invalid email format
  • 409 — Email already registered
  • 500 — Server error

Get Your Free API Key

Your API key will appear here

Rate Limits

All plans are rate-limited by monthly capture count, not by requests-per-second. This means you can burst at any time — you're limited by total captures per calendar month.

Free
50/mo
$0/mo
Starter
500/mo
$12/mo
Pro
2,000/mo
$29/mo

Need more? Overage pricing: $0.005 per capture beyond your plan limit. No separate overage limit — captures just cost more.

Pricing

Free

$0 /mo
50 captures/month

Perfect for evaluating the API

API access included

Pro

$29 /mo
2,000 captures/month
Subscribe

SDK Examples

Works with any HTTP client. Here are examples in popular languages:

// Node.js — capture a screenshot
const response = await fetch('https://pageproof.b9acfb8.p.egbe.app/api/capture', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json',
    'Accept': 'image/png'
  },
  body: JSON.stringify({
    url: 'https://example.com',
    format: 'png',
    fullPage: false
  })
});

const buffer = await response.arrayBuffer();
require('fs').writeFileSync('screenshot.png', Buffer.from(buffer));
console.log('Screenshot saved!');
# Python — capture a screenshot
import requests

response = requests.post(
    'https://pageproof.b9acfb8.p.egbe.app/api/capture',
    headers={
        'Authorization': 'Bearer YOUR_API_KEY',
        'Content-Type': 'application/json',
        'Accept': 'image/png'
    },
    json={
        'url': 'https://example.com',
        'format': 'png',
        'fullPage': False
    }
)

with open('screenshot.png', 'wb') as f:
    f.write(response.content)
print('Screenshot saved!')
# cURL — capture a screenshot
curl -X POST https://pageproof.b9acfb8.p.egbe.app/api/capture \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: image/png" \
  -d '{"url":"https://example.com","format":"png","fullPage":false}' \
  -o screenshot.png

# cURL — capture as PDF
curl -X POST https://pageproof.b9acfb8.p.egbe.app/api/capture \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/pdf" \
  -d '{"url":"https://example.com","format":"pdf","fullPage":true}' \
  -o document.pdf