Bundesgerichtsentscheide. Beta
Strukturiert und zugänglich.
Strukturiert und zugänglich.
Judic stellt eine öffentliche RESTful API zur Verfügung. Alle Endpunkte liefern JSON zurück, benötigen keine Authentifizierung und sind CORS-fähig. Basis-URL: https://judic.ch.
/entscheid/<decision_id> und lädt Entscheide über denselben öffentlichen Endpunkt /api/v1/entscheid/<decision_id>, den auch Drittanwendungen verwenden.
/api/v1/) schützt vor Breaking Changes in zukünftigen Versionen.
| Endpoint | Limit |
|---|---|
| /api/v1/entscheide | 60 Anfragen/Minute pro IP |
| /api/v1/entscheid/<decision_id> | 120 Anfragen/Minute pro IP |
| /api/v1/entscheid/<decision_id>/metadata | 120 Anfragen/Minute pro IP |
| /api/v1/stats | 30 Anfragen/Minute pro IP |
Bei Überschreitung des Limits wird HTTP 429 Too Many Requests zurückgegeben.
Antworten enthalten Cache-Control-Header, die Clients und Proxies das Zwischenspeichern erlauben:
| Endpoint | Cache-Control |
|---|---|
| /api/v1/entscheide | public, max-age=120 (2 Minuten) |
| /api/v1/entscheid/<decision_id> | public, max-age=3600 (1 Stunde) |
| /api/v1/entscheid/<decision_id>/metadata | public, max-age=3600 (1 Stunde) |
| /api/v1/stats | public, max-age=300 (5 Minuten) |
Paginierte Liste der Bundesgerichtsentscheide, filterbar nach Sachgebiet, Erledigung und Veröffentlichungsdatum.
| Parameter | Typ | Standard | Beschreibung |
|---|---|---|---|
| limit | Integer | 20 | Einträge pro Seite (max. 500) |
| offset | Integer | 0 | Offset für Paginierung |
| from | YYYY-MM-DD | — | Veröffentlichungsdatum >= |
| to | YYYY-MM-DD | — | Veröffentlichungsdatum <= |
| sachgebiet | String | — | Teilstring-Suche, case-insensitiv |
| erledigung | String | — | Teilstring-Suche (z.B. Abweisung) |
| keyword | String | — | Mehrfach möglich, Themen-/Sachgebiet-Match |
| sprache | DE/FR/IT | — | Mehrfach möglich |
| richter | 1/3/5 | — | Mehrfach möglich (Anzahl Richter) |
| sort | String | pub_date | pub_date oder decision_date |
| order | String | desc | desc oder asc |
Beispiel-Anfragen
GET https://judic.ch/api/v1/entscheide?limit=5 GET https://judic.ch/api/v1/entscheide?sachgebiet=strafrecht&erledigung=Abweisung&limit=10 GET https://judic.ch/api/v1/entscheide?from=2025-01-01&to=2025-03-31&offset=20 GET https://judic.ch/api/v1/entscheide?sprache=DE&sprache=FR&richter=5
Antwort-Struktur
{
"data": [
{
"reference": "8C_388/2024",
"decision_date": "2024-11-15",
"pub_date": "2025-01-08",
"sachgebiet": "Öffentliches Recht",
"themen": "Sozialversicherung; AHV; Beiträge",
"erledigung": "Abweisung",
"sprache": "DE",
"anzahl_richter": 3,
"ref": "bger_8C_388_2024",
"api_url": "/api/v1/entscheid/bger_8C_388_2024",
"viewer_url": "/entscheid/bger_8C_388_2024"
}
],
"meta": {
"total": 1842,
"limit": 5,
"offset": 0,
"returned": 5
}
}
Vollständiges strukturiertes JSON eines einzelnen Entscheids: Metadaten, Besetzung, Vorinstanz, Regesten und der strukturierte Entscheidstext.
1C_195/2026 → bger_1C_195_2026150 IV 462 → bge_150_iv_462
Beispiel-Anfrage
GET https://judic.ch/api/v1/entscheid/bger_8C_388_2024
Antwort-Struktur (gekürzt)
{
"meta": {
"reference": "8C_388/2024",
"date": "2024-11-15",
"sprache": "DE",
"abteilung": "I. sozialrechtliche Abteilung",
"gegenstand": "AHV (Beiträge)",
"erledigung": "Abweisung",
"anzahl_richter": 3
},
"sachverhalt": { "abschnitte": [ ... ] },
"erwaegungen": { "abschnitte": [ ... ] },
"dispositiv": { "raw": "...", "punkte": [ ... ] },
"referenzen": {
"bge_zitiert": [{ "ref": "141 III 433", "url": "...", "linked": true }],
"bger_zitiert": ["8C_100/2023"],
"gesetze": [{ "text": "Art. 42 BGG", "url": "..." }]
}
}
Gleiche Struktur wie /api/v1/entscheid/<decision_id>, aber ohne Volltext (abschnitte). Ideal für Listen und Vorschauen.
Beispiel-Anfrage
GET https://judic.ch/api/v1/entscheid/bger_8C_388_2024/metadata
Statistiken über den Datenbankbestand: Gesamtanzahl Entscheide, Anzahl mit vollständigem Text, Datumsbereich und letzte Veröffentlichung.
Beispiel-Anfrage
GET https://judic.ch/api/v1/stats
Antwort
{
"total_decisions": 18420,
"with_full_text": 3241,
"decision_date_range": {
"earliest": "2000-01-15",
"latest": "2026-04-17"
},
"last_published": "2026-04-19"
}
limit/offset arbeiten und Ergebnisse seitenweise abrufen.Cache-Control im Client oder Proxy cachen, um Last und Latenz zu reduzieren.Too Many Requests mit kurzer Wartezeit (z. B. exponentiell) erneut anfragen./metadata statt Volltext-Endpunkt verwenden./ und Leerzeichen durch _ ersetzen.curl "https://judic.ch/api/v1/entscheide?limit=25&offset=0" curl "https://judic.ch/api/v1/entscheide?from=2026-01-01&erledigung=Abweisung&sprache=DE" curl "https://judic.ch/api/v1/entscheid/bger_8C_388_2024/metadata"
const res = await fetch("https://judic.ch/api/v1/entscheide?limit=10");
if (res.status === 429) {
// kurz warten und erneut versuchen
}
const payload = await res.json();
console.log(payload.meta, payload.data);