REST-API · OpenAPI 3.0.3

Den OpenCaseLaw-Korpus aus jeder Programmiersprache abfragen

Öffentliche Forschungsendpunkte für Suche, Zitationsgraph, Gesetze und Exporte. Diese Endpunkte sind kostenlos, benötigen keinen API-Schlüssel und unterstützen CORS. Sie nutzen dasselbe Backend wie MCP und die Websuche. Die vollständige Anwendungsspezifikation enthält weitere Funktionen.

Recherche im Terminal automatisieren

Installieren Sie den schlanken Client mit pipx oder uv. Speichern Sie begrenzte Suchergebnisse, rufen Sie genaue Erwägungen ab, lösen Sie Zitationslisten auf und sichern Sie Quellenpakete. Der Client ist auf PyPI als opencaselaw-cli veröffentlicht.

pipx install opencaselaw-cli   # or: uv tool install opencaselaw-cli
ocl --help
ocl bundle create 'missbräuchliche Kündigung Rachekündigung' \
  --max-results 5 --law OR:336 --out research-bundle

CLI-Anleitung: Pipelines, Quellenpakete und Zitationsauflösung →

Schnellstart — den Korpus durchsuchen

curl -s "https://mcp.opencaselaw.ch/api/decisions?q=Mietrecht+K%C3%BCndigung&limit=5"

Antwort:

{
  "total": 1006,
  "total_is_lower_bound": false,
  "returned": 5,
  "results": [
    { "decision_id": "bge_BGE_140_III_86", "court": "bge",
      "decision_date": "2014-04-15", "language": "de",
      "title": "Mietrecht; …", "regeste": "…",
      "citation_string_de": "BGE 140 III 86", "canonical_url": "https://mcp.opencaselaw.ch/entscheid/…" },
    …
  ],
  "limit": 5, "offset": 0, "has_more": true, "next_offset": 5
}

Prüfen Sie total_is_lower_bound, bevor Sie total als exakt behandeln. Folgen Sie next_offset, solange has_more wahr ist. Eine Relevanzsuche kann ihren begrenzten Kandidatenbestand ausschöpfen, bevor alle Treffer zurückgegeben werden: has_more: false belegt keine vollständige Recherche. Filter grenzen die Auswahl ein; für Analysen des gesamten Korpus nutzen Sie den Parquet-Download.

Schnellstart — einen Artikel nachschlagen

curl -s "https://mcp.opencaselaw.ch/api/laws/OR?article=41"
{
  "sr_number": "220",
  "abbreviation": "OR",
  "title": "Bundesgesetz vom 30. März 1911 …",
  "consolidation_date": "2026-01-01",
  "language": "de",
  "articles": [
    { "article_num": "41", "heading": null,
      "text": "1 Wer einem andern widerrechtlich Schaden zufügt, …" }
  ]
}

Bezeichnungen werden in DE/FR/IT erkannt, unabhängig von Gross-/Kleinschreibung, Punkten und Leerzeichen (Cst, OPP2, o.p.p. 2); Staatsverträge unter ihrem gebräuchlichen Namen (IPBPR, KRK, CISG) und frühere Bezeichnungen (OG → BGG, mit Hinweis) werden über die CC0-Tabelle law_aliases.json aufgelöst; kantonale Erlasse tragen ihren Kanton in beliebiger Reihenfolge: /api/laws/StG/ZH.

Gängige Parameter

ParameterVerwendet vonHinweise
qalle SuchendpunkteFreitextabfrage; die Entscheidsuche akzeptiert query und q. Unterstützt boolesche Operatoren (AND, OR, NOT), exakte Phrasen, Aktenzeichen und BGE-Referenzen. Relevanzergebnisse bilden einen begrenzten Kandidatenbestand; prüfen Sie Paginierung und Untergrenzenangaben.
queryalle SuchendpunkteFreitextabfrage. Bei /decisions hat ein nicht leeres query Vorrang vor q. Akzeptierte Parameter stehen beim jeweiligen Endpunkt.
limitüberallStandardwerte und Höchstwerte hängen vom Endpunkt ab. Die Entscheidsuche kann Detailgrad oder Seitengrösse reduzieren. Steuern Sie die Paginierung mit der zurückgegebenen Anzahl und den Fortsetzungsfeldern, nicht mit dem angeforderten Limit.
offset/decisions · /citations/{decision_id}Paginierungsversatz, soweit unterstützt. Folgen Sie next_offset; Zitationslisten weisen die Fortsetzung je Richtung aus.
language/decisionsde / fr / it. Filtert nach Entscheidsprache.
canton/decisions · /laws/searchZweibuchstabiger Kantonscode (ZH, BE, …) oder CH für Bund.
court/decisionsGerichtsschlüssel (bger, bvger, ge_gerichte, …). Siehe /courts.
jurisdiction/laws/searchall, federal oder cantonal.
article/laws/{abbreviation}Artikelnummer (z. B. 41, 266l).

Endpunkt-Referenz

Entscheide
  • GET/api/decisionsEntscheide durchsuchen. Liefert paginierte Ergebnisse mit Zitierstrings + kanonischen URLs.
  • GET/api/decisions/{decision_id}Einen einzelnen Entscheid mit Volltext abrufen.
  • GET/api/decisions/{decision_id}/export.docxAls Word-Dokument exportieren (Zitat, Regeste, strukturierte Erwägungen).
  • GET/api/decisions/{decision_id}/export.bibBibTeX-Eintrag für LaTeX-Bibliografien.
  • GET/api/decisions/{decision_id}/export.risRIS-Datensatz für Zotero / EndNote / Mendeley.
  • GET/api/decisions/{decision_id}/export.pdfPDF-Neurendering des Entscheids.
  • GET/api/case-brief/{case}Strukturierter Brief: Sachverhalt · Begründung · Gesetze · Autorität · Verwandtes.
  • GET/api/structure/{decision_id}Sachverhalt + Erwägungen-Absätze + Dispositiv + Regeste.
  • GET/api/erwaegung/{decision_id}/{e_number}Wortgetreue Schweizer Citation-Einheit (z. B. 2.3).
  • GET/api/regeste/{decision_id}Offizieller BGer-/BVGer-Regestentext.
Zitationsgraph
  • GET/api/citations/{decision_id}Beide Richtungen: was zitiert wird + was zitiert.
  • GET/api/appeal-chain/{decision_id}Verfahrensgeschichte durch die Instanzen.
  • GET/api/leading-casesAutoritätssortierte Entscheide zu einem Gesetz / Thema.
  • GET/api/citeEinen serverformatierten Zitierstring erstellen.
Gesetze & Doktrin
  • GET/api/laws/searchFöderierte FTS5 über Bundes- + Kantonsartikel. Liefert Snippets.
  • GET/api/laws/{abbreviation}Einzelartikel nach Abkürzung (OR, ZGB, StGB, …).
  • GET/api/legislation/searchLexFind-Katalogsuche (33 000+ Bundes- + Kantonserlasse).
  • GET/api/legislation/{lexfind_id}Einzelner Gesetzgebungsdatensatz.
  • GET/api/legislation/changesAktuelle & bevorstehende Änderungen des Bundesrechts.
  • GET/api/doctrineGesetzestext + sortierte BGE + Doktrin-Zeitleiste + Kommentarauszug.
  • GET/api/materialienBotschaften des Bundesrats — gesetzgeberische Absicht.
  • GET/api/materialien/{law_code}Materialien zu einem bestimmten Gesetz.
  • GET/api/amendment-refMuster "Art. X (Fassung Y)" auflösen.
Kommentar & Lehre
  • GET/api/commentaries/searchOnlineKommentar- + OpenLegalCommentary-Auszüge durchsuchen.
  • GET/api/commentaries/{abbreviation}Kommentarindex zu einem Gesetz (OR, ZGB, …).
  • GET/api/exam-questionEchtes BGE-Sachverhaltsmuster als Fallbearbeitung mit verborgener Analyse.
  • GET/api/mock-decisionForschungs-Musterentscheid aus Sachverhalt + Rechtsprechung + Gesetzen.
Verifikation & Introspektion
  • POST/api/attestEinen Antwortentwurf prüfen — verifiziert jeden BGE / Art. / zitierten String gegen den Korpus, bevor er den Server verlässt. Bescheinigt die eigenen Zitate, Zitatstellen und Gesetzesverweise des Entwurfs; bescheinigt nicht, dass keine einschlägige Autorität fehlt.
  • GET/api/courtsAlle 121 Gerichte auflisten (Bund, Regulierung, international, kantonal).
  • GET/api/statisticsAggregierte Statistiken — Korpus, Zitationsgraph, Gesetze, Sprachen.
  • GET/api/scraper-healthLetzter Laufstatus pro Quelle (treibt /coverage).
  • GET/api/atom/{court}.xmlAtom-Feed — neueste 50 Entscheide pro Gericht.

Die Anwendungsspezifikation beschreibt die bereitgestellten Routen; Antwortschemata sind unterschiedlich vollständig. Diese Quellversion ergänzt eine typisierte öffentliche Forschungsspezifikation unter /api/research/openapi.json. Sie ist erst nach der Bereitstellung verfügbar; siehe Vertragshinweise.

Ratenbegrenzung

Auf der nginx-Ebene weich begrenzt, um die Upstream-Worker zu schützen. Takten Sie Batch-Jobs auf ≤ 5 Anfragen/Sekunde pro IP. Bei höherem Durchsatz den Stack lokal betreiben — vollständige Anleitung im README (~65 GB Speicher, ~30 Min. Einrichtung).