Bundesgerichts­entscheide. Beta

Strukturiert und zugänglich.

Suchen Sie nach Aktenzeichen (BGer) oder amtlicher Sammlung (BGE).
API-Dokumentation

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.

GUI und API — Die Weboberfläche nutzt lesbare URLs /entscheid/<decision_id> und lädt Entscheide über denselben öffentlichen Endpunkt /api/v1/entscheid/<decision_id>, den auch Drittanwendungen verwenden.
Die API befindet sich im Beta-Stadium. Änderungen an der Struktur sind möglich; die Versionierung (/api/v1/) schützt vor Breaking Changes in zukünftigen Versionen.

Rate Limits

EndpointLimit
/api/v1/entscheide60 Anfragen/Minute pro IP
/api/v1/entscheid/<decision_id>120 Anfragen/Minute pro IP
/api/v1/entscheid/<decision_id>/metadata120 Anfragen/Minute pro IP
/api/v1/stats30 Anfragen/Minute pro IP

Bei Überschreitung des Limits wird HTTP 429 Too Many Requests zurückgegeben.

Caching

Antworten enthalten Cache-Control-Header, die Clients und Proxies das Zwischenspeichern erlauben:

EndpointCache-Control
/api/v1/entscheidepublic, max-age=120 (2 Minuten)
/api/v1/entscheid/<decision_id>public, max-age=3600 (1 Stunde)
/api/v1/entscheid/<decision_id>/metadatapublic, max-age=3600 (1 Stunde)
/api/v1/statspublic, max-age=300 (5 Minuten)

GET /api/v1/entscheide

Paginierte Liste der Bundesgerichtsentscheide, filterbar nach Sachgebiet, Erledigung und Veröffentlichungsdatum.

ParameterTypStandardBeschreibung
limitInteger20Einträge pro Seite (max. 500)
offsetInteger0Offset für Paginierung
fromYYYY-MM-DDVeröffentlichungsdatum >=
toYYYY-MM-DDVeröffentlichungsdatum <=
sachgebietStringTeilstring-Suche, case-insensitiv
erledigungStringTeilstring-Suche (z.B. Abweisung)
keywordStringMehrfach möglich, Themen-/Sachgebiet-Match
spracheDE/FR/ITMehrfach möglich
richter1/3/5Mehrfach möglich (Anzahl Richter)
sortStringpub_datepub_date oder decision_date
orderStringdescdesc 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
  }
}

GET /api/v1/entscheid/<decision_id>

Vollständiges strukturiertes JSON eines einzelnen Entscheids: Metadaten, Besetzung, Vorinstanz, Regesten und der strukturierte Entscheidstext.

Referenz-Format — Präfix + normalisierte Referenz:
BGer: 1C_195/2026bger_1C_195_2026
BGE: 150 IV 462bge_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": "..." }]
  }
}

GET /api/v1/entscheid/<decision_id>/metadata

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

GET /api/v1/stats

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"
}

Best Practices

curl Beispiele

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"

fetch Beispiel (Browser/Node)

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);