Open standard and reference implementation for machine-readable EU regulatory change feeds.
EU regulators publish consultations, guidelines, final rules, and deadlines across dozens of websites — each in a different format, language, and structure. ESMA has no RSS feed and no API. BaFin's listed RSS URLs return 404. Most National Competent Authorities (NCAs) publish only as unstructured HTML or PDF.
The only way to track EU regulatory changes programmatically today is through commercial vendors charging €25K–500K/year (CUBE, Thomson Reuters Regulatory Intelligence, Wolters Kluwer OneSumX). Small fund managers, fintechs, and researchers are locked out.
eu-reg-feed provides two things:
-
RegEvent JSON Schema — an open standard defining a common format for regulatory change events (consultations, final rules, guidelines, transpositions, deadlines, warnings)
-
Reference aggregators — scrapers and parsers for EU regulators that normalize publications into the RegEvent format
| Regulator | Jurisdiction | Method | Status |
|---|---|---|---|
| ESMA | EU | HTML scraping | ✅ Working |
| CSSF | Luxembourg | Native RSS | ✅ Working |
| EBA | EU | Planned | 🔜 |
| EIOPA | EU | Planned | 🔜 |
| EUR-Lex | EU | CELLAR/SPARQL | 🔜 |
| BaFin | Germany | HTML scraping | 🔜 |
| AMF | France | Planned | 🔜 |
| CNMV | Spain | Planned | 🔜 |
| FMA | Austria | Planned | 🔜 |
npm install eu-reg-feed
# Or clone and run directly
git clone https://github.com/julianlaycock/eu-reg-feed.git
cd eu-reg-feed
npm install
npm run build
npm start -- fetch --prettyAll events conform to the RegEvent JSON Schema:
{
"id": "urn:regevent:cssf:2026:warning-capman",
"type": "warning",
"regulator": "cssf",
"jurisdiction": "LU",
"title": "Warning concerning the website www.capman-holding.com",
"title_lang": "en",
"summary": null,
"url": "https://www.cssf.lu/en/2026/02/warning-concerning-the-website-www-capman-holding-com/",
"published": "2026-02-24T14:06:21.000Z",
"effective_date": null,
"response_deadline": null,
"affected_legislation": [],
"tags": ["investor-protection"],
"attachments": []
}See examples/sample-output.json for a full multi-source output.
import { CSSFAggregator, ESMAAggregator, fetchAll } from 'eu-reg-feed';
// Fetch from all sources
const results = await fetchAll();
for (const result of results) {
console.log(`${result.regulator}: ${result.events.length} events`);
}
// Or fetch from a single source
const cssf = new CSSFAggregator();
const result = await cssf.fetch();
console.log(result.events);eu-reg-feed is designed to be extended. To add a new regulator:
- Create a new file in
src/aggregators/extending theAggregatorbase class - Implement the
scrape()method to fetch and parse the regulator's publications - Map output to
RegEventtypes - Add tests in
tests/ - Register in
src/index.ts
See src/aggregators/cssf.ts for the simplest example (RSS-based) or src/aggregators/esma.ts for HTML scraping.
The full JSON Schema is at schema/regevent.schema.json.
| Type | Description |
|---|---|
consultation |
Open or closed public consultation |
final_rule |
Final rule, regulation, or standard |
guidance |
Supervisory guidance or circular |
guideline |
Formal guideline (comply-or-explain) |
opinion |
Regulatory opinion |
qa_update |
Q&A document update |
transposition |
National transposition of EU directive |
deadline |
Regulatory deadline or filing date |
warning |
Investor warning or fraud alert |
delegated_act |
EU delegated act |
implementing_technical_standard |
ITS publication |
regulatory_technical_standard |
RTS publication |
eu-reg-feed is the monitoring counterpart to open-annex-iv, an open-source AIFMD Annex IV XML serialization library.
Together they form a complete open-source regulatory data layer:
- open-annex-iv → data OUT to regulators (XML filing generation)
- eu-reg-feed → data IN from regulators (change monitoring)
Apache 2.0 — see LICENSE.
Julian Laycock — julian.laycock@caelith.tech