DSGVO-Check · API
DSGVO-Check REST API
Pruefen Sie deutsche Websites programmatisch auf typische DSGVO-Verstoesse. Kostenlos, ohne Anmeldung, CORS-enabled, MIT-Open-Source.
Endpoints
| Methode | Pfad | Zweck |
|---|---|---|
POST | /api/check | JSON-Body mit URL pruefen |
GET | /api/check?url=... | Quick-Check via Query-Parameter |
OPTIONS | /api/check | CORS-Preflight |
Request
cURL
curl -X POST https://www.webwerk-muc.de/api/check \\
-H "Content-Type: application/json" \\
-d '{"url":"https://example.de"}'
JavaScript / Fetch
const r = await fetch('https://www.webwerk-muc.de/api/check', {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({url: 'https://example.de'})
});
const data = await r.json();
Python / requests
import requests
r = requests.post(
'https://www.webwerk-muc.de/api/check',
json={'url': 'https://example.de'},
timeout=20,
)
data = r.json()
Response
{
"ok": true,
"url": "https://example.de/",
"checked_at": "2026-05-27T02:21:13.767Z",
"score": 64,
"consent_vendor": null,
"impressum_url": "https://example.de/impressum",
"issues": [
{
"rule": "Google Fonts ohne lokale Einbindung",
"rechtsgrundlage": "LG Muenchen I, 20 O 17493/20",
"schweregrad": "SICHER",
"fix": "Bunny Fonts oder lokale Einbindung"
}
],
"issue_count": 1,
"classification": "SICHER_ABMAHNBAR"
}
Felder
| Feld | Typ | Bedeutung |
|---|---|---|
ok | boolean | true wenn Check ausfuehrbar war (auch wenn Verstoesse gefunden) |
url | string | finale URL nach allen Redirects |
score | 0-100 | DSGVO-Score; 100 = sauber, 0 = viele schwere Verstoesse |
consent_vendor | string|null | Erkanntes Consent-Tool im HTML (Cookiebot, Borlabs, etc.) |
impressum_url | string|null | Gefundenes Impressum (oder null wenn keines auffindbar) |
issues | array | Liste der gefundenen Verstoesse (rule, rechtsgrundlage, schweregrad, fix) |
schweregrad | string | SICHER · WAHRSCHEINLICH · HINWEIS |
classification | string | SICHER_ABMAHNBAR · WAHRSCHEINLICH · KEIN_OFFENSICHTLICHER_VERSTOSS |
Was der Check erkennt
- Google Fonts ohne lokale Einbindung (LG Muenchen I 20 O 17493/20)
- Google Tag Manager / Analytics ohne Consent (§ 25 TTDSG)
- Meta / Facebook Pixel
- Google Maps iframe ohne Two-Click (BGH I ZR 222/19)
- YouTube-Embed ohne Consent
- Hotjar / Matomo Cloud
- HTTPS-Pflicht (DSGVO Art. 32)
- Impressum-Auffindbarkeit + Pflichtangaben (§ 5 TMG)
Was nicht erkannt wird
Transparenz vorab: dieser Check ist pattern-basiert, kein vollstaendiges Audit. Nicht erkannt werden:
- JavaScript-lazy-loaded Tracker (kein Browser-Rendering)
- Server-seitige IP-Logs
- Inhalt von Datenschutzerklaerungen
- Drittland-Uebermittlungen ohne Standardvertragsklauseln
Fuer ein vollstaendiges Audit: manuelle Pruefung als Festpreis-Paket.
Open Source & Self-Hosting
Komplette Worker-Quelle (eine Datei, ~200 Zeilen) auf GitHub: Ibrahimfarajk/dsgvo-checker. MIT-lizenziert.
Self-Host in ~30 Sekunden:
git clone https://github.com/Ibrahimfarajk/dsgvo-checker.git
cd dsgvo-checker
npx wrangler pages deploy . --project-name=dsgvo-check
Auf Cloudflare Free-Tier reichen 100.000 Checks pro Tag.
Rate-Limit & Fair-Use
Kein hartes Rate-Limit aktuell, aber bitte fair bleiben: max ~100 req/min pro Quell-IP. Wer mehr braucht, hostet bitte selbst (siehe oben) — das ist ja der ganze Sinn von Open-Source.
Lizenz & Verantwortung
Die API liefert Hinweise auf moegliche Verstoesse, keine Rechtsberatung. Bei konkreter Abmahnung — Anwalt fragen.
Fragen, Bug-Reports, neue Pattern-Vorschlaege: GitHub-Issues.