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)1871382026-10-152d ago99.6%28.4%
BRONZEAU AustraliaASX Appendix 3Y (Markit JSON)signal-only1× / day (02:30 UTC)225512026-10-161d ago0%0%
BRONZEBE BelgiumEuronext PDMR (consolidated)signal-only1× / day (02:30 UTC)2751042026-10-161d ago100%56.7%
GOLDCH SwitzerlandSIX SER — Management Transactions1× / day (02:30 UTC)68351452026-10-161d ago98.9%99.7%
BRONZECY CyprusXAK CSE public-pages APIsignal-only1× / day (02:30 UTC)213272026-10-161d ago0%0%
GOLDDE GermanyBaFin DealingsInfo1× / day (02:30 UTC)3728922026-10-152d ago99.7%99.9%
BRONZEDK DenmarkNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)932802026-10-161d ago78.2%42.3%
BRONZEEE EstoniaNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)902023-11-091073d ago22.2%22.2%
SILVERES SpainCNMV Directivossignal-only1× / day (02:30 UTC)1096742026-10-152d ago99.6%89.3%
BRONZEFI FinlandNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)25231382026-10-152d ago89.3%39.2%
BRONZEFR FranceEuronext PDMR (consolidated)signal-only1× / day (02:30 UTC)13044212026-10-161d ago90.3%39.3%
BRONZEGB United KingdomLSE RNS — DSH (Playwright via Railway)4× / day (every 6h)513512832026-10-161d ago55%18.3%
BRONZEGR GreeceAthens Exchangesignal-only1× / day (02:30 UTC)5761302026-10-161d ago0%0%
BRONZEHR CroatiaZagreb SE EHOsignal-only1× / day (02:30 UTC)37042026-12-10-54d ago77.8%0.3%
BRONZEHU HungaryMNB Közzétételeksignal-only1× / day (02:30 UTC)489742026-10-161d ago0%0%
BRONZEIE IrelandEuronext PDMR (consolidated)signal-only1× / day (02:30 UTC)1452026-10-143d ago0%0%
BRONZEIS IcelandNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)8262026-10-089d ago7.3%0%
BRONZEIT ItalyEuronext PDMR — Milansignal-only1× / day (02:30 UTC)395232026-10-143d ago22%4.3%
BRONZELT LithuaniaNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)7842026-10-161d ago0%0%
BRONZELU LuxembourgLuxSE OAMsignal-only1× / day (02:30 UTC)256492026-10-161d ago0%0%
BRONZELV LatviaNasdaq Nordic news APIsignal-only1× / day (02:30 UTC)36532026-10-0512d ago69.3%0%
BRONZEMT MaltaMSE Borża Maltasignal-only1× / day (02:30 UTC)64212026-10-161d ago0%0%
BRONZENL NetherlandsEuronext PDMR (consolidated)signal-only1× / day (02:30 UTC)3491032026-10-125d ago96.3%46.7%
BRONZENO NorwayEuronext PDMR — Oslo Børssignal-only1× / day (02:30 UTC)19211892026-10-161d ago7.7%0%
BRONZEPL PolandGPW (via Playwright)signal-only4× / day (every 6h)141192026-10-161d ago100%0%
BRONZEPT PortugalEuronext PDMR (consolidated)signal-only1× / day (02:30 UTC)5202026-07-1396d ago100%0%
BRONZERO RomaniaBVB CurrentReportssignal-only1× / day (02:30 UTC)127392026-10-161d ago100%0%
GOLDSE SwedenFinansinspektionen Insynsregistret1× / day (02:30 UTC)674416672026-10-161d ago99.1%99.8%
BRONZESI SloveniaLjubljana SEOnet RSSsignal-only1× / day (02:30 UTC)2262026-10-161d ago0%0%

Coverage matrix — Substantial holdings

TierCountrySourceCadenceRows30dLatest% ISIN% new_pct
BRONZEAT AustriaOeKB OAM — §135(2) BörseGsignal-only1× / day (02:30 UTC)1873382026-10-161d ago100%0%
BRONZEBE BelgiumEuronext Brussels — Transparency notifications (Royal Decree 14 Feb 2008)signal-only1× / day (02:30 UTC)520222026-10-161d ago53.1%72.3%
SILVERCH SwitzerlandSIX SER — Significant Shareholders1× / day (02:30 UTC)25711572026-10-161d ago84.4%98.4%
BRONZECY CyprusXAK CSE public-pages — TDsignal-only1× / day (02:30 UTC)1422026-10-152d ago0%0%
BRONZEDE GermanyBaFin AnteileInfo1× / day (02:30 UTC)40272992026-10-161d ago54.3%100%
BRONZEDK DenmarkNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)541262026-10-161d ago62.7%0%
BRONZEEE EstoniaNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)9202026-05-20150d ago13%0%
BRONZEES SpainCNMV Participaciones Significativassignal-only1× / day (02:30 UTC)85522026-10-170d ago68.2%0%
BRONZEFI FinlandNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)922322026-10-152d ago83.7%0%
BRONZEFR FranceAMF BDIF SPDE/DOPsignal-only1× / day (02:30 UTC)1044972026-10-161d ago73.1%4.8%
BRONZEGB United KingdomLSE RNS — HOL (Playwright via Railway)signal-only4× / day (every 6h)42809342026-10-161d ago38.3%0%
BRONZEGR GreeceAthens Exchange — TD filingssignal-only1× / day (02:30 UTC)67102026-10-161d ago4.5%0%
BRONZEHR CroatiaZagreb SE EHO — TD filingssignal-only1× / day (02:30 UTC)2602026-08-3147d ago11.5%0%
BRONZEHU HungaryMNB Közzétételek — TD filingssignal-only1× / day (02:30 UTC)3052026-10-161d ago0%0%
BRONZEIS IcelandNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)13332026-10-125d ago25.6%0%
BRONZEIT ItalyConsob 1INFO partecipazioni rilevantisignal-only1× / day (02:30 UTC)184242026-10-143d ago0.5%0%
BRONZELT LithuaniaNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)2202025-10-03379d ago0%0%
BRONZELU LuxembourgLuxSE OAM — Major shareholdingsignal-only1× / day (02:30 UTC)4682026-10-098d ago4.3%0%
BRONZELV LatviaNasdaq Nordic news API — TDsignal-only1× / day (02:30 UTC)23302026-03-23208d ago12%0%
BRONZEMT MaltaMSE Borża Malta — TDsignal-only1× / day (02:30 UTC)402026-08-2850d ago50%0%
BRONZENL NetherlandsAFM Wmz bulk CSV4× / day (every 6h)40283132026-10-152d ago31%15.7%
BRONZENO NorwayEuronext — Major shareholding notificationssignal-only1× / day (02:30 UTC)10201512026-10-161d ago4.8%1.3%
BRONZEPL Poland—1× / day (02:30 UTC)422742026-10-161d ago100%0%
BRONZERO RomaniaBVB ReportedShareholderssignal-only1× / day (02:30 UTC)55102026-10-143d ago50.9%100%
BRONZESE SwedenFinansinspektionen Flaggning1× / day (02:30 UTC)320162026-10-152d ago27.2%0%
BRONZESI SloveniaLjubljana SEOnet — TD filingssignal-only1× / day (02:30 UTC)1202026-07-1594d 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 at ingestion using a fixed approximate rate per currency (for example SEK 0.087, CHF 1.04, DKK 0.134, GBP 1.17), not the ECB rate on the transaction date. That is adequate for ranking and screening but not for precise P&L. Where the price itself is converted (Sweden, Switzerland) the original 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.