Capture any webpage as a pixel-perfect PDF or PNG with a single HTTP request. No browser automation to maintain. No captchas. Just ship.
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
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"}'
Capture a webpage as PNG or PDF. Returns raw binary — set Accept: image/png or Accept: application/pdf based on the format you want.
| Field | Type | Description |
|---|---|---|
| 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. |
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
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.
Create an account and receive an API key instantly. No email verification needed. Free tier gives 50 captures/month.
| Field | Type | Description |
|---|---|---|
| email required | string | Your email address. Used to identify your account. Duplicates are rejected. |
curl -X POST https://pageproof.b9acfb8.p.egbe.app/api/users \
-H "Content-Type: application/json" \
-d '{"email":"developer@yourcompany.com"}'
{
"message": "Account created",
"apiKey": "pp_549941e9204bf336f5270d606bb1391c",
"plan": "free",
"capturesRemaining": 50
}
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.
Need more? Overage pricing: $0.005 per capture beyond your plan limit. No separate overage limit — captures just cost more.
Perfect for evaluating the API
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