Methodology

InsideREU aggregates two distinct EU regulator datasets: managers' transactions(MAR Article 19 / PDMR — directors and senior executives buying or selling their own employer's stock) and substantial holdings (Transparency Directive — anyone crossing a 5% / 10% / 25% / 50% / 75% ownership threshold). Every row in our database links back to the original regulator publication.

The coverage matrix below is the live state, refreshed hourly from the same internal view that powers our admin dashboard. We don't edit it, we don't hide rows, and we don't round up. If a country is BRONZE today, we say so today.

Coverage matrix — Filings (PDMR / Article 19)

TierCountrySourceCadenceRows30dLatest% ISIN% Value
BRONZEAT AustriaOeKB OAM — §19(3) MARsignal-only1× / day (02:30 UTC)1641552026-05-201d ago98.2%0%
BRONZEAU AustraliaASX Appendix 3Y (Markit JSON)signal-only1× / day (02:30 UTC)42202026-05-201d ago0%0%
BRONZEBE BelgiumEuronext PDMR (consolidated)signal-only1× / day (02:30 UTC)29292026-05-201d ago100%0%
GOLDCH SwitzerlandSIX SER — Management Transactions1× / day (02:30 UTC)20602202026-05-192d ago99%100%
BRONZECY CyprusXAK CSE public-pages APIsignal-only1× / day (02:30 UTC)100192026-05-192d ago0%0%
GOLDDE GermanyBaFin DealingsInfo1× / day (02:30 UTC)15881192026-05-201d ago99%100%
BRONZEDK DenmarkNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)4981022026-05-201d ago9.8%2%
BRONZEEE EstoniaNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)902023-11-09924d ago0%0%
BRONZEES SpainCNMV Directivossignal-only1× / day (02:30 UTC)4541102026-05-201d ago21.6%21.6%
BRONZEFI FinlandNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)16646222026-05-201d ago7.2%2.5%
BRONZEFR FranceEuronext PDMR (consolidated)signal-only1× / day (02:30 UTC)1571572026-05-210d ago100%0%
BRONZEGB United KingdomLSE RNS — DSH (Playwright via Railway)4× / day (every 6h)4314302026-05-201d ago10.9%6.3%
BRONZEGR GreeceAthens Exchangesignal-only1× / day (02:30 UTC)44442026-05-201d ago0%0%
BRONZEHR CroatiaZagreb SE EHOsignal-only1× / day (02:30 UTC)47242026-05-156d ago10.6%0%
BRONZEHU HungaryMNB Közzétételeksignal-only1× / day (02:30 UTC)32322026-05-201d ago0%0%
BRONZEIS IcelandNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)5282026-05-201d ago7.7%0%
BRONZEIT ItalyEuronext PDMR — Milansignal-only1× / day (02:30 UTC)150522026-05-201d ago0.7%0%
BRONZELT LithuaniaNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)6182026-05-156d ago0%0%
BRONZELU LuxembourgLuxSE OAMsignal-only1× / day (02:30 UTC)93282026-05-183d ago0%0%
BRONZELV LatviaNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)35422026-05-201d ago0%0%
BRONZEMT MaltaMSE Borża Maltasignal-only1× / day (02:30 UTC)332026-05-183d ago0%0%
BRONZENL NetherlandsEuronext PDMR (consolidated)signal-only1× / day (02:30 UTC)35352026-05-192d ago100%0%
BRONZENO NorwayEuronext PDMR — Oslo Børssignal-only1× / day (02:30 UTC)7083672026-05-210d ago5.5%0%
BRONZEPL PolandGPW (via Playwright)signal-only4× / day (every 6h)552026-05-201d ago100%0%
BRONZEPT PortugalEuronext PDMR (consolidated)signal-only1× / day (02:30 UTC)17172026-05-201d ago100%0%
BRONZERO RomaniaBVB CurrentReportssignal-only1× / day (02:30 UTC)13132026-05-201d ago100%0%
GOLDSE SwedenFinansinspektionen Insynsregistret1× / day (02:30 UTC)181710612026-05-201d ago99.7%100%
BRONZESI SloveniaLjubljana SEOnet RSSsignal-only1× / day (02:30 UTC)532026-05-1110d ago0%0%

Coverage matrix — Substantial holdings

TierCountrySourceCadenceRows30dLatest% ISIN% new_pct
BRONZEAT AustriaOeKB OAM — §135(2) BörseGsignal-only1× / day (02:30 UTC)1623352026-05-201d ago100%0%
BRONZEBE BelgiumEuronext Brussels — Transparency notifications (Royal Decree 14 Feb 2008)signal-only1× / day (02:30 UTC)290432026-05-192d ago10.7%91.7%
SILVERCH SwitzerlandSIX SER — Significant Shareholders1× / day (02:30 UTC)19311492026-05-201d ago80.6%98.1%
BRONZECY CyprusXAK CSE public-pages — TDsignal-only1× / day (02:30 UTC)732026-05-156d ago0%0%
BRONZEDE GermanyBaFin AnteileInfo1× / day (02:30 UTC)24113072026-05-201d ago46%100%
BRONZEDK DenmarkNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)451172026-05-147d ago17.1%0%
BRONZEEE EstoniaNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)9222026-05-201d ago0%0%
BRONZEES SpainCNMV Participaciones Significativassignal-only1× / day (02:30 UTC)68682026-05-210d ago32.4%0%
BRONZEFI FinlandNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)762512026-05-192d ago7.7%0%
BRONZEFR FranceAMF BDIF SPDE/DOPsignal-only1× / day (02:30 UTC)5761012026-05-210d ago37.3%10.1%
BRONZEGB United KingdomLSE RNS — HOL (Playwright via Railway)signal-only4× / day (every 6h)4134132026-05-201d ago4.4%0%
BRONZEGR GreeceAthens Exchange — TD filingssignal-only1× / day (02:30 UTC)882026-05-201d ago12.5%0%
BRONZEHR CroatiaZagreb SE EHO — TD filingssignal-only1× / day (02:30 UTC)202019-07-292488d ago0%0%
BRONZEHU HungaryMNB Közzétételek — TD filingssignal-only1× / day (02:30 UTC)662026-05-0120d ago0%0%
BRONZEIS IcelandNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)11822026-05-201d ago21.2%0%
BRONZEIT ItalyConsob 1INFO partecipazioni rilevantisignal-only1× / day (02:30 UTC)69152026-05-201d ago0%0%
BRONZELT LithuaniaNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)2202025-10-03230d ago0%0%
BRONZELU LuxembourgLuxSE OAM — Major shareholdingsignal-only1× / day (02:30 UTC)1162026-05-201d ago9.1%0%
BRONZELV LatviaNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)23302026-03-2359d ago0%0%
BRONZEMT MaltaMSE Borża Malta — TDsignal-only1× / day (02:30 UTC)112026-05-183d ago0%0%
BRONZENL NetherlandsAFM Wmz bulk CSV4× / day (every 6h)23915172026-05-192d ago9.5%14%
BRONZENO NorwayEuronext — Major shareholding notificationssignal-only1× / day (02:30 UTC)3301512026-05-210d ago2.1%9.4%
BRONZEPL Poland1× / day (02:30 UTC)32322026-05-201d ago100%0%
BRONZERO RomaniaBVB ReportedShareholderssignal-only1× / day (02:30 UTC)662026-05-201d ago16.7%100%
BRONZESI SloveniaLjubljana SEOnet — TD filingssignal-only1× / day (02:30 UTC)322026-05-147d ago0%0%

Tier definitions

  • GOLD— last filing < 5 days old, ≥95% of rows have ISIN, ≥95% have the secondary critical field (value in EUR for filings, new ownership % for holdings). Suitable for backtesting and time-sensitive signal generation.
  • SILVER— last filing < 10 days old, ≥80% ISIN, ≥70% secondary field. Suitable for thematic research and longer-horizon analysis. Not recommended for intraday signal use.
  • BRONZE— anything else. We do not lead with these in marketing claims; coverage exists but lags or is structurally incomplete (often because the regulator publishes via PDF rather than CSV/JSON, see “Signal-only scrapers” below).

How we ingest

Single nightly cron at 02:30 UTC. ~25 country-specific scrapers run in parallel with a 90-second per-source deadline; the orchestrator upserts each source's output as it returns, so partial completion still leaves earlier rows durable. The whole pipeline stays inside Vercel's 5-minute function ceiling. Each filing is keyed on a deterministic id (regulator-specific reference + insider id + transaction date + price + value), which makes re-scraping idempotent.

Source URLs and raw responses are preserved in the row's source_url and raw_data fields so any downstream researcher can reproduce the parse from the original regulator filing.

Signal-only scrapers

Several countries publish PDMR notifications as PDF attachments rather than structured CSV/JSON: AT (OeKB), ES (CNMV), FR/NL/BE/PT (Euronext consolidated), FI/DK/IS/EE/LV/LT (Nasdaq Nordic news), plus most TD-filings holdings sources. For these we emit one row per regulator filing with the metadata we can extract (insider name, company, transaction date, source URL) but leave shares and value_eur as NULL. The filing existence is a signal even without the dollar amount; full per-row PDF parsing is on the roadmap.

Known caveats

  • DE BaFin source-side delay.As of 2026-05-04, BaFin's DealingsInfo CSV is publishing filings 6–7 days after notification. Our scraper is healthy and runs nightly; the lag is at the regulator. We're monitoring; if it doesn't resolve by mid-May we'll add a secondary German source. Until then DE remains SILVER on freshness alone (completeness is unaffected).
  • EE / HR scrapers dormant.Estonia and Croatia regulators haven't published a relevant filing in our covered window. Volume in these markets is genuinely tiny, but if the upstream source format changed we'd catch it on the data-health dashboard.
  • Holdings new_pct gap.Most TD-holdings sources don't surface the post-trade ownership percentage in structured form, so the ability to filter “everyone who crossed from <5% to ≥10% in March” is currently limited to DE plus partial CH. Expanding this is the next holdings priority.
  • Value normalization. Where regulators report transaction value in local currency (CHF, GBP, NOK, etc.) we convert to EUR using the daily ECB reference rate at transaction date. Native currency is preserved in raw_data.

What we don't do (yet)

  • Historical backfill. Most country scrapers reach back ~12 months from go-live (2026-04-15). Earlier periods are not in our DB. If a customer needs 5+ year history for backtesting we can source it from a data broker on a per-deal basis.
  • Point-in-time corrections.Filings are upserted on the deterministic id. We don't currently version the row, so if a regulator corrects a filing after the fact we overwrite. Versioning is on the roadmap for any customer that needs it for backtest reproducibility.
  • Webhook delivery. Filings flow into a Postgres table that we can expose as a read-only credential to enterprise customers. Push-style webhook delivery is on the roadmap and will be built when a customer requires it.

Field reference

Each filings row has the schema documented at /developers/schema. The public API surface is at /developers.

Last refreshed from data-health view at page render. Updates every hour. For real-time admin view see /admin/data-health.