API Access
Access dataset files directly from scripts, code, or AI agents.
Browse dataset files
API Access
Access dataset files directly from scripts, code, or AI agents.
Each file has a stable URL (r-link) that you can use directly in scripts, apps, or AI agents. These URLs are permanent and safe to hardcode.
Start with these files — they give you everything you need to understand and access the dataset.
- 1. Fetch datapackage.json to inspect schema and resources
- 2. Download data resources listed in datapackage.json
- 3. Read README.md for full context
Data Files
Court decisions (nodes)
| Field | Type | Description | Constraints |
|---|---|---|---|
| ruling_id | integer | Stable identifier; resolves at https://lahend.ee/lahend/{ruling_id}-{case_no_slug} | |
| case_no | string | Court case number, e.g. 2-19-134841/34 | |
| court | string | Court and courthouse as published | |
| instance | string | Normalised court level | { "enum": [ "maakohus", "halduskohus", "ringkonnakohus", "riigikohus", null ] } |
| case_type | string | Branch of law | { "enum": [ "tsiviil", "haldus", "kriminaal", null ] } |
| category | string | Subject category as classified by the court | |
| decision_date | date | Date the decision was pronounced, else published | |
| case_root | string | Case number without the document suffix; shared by every instance hearing the same case | |
| cited_by_count | integer | How many later decisions cite this case (authority score) | |
| has_full_text | boolean | Whether the full text was available for citation extraction |
Download
Download GZAbout
- One row per published decision. No judgment text, no party names.
- Last updated
- 26 July 2026
- Format
- GZ
- File size
- 7.36 MB
Cited legislation (nodes)
| Field | Type | Description |
|---|---|---|
| act_id | integer | Riigi Teataja terviktekstiGrupiID; resolves at https://www.riigiteataja.ee/akt/{act_id} |
| abbrevs | string | Pipe-separated abbreviations that resolve to this act, lower-cased, as used by the citation resolver |
| title_et | string | Act title in Estonian |
| act_type | string | seadus, määrus, otsus, ... |
| is_in_force | boolean |
Download
Download GZAbout
- The 197 acts that Estonian case law actually cites. Abbreviations come from the curated resolver table, not from Riigi Teataja's sparse and occasionally incorrect lyhend field.
- Last updated
- 26 July 2026
- Format
- GZ
- File size
- 4.36 kB
Decision to statutory provision (edges)
| Field | Type | Description |
|---|---|---|
| ruling_id | integer | |
| act_id | integer | Null where the cited abbreviation could not be resolved to an act |
| act_abbrev_as_cited | string | The abbreviation exactly as it appears in the judgment |
| paragraph | string | The § number, e.g. '430' or '5-1' |
| subsection | string | The lõige (subsection), where the citation names one |
Download
Download GZAbout
- The main edge table: which decision relies on which provision. 94.2% resolve to a known act.
- Last updated
- 26 July 2026
- Format
- GZ
- File size
- 10.4 MB
Decision to earlier case (edges)
| Field | Type | Description |
|---|---|---|
| from_ruling_id | integer | |
| cited_case_root | string | Join to rulings.case_root |
Download
Download GZAbout
- Precedent edges. The target is a case root, because every instance hearing a case reuses it.
- Last updated
- 26 July 2026
- Format
- GZ
- File size
- 1.23 MB
Decision to EU instrument (edges)
| Field | Type | Description |
|---|---|---|
| ruling_id | integer | |
| celex | string | CELEX identifier; resolves at https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:{celex} |
Download
Download GZAbout
- Where an Estonian decision applies an EU regulation, directive or judgment.
- Last updated
- 26 July 2026
- Format
- GZ
- File size
- 68.4 kB
About this dataset
Estonian Case-Law Citation Network
Every citation made by an Estonian court, as a machine-readable graph.
Estonian courts publish their decisions, and the state publishes its legislation, but nobody publishes the link between them. This dataset is that link: which decision relies on which statutory provision, which decision cites which earlier case, and which decisions apply EU law. It was extracted from the full text of 564,176 published decisions spanning 1993 to 2026.
It contains no judgment text and no party names — only identifiers, case numbers, section numbers and dates.
| Decision → statutory provision | 3,050,433 edges (94.2% resolved to a specific act) |
| Decision → earlier case | 271,647 edges |
| Decision → EU instrument | 18,359 edges |
| Decisions (nodes) | 564,176 (353,812 with full text available) |
| Acts actually cited | 197 |
| Distinct provisions cited | 9,684 |
| Period covered | 21 October 1993 – 24 July 2026 |
Why this exists
Empirical legal research on Estonia has had no citation graph to work with. Riigi Teataja publishes decisions as documents; commercial legal databases build citation indexes but keep them proprietary. Questions that are routine in other jurisdictions — which provisions actually get litigated, how precedent propagates between instances, whether a rule is settled or contested — have not been answerable at scale here.
A few things the data shows immediately:
- Case law concentrates hard. 3.05 million citations resolve to just 197 acts, and to 9,684 distinct provisions.
- Procedure dominates substance. The single most-cited provision is Tsiviilkohtumenetluse seadustik § 162 (allocation of costs), cited by 87,324 decisions, ahead of Võlaõigusseadus § 113 (default interest) at 81,403.
- Most litigation is about money. Six of the ten most-cited provisions concern costs, interest or the performance of obligations.
Files
| File | Rows | What it is |
|---|---|---|
data/rulings.csv.gz | 564,176 | Decisions (nodes): court, instance, case type, date, authority score |
data/acts.csv.gz | 197 | Cited legislation (nodes) |
data/ruling_law_citations.csv.gz | 3,050,433 | Decision → provision (the main edge table) |
data/ruling_citations.csv.gz | 271,647 | Decision → earlier case |
data/eu_citations.csv.gz | 18,359 | Decision → EU instrument (CELEX) |
Full field descriptions are in datapackage.json
(Frictionless Data Package,
validates with frictionless validate datapackage.json).
Every identifier resolves to a public page:
- a decision →
https://lahend.ee/lahend/{ruling_id}-{case_no_slug} - an act →
https://www.riigiteataja.ee/akt/{act_id} - a provision →
https://lahend.ee/praktika/{act_id}/{paragraph} - an EU instrument →
https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:{celex}
Getting started
import pandas as pd
cites = pd.read_csv("data/ruling_law_citations.csv.gz")
acts = pd.read_csv("data/acts.csv.gz")
# The most-litigated provisions
top = (cites.dropna(subset=["act_id"])
.groupby(["act_id", "paragraph"])["ruling_id"].nunique()
.sort_values(ascending=False).head(20)
.reset_index()
.merge(acts[["act_id", "abbrevs"]], on="act_id"))
print(top)
# Precedent in-degree: which cases the courts keep coming back to
prec = pd.read_csv("data/ruling_citations.csv.gz")
print(prec["cited_case_root"].value_counts().head(20))
How it was built
Citations were extracted from decision full text by pattern matching, then resolved against the consolidated legislation corpus:
- Provision references (
TsMS § 162 lg 1,VÕS § 113 lõige 1) are parsed into an act abbreviation, a section number and, where present, a subsection. - Abbreviations are resolved through a curated mapping of 303 abbreviation
forms to Riigi Teataja act group ids. This is deliberately not taken from
Riigi Teataja's own
lyhendfield, which is populated for only a few hundred of 117,000 acts and contains errors — in that fieldKarSpoints at a 1990s ministry funding decree rather than the Penal Code. - Case references are matched to a case root, the part of a case number shared by every instance hearing the same case.
Limitations
Read these before drawing conclusions.
- 5.8% of provision citations are unresolved (
act_idis null). These are abbreviations with no curated mapping, mostly rare or repealed instruments. The abbreviation as written is retained inact_abbrev_as_citedso they can still be analysed or resolved by others. - Only decisions with available full text could be mined. 353,812 of 564,176 decisions have text; the rest appear as nodes with no outgoing edges. Coverage is much better for recent years, so citation counts are not comparable across decades without normalising by the number of decisions with text in each year.
- Cited case roots are not resolved to decision ids. A case root may match several decisions (one per instance) or none in this corpus.
- A citation is not an endorsement. The extraction records that a decision referred to a provision, not whether it applied, distinguished or rejected it.
- The corpus is what Riigi Teataja publishes. Decisions withheld from publication are absent, and Estonian courts do not publish everything.
Licence and attribution
Released under CC BY-SA 4.0. The underlying decisions and legislation are public documents of the Republic of Estonia; the citation extraction, resolution and structuring are the work of Nimistu MTÜ.
Citation
Archived on Zenodo with a DOI. The concept DOI below always resolves to the newest version; cite the version DOI if you need to pin an exact release.
| Concept DOI (all versions) | 10.5281/zenodo.21598030 |
| Version 1.0.0 | 10.5281/zenodo.21598031 |
Nimistu MTÜ (2026). Estonian Case-Law Citation Network (Version 1.0.0)
[Data set]. Zenodo. https://doi.org/10.5281/zenodo.21598030
BibTeX:
@dataset{nimistu_2026_case_law_citations,
author = {{Nimistu MTÜ}},
title = {Estonian Case-Law Citation Network},
year = {2026},
publisher = {Zenodo},
version = {1.0.0},
doi = {10.5281/zenodo.21598030},
url = {https://doi.org/10.5281/zenodo.21598030}
}
About
Built and maintained by Nimistu MTÜ, a non-profit that publishes Estonian public data. The corpus behind this dataset is searchable for free, in full text, at lahend.ee — including case law by provision and consolidated legislation.
Corrections and questions: info@nimistu.ee