Public feeds
Build on this. It is free, and it stays current.
Everything Trusq publishes is available as a machine-readable feed: what changed in EU digital regulation, and every dated obligation with its primary source. No key, no account, no rate limit. Use it in a dashboard, an internal tool, a Slack bot or your own product.
Fields in deadlines.json
Standard JSON Feed fields, plus a _trusq object per item. The two dates are deliberately separate: when the obligation applies, and when a person last checked it.
date_published | The date the obligation applies, in RFC 3339. |
title | Framework and the obligation in one line. |
external_url | The Trusq page for this obligation. |
_trusq.eurlex_url | The primary source: the Official Journal or the supervisor's own page. |
_trusq.source_version | Which instrument and article the date rests on. |
_trusq.last_verified | When a person last checked this entry against that source. |
_trusq.regime | The framework: AI Act, NIS2, Data Act, CBAM, customs/ICS2, eFTI, maritime. |
_trusq.date_status | in_force, applies_from, or dated but not yet in force. |
_trusq.who | Which role the obligation lands on — provider, deployer, importer, carrier. |
Fields in changelog.json
Three timestamps are kept apart on purpose: when the source published, when we detected it, and when a person verified it. If the third is missing, nobody has read it yet and editorial_state says so. Do not collapse them into one date — the gap between them is the honest part.
date_published | When the change happened, not when we noticed it. |
_trusq.editorial_state | verified, or auto_unverified for machine-summarised entries a person has not reviewed yet. |
_trusq.framework | ai_act, nis2, dora, data_act, cra, avg, dsa. |
_trusq.authority | Which body acted: Commission, EDPB, a court, a national supervisor. |
_trusq.articles | The articles touched, where the source names them. |
_trusq.what_to_do | The practical consequence, where one can be stated from the source. |
_trusq.source_published_at | When the source published it. |
_trusq.detected_at | When our watcher saw it. |
_trusq.editorially_verified_at | When a person checked it. Absent means not yet. |
Licence: CC BY 4.0
Use it commercially, modify it, build a product on it. One condition: credit Trusq with a link to trusq.io wherever the data is shown.
To be precise about what is licensed: the underlying legal texts are public and belong to nobody. What this covers is the compilation — which obligation is included, on which date, with which verification status and in which structure. That is the work.
Licence and attribution are also carried inside the JSON feeds themselves, under _trusq_license, so an integration can read the terms without visiting this page.
What we ask, and what we do not
We do not ask for a key, an email address or a sign-up, and there is no rate limit — be reasonable and cache. The feeds regenerate when the underlying data changes; the calendar declares a weekly refresh.
What we do ask: do not present unverified entries as verified. editorial_state exists so your users can see the difference, and it is the whole reason this data can be trusted. Passing it through is the deal.