API Documentation

Base URL: https://pageaudit.grabshot.dev

Authentication

Pass your API key via the x-api-key header or key query parameter.

curl "https://pageaudit.grabshot.dev/v1/audit?url=https://example.com" \
  -H "x-api-key: pa_your_api_key"

Endpoints

GET /v1/audit

Run a full performance and SEO audit on a website. Returns scores, Core Web Vitals, meta tags, heading structure, image alt coverage, and actionable recommendations.

Parameters

ParamTypeRequiredDescription
urlstringYesWebsite URL to audit

Example

curl "https://pageaudit.grabshot.dev/v1/audit?url=https://stripe.com" \
  -H "x-api-key: pa_your_key"

Response

{
  "success": true,
  "url": "https://stripe.com",
  "statusCode": 200,
  "loadTimeMs": 2340,
  "pageWeight": { "totalBytes": 524288, "totalKB": 512, "breakdown": { ... } },
  "requests": { "total": 45, "byType": { "document": 1, "script": 12, ... } },
  "meta": {
    "title": "Stripe | Financial Infrastructure",
    "description": "...",
    "ogTitle": "...",
    "viewport": "width=device-width, initial-scale=1"
  },
  "headings": { "h1": { "count": 1, "texts": ["..."] }, ... },
  "images": { "total": 20, "withAlt": 18, "withoutAlt": 2, "altCoverage": "90%" },
  "mobile": { "hasViewport": true, "isResponsive": true },
  "coreWebVitals": { "lcp": "1200ms", "cls": "0.050", "ttfb": "180ms" },
  "score": 85,
  "grade": "B",
  "recommendations": [
    { "severity": "warning", "category": "accessibility", "message": "2 of 20 images missing alt text" }
  ]
}
GET /v1/demo/audit

Demo endpoint — same as /v1/audit but no authentication required. For testing purposes.

GET /v1/health

Health check endpoint. No authentication required.

curl "https://pageaudit.grabshot.dev/v1/health"

Code Examples

Node.js

const res = await fetch(
  'https://pageaudit.grabshot.dev/v1/audit?url=https://stripe.com',
  { headers: { 'x-api-key': 'pa_your_key' } }
);
const data = await res.json();
console.log(`Score: ${data.score}/100 (${data.grade})`);

Python

import requests

resp = requests.get(
    'https://pageaudit.grabshot.dev/v1/audit',
    params={'url': 'https://stripe.com'},
    headers={'x-api-key': 'pa_your_key'}
)
data = resp.json()
print(f"Score: {data['score']}/100 ({data['grade']})")

Rate Limits

PlanMonthly LimitRate Limit
Free25 requests10/min
Starter ($9/mo)500 requests30/min
Pro ($29/mo)5,000 requests60/min
Business ($79/mo)50,000 requests120/min