Offene API
Jeder Site-Check ist auch programmatisch abrufbar. Ein Request, ein vollständiger JSON-Report — offenes CORS, ohne Anmeldung, ohne Tracking. Die geprüften URLs werden nicht geloggt.
Endpoint
GET https://check.leaster.it/api/check?url=<URL>
Alternativ POST /api/check mit JSON-Body { "url": "…" }. Antwort ist in beiden Fällen identisch.
| Parameter | Default | Beschreibung |
|---|---|---|
url | — | Pflicht. Die zu prüfende Adresse (mit oder ohne https://). |
render | 1 | 0 = ohne Browser-Rendering (schneller, aber ohne Tracker-/JS-/Perf-Signale). |
psi | 1 | 0 = ohne PageSpeed-Insights-Abruf. |
Beispiel
curl "https://check.leaster.it/api/check?url=example.com&psi=0"
{
"host": "example.com",
"finalUrl": "https://example.com/",
"overallScore": 74,
"categories": [
{
"id": "seo",
"label": "SEO & Technik",
"score": 91,
"results": [
{
"id": "seo-title",
"label": "Title-Tag",
"status": "pass",
"severity": "passed",
"impact": 6,
"effort": "low",
"message": "Title vorhanden (28 Zeichen).",
"why": "…",
"fix": "…",
"docUrl": "https://…"
}
]
}
],
"quickWins": [ /* bis zu 5 wichtigste Sofort-Maßnahmen */ ],
"meta": { "durationMs": 1631, "rendered": true, "psi": false, "crux": false }
}
Kategorien & Felder
Der Report enthält fünf Kategorien: seo, gaio (KI-Sichtbarkeit), privacy, performance, accessibility. Jeder Befund (results[]) trägt:
status—pass·warn·fail·info, plusseverityfürs UI.impact(1–10) undeffort(low/medium/high) — treiben diequickWins.message, optionalevidence,why(„warum wichtig"),fix(„so beheben") unddocUrl.
overallScore ist gewichtet (SEO 27 · GAIO 25 · Performance 22 · Privacy 16 · Accessibility 10). notCheckable: true bedeutet, dass das Ziel per Bot-Schutz blockiert — der Report ist dann nur eingeschränkt aussagekräftig.
Weitere Endpoints
- POST /api/check/pdf — nimmt einen fertigen Report als JSON-Body und liefert ihn als gebrandetes PDF zurück (kein erneuter Scan).
- GET /api/config — Feature-Flags des Dienstes (JSON).
- GET /api/stats — aggregierte Nutzungszahlen des Dienstes (Checks/PDFs pro Tag, Gesamtzähler). Bewusst ohne URLs, IPs oder User-Agents — Transparenz statt Tracking.
Fair Use
Offen und ohne Key nutzbar. Es gilt ein Rate-Limit pro IP (Standard 15 Anfragen/Minute); bei Überschreitung antwortet der Dienst mit 429 und einem Retry-After-Header. Bitte fair einsetzen — der Dienst läuft ohne Werbung und ohne Tracking.