Take it, it is yours
The data
The whole enforcement dataset, 18 records, downloadable as JSON or CSV and subscribable as an Atom feed. No key, no sign up, no rate limit. Licensed CC BY 4.0, so the only condition is that you credit GAGE with a link.
Endpoints
Three ways to take it
- tracker.json
application/json
The complete dataset: metadata block plus every record with every field. This is the same file the site renders from, so it can never disagree with the pages.
- tracker.csv
text/csv
One row per action, flattened for a spreadsheet or a stats package. Array fields are joined with a pipe. UTF-8 with a header row.
- feed.xml
application/atom+xml
Atom feed of new and updated records, newest first. Point a reader or a bot at it and you find out about a new enforcement action without checking.
The authority register and the changelog are published the same way, as authorities.json and changelog.json.
Schema
Every field, and what it means
| Field | Type | Meaning |
|---|---|---|
| id | string | Permanent record identifier, AIT-{year}-{sequence}. Never changes, never reused. |
| slug | string | URL slug. The page lives at /actions/{id}-{slug}. |
| title | string | One sentence naming the authority, the target and the outcome. |
| status | enum | confirmed, announced, under_appeal, annulled, settled or incomplete. |
| action_type | enum | fine, corrective_order, warning, investigation, rfi, interim_measure, ban, deletion_order, structured_dialogue, commitment, complaint or other. |
| regime | string[] | AI_ACT, GDPR, DSA, DMA or NATIONAL_AI_LAW. An action can sit under more than one. |
| ai_act_relevance | enum | direct for an AI Act action, adjacent for another regime against an AI system, context for a complaint or regulator position. |
| provisions | object[] | instrument, article and role (cited, violated or adjacent). This is the field that links the record into the EU AI Act Explorer graph. |
| authority_id | string | Key into authorities.json. |
| target | object | name, sector and hq_country of the organisation the action was taken against. |
| ai_system | string | The system or model the action concerns. |
| date_announced | date | ISO date. Always present. |
| date_decision | date or null | ISO date the decision was adopted, where it differs from the announcement. |
| fine_amount_eur | number or null | Amount in euro, null where no penalty was imposed. Never adjusted for inflation. |
| fine_original | object or null | Amount and currency as issued, for actions not denominated in euro. |
| corrective_measures | string[] | What the authority ordered, in its own terms. |
| summary | string | Neutral prose summary, 150 to 300 words. |
| key_facts | string[] | The extractable facts, one per line. |
| timeline | object[] | Append only. date and event. Appeals, suspensions and annulments are added here rather than overwriting history. |
| appeal | object | status and notes. Populated on every record, including where the status is none. |
| sources | object[] | name, url, type (primary or secondary) and date. At least one per record. |
| related_ids | string[] | Editorially chosen related records. |
| date_added | date | When the record first appeared on the tracker. |
| last_verified | date | Stamped on every record at every Monday pass, whether or not anything changed. |
| last_modified | date | Changes only when the record itself changes. This is what drives sitemap lastmod. |
Using it well
Four things to know before you compute on this
Filter by status before you sum. Summing fine_amount_eur across every record produces a number that includes an amount a court annulled. Filter to status equals confirmed for a headline total, and report under appeal separately.
Exclude context records from action counts. ai_act_relevance equals context marks complaints and regulator positions, which are on the tracker for background and are not enforcement.
Sub paragraph citations fold onto their article. A provision entry of 5(1)(f) belongs to Article 5. If you are grouping by article, take the leading digits.
Counts are a floor. Read the method page before you publish a conclusion drawn from this data. It states what the numbers do not claim, and that section exists because a truncated slice reported as a total is the easiest mistake in this field to make.
Cite this page
Free to reuse under CC BY 4.0, with attribution.
- In a sentence
- According to the GAGE EU AI Act Enforcement Tracker (as of 20 August 2026), eu ai act enforcement data.
- APA
- GAGE (Global Academy of Generative-AI Education). (2026). EU AI Act enforcement data. EU AI Act Enforcement Tracker. Retrieved 20 August 2026, from https://www.gage.academy/tools/eu-ai-act-enforcement-tracker/data
- MLA
- "EU AI Act enforcement data." EU AI Act Enforcement Tracker, GAGE (Global Academy of Generative-AI Education), 20 August 2026, https://www.gage.academy/tools/eu-ai-act-enforcement-tracker/data.
- Chicago
- GAGE (Global Academy of Generative-AI Education). "EU AI Act enforcement data." EU AI Act Enforcement Tracker. Last modified 20 August 2026. https://www.gage.academy/tools/eu-ai-act-enforcement-tracker/data.
- Permalink
- https://www.gage.academy/tools/eu-ai-act-enforcement-tracker/data
Last updated . Every record re verified . The tracker is checked every Monday, and the same day for any action under the AI Act.
Dataset build 20 August 2026. Every record is verified against a named source. Counts are a floor, not a ceiling: authorities publish on their own timetable and some decisions are never announced.