EuroGPSR
Free scan
HomeAPI Docs

Public API · v1

EuroGPSR API Documentation

Run EAA and GPSR compliance scans programmatically. REST endpoints over HTTPS, JSON request and response bodies, bearer-token authentication.

Get an API keySee plans

Bearer auth

Authorization: Bearer egpsr_...

JSON in / JSON out

No SDK required — plain HTTPS.

Pro plan only

API access included with Pro €79/mo.

Authentication

All authenticated endpoints expect an Authorization: Bearer egpsr_... header. Generate keys from the dashboard. Keys are shown only once — store them in a secret manager. Revoke compromised keys immediately; revocation takes effect on the next request.

Authorization: Bearer egpsr_live_4f2b...

Endpoints

POST/api/v1/scan

Run a new compliance scan

Request

curl -X POST https://eurogpsr.com/api/v1/scan \
  -H "Authorization: Bearer egpsr_..." \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example-store.com"}'

Response (200 OK)

{
  "scanId": "sc_01HX...",
  "status": "complete",
  "url": "https://example-store.com",
  "scannedAt": "2026-05-11T10:32:14.221Z",
  "pagesScanned": 4,
  "cms": "shopify",
  "scores": { "overall": 72, "accessibility": 81, "gpsr": 63 },
  "riskLevel": "medium",
  "issueCount": 14,
  "issues": [
    { "id": "img-missing-alt", "category": "accessibility",
      "severity": "high", "title": "Images missing alt text",
      "count": 12, "regulation": "EAA / WCAG 2.1" }
  ]
}
GET/api/v1/scans/{scanId}

Get full scan result

Request

curl https://eurogpsr.com/api/v1/scans/sc_01HX... \
  -H "Authorization: Bearer egpsr_..."

Response (200 OK)

{
  "scanId": "sc_01HX...",
  "status": "complete",
  "meta": { "url": "...", "scannedAt": "...", "pagesScanned": 4, "cms": "shopify" },
  "scores": { ... },
  "issues": [ /* full issue list with details + fixGuide */ ]
}
GET/api/v1/checkspublic

List all checks and versions

Request

curl https://eurogpsr.com/api/v1/checks

Response (200 OK)

{
  "scannerVersion": "0.2.0",
  "checksUpdatedAt": "2026-04-22",
  "totalChecks": 22,
  "checks": [
    { "id": "img-missing-alt", "version": 3, "regulation": "EAA / WCAG 2.1",
      "category": "accessibility", "changelog": [ ... ] }
  ]
}

Errors

Errors follow a uniform shape: { "error": "human-readable message" } with a meaningful HTTP status code.

400Missing or malformed `url`, invalid JSON, or scanning a private/loopback address.
401Missing `Authorization` header or invalid/revoked API key.
404Scan ID not found, or not owned by your API key.
429Plan quota exceeded for the current billing period.
500Unexpected server error. Safe to retry with exponential backoff.

Rate limits & quotas

Pro accounts include 1,000 scans per month and up to 5 domains. Scans exceeding the monthly quota return 429 until the next billing cycle. For higher volume or white-label usage, get in touch.

Ready to integrate?

Generate an API key from the dashboard and you can start running scans in under 5 minutes.

Get API key →