Skip to main content

Registry Data Provenance & Coverage

This page is the honest, audit-facing companion to Multi-Country Registry Services. That page describes how each connector works; this page answers the question a supervised MLRO or a buyer's auditor actually asks:

For each country, is the data coming from the official register, and how solid is the access path?

"We integrate 14 registries" is true as a count of connectors. It is not a statement that all 14 are official-API integrations of equal strength. Conflating those overstates coverage. This page states the difference explicitly, per country, and records which connectors were verified live against real companies.

:::info Governing principle In AML, provenance is the product. A registered address from a scraped aggregator is not the same evidence as one from the official register, and the difference is exactly what an auditor tests. This page never labels a source "official" when it is not. :::

Provenance tiers

TierMeaningTrust for a compliance decision
Tier 1 — Official APIThe official national register or authority, accessed via a structured/JSON/dataset API.Strongest. Primary-source, defensible under audit.
Tier 2 — Official, scrapedThe official register, but with no API — accessed by HTML scraping.Real primary source, but brittle: breaks when the site changes; needs monitoring.
Tier 3 — Third-party / aggregatorA commercial aggregator, mirror, or scraped commercial site — not the official register.Weakest provenance. Acceptable as corroboration or fallback; disclose it, never present it as official.

Coverage matrix

CountrySource(s)TierAuthData
🇨🇭 CHZefix (zefix.admin.ch)1Identity, legal form
🇨🇿 CZARES (ares.gov.cz)1Identity, legal form
🇨🇿 CZISIR (isir.justice.cz)1Insolvency
🇨🇿 CZCNB JERRS (jerrs.cnb.cz)2Regulated/licensed-entity status
🇨🇿 CZCommercial Register (or.justice.cz)2 scrapeFinancial-statement documents
🇨🇿 CZUBO register (esm/issm.justice.cz)2 scrapeBeneficial owners
🇩🇰 DKcvrapi.dk (3rd-party mirror of CVR)3Identity
🇪🇪 EEAriregister + avaandmed (rik.ee)1Identity + financials
🇪🇪 EEInforegister (inforegister.ee)3Financials — fallback/corroboration only
🇫🇮 FIPRH / YTJ (avoindata.prh.fi)1Identity
🇫🇷 FRBODACC (bodacc-datadila)1Insolvency, filings, legal events
🇫🇷 FRINPI RNE (registre-national-entreprises.inpi.fr)1keyIdentity, accounts
🇫🇷 FRINSEE SIRENE (api.insee.fr)1keyIdentity
🇬🇧 GBCompanies House (api.company-information.service.gov.uk)1keyIdentity, officers, UBO (PSC)
🇱🇹 LTJAR / Registrų centras (get.data.gov.lt)1Identity
🇳🇱 NLKVK API (api.kvk.nl) + opendata1keyIdentity
🇳🇴 NOBrønnøysund (data.brreg.no) + accounts1Identity + financials
🇵🇱 PLKRS (api-krs.ms.gov.pl)1Identity, officers
🇷🇴 ROANAF (webservicesp.anaf.ro)1Identity, VAT, fiscal status, financials
🇷🇴 RODirectors — ListaFirme via BrightData3 scrapetokenDirectors (no official ONRC connection)
🇸🇰 SKORSR (orsr.sk)2 scrapeIdentity, directors
🇸🇰 SKRUZ (registeruz.sk)1Financial statements

Live verification

The following connectors were exercised against real companies on 2026-07-21, end-to-end through the connector code (not just the raw endpoint), unless noted. The registry integration test suite (test_country_registry*) reported 100 passed.

CountryConnectorTest entityResult
🇷🇴 ROro_anaf_company_service.fetch_companyOMV Petrom SA (CUI 1590082)✅ Parsed model: name, reg-com J1997008302407, status active, CAEN, VAT-registered, address
🇨🇿 CZARES endpointŠkoda Auto a.s. (IČO 00177041)✅ Name, IČO, legal form, seat
🇬🇧 GBCompanies House (provisioned key)Tesco PLC (00445790)✅ HTTP 200 — TESCO PLC, active, incorporated 1947-11-27
🇫🇷 FRINSEE SIRENE (provisioned key)Danone (SIREN 552032534)success, statut 200
🇫🇷 FRINPI RNE (provisioned user/pass)Danone (SIREN 552032534)success, no error
🇳🇱 NLKVK⚠️ Not runnable — kvk_api_key not provisioned

API-key provisioning status

Four connectors are key-gated. A connector without its key exists in code but returns nothing at runtime — coverage claims must reflect the provisioned set, not the coded set.

ConnectorKey configured?Live today?
🇬🇧 Companies House
🇫🇷 INSEE
🇫🇷 INPI✅ (user/pass)
🇳🇱 KVKempty❌ — provision the key to activate NL

Honest limitations

:::warning Disclose these; do not claim around them

  • Romania — no official ONRC/RECOM connection. Company identity, VAT, fiscal status and financials come from ANAF (official), but directors come from ListaFirme.ro scraped via BrightData — a commercial aggregator, gated behind a token. The file is named ro_onrc_service.py, but it does not connect to ONRC. For the home market, this is the top gap to close.
  • Beneficial ownership (UBO) is thin. Dedicated UBO sources exist for GB (PSC register, Tier 1) and CZ (official UBO register, Tier 2 scraped) only. Elsewhere the system has directors/officers — which are not the same as beneficial owners.
  • Denmark is third-party. DK identity comes from cvrapi.dk, a private mirror of the official CVR — not the official Virk/CVR distribution API.
  • Czech register documents and Slovak ORSR are scraped (Tier 2). Real official sources, but brittle; they will break when those sites change and need active monitoring.
  • Netherlands is coded but inactive until the KVK API key is provisioned. :::

Roadmap to all-Tier-1

  1. RO — connect official ONRC/RECOM for directors and beneficial owners; retire the ListaFirme/BrightData director path (or demote it to explicit corroboration). Rename ro_onrc_service.py so it stops implying coverage it does not have.
  2. NL — provision the KVK API key (connector is ready; this is a configuration task).
  3. DK — migrate to the official Virk/CVR distribution API and away from cvrapi.dk.
  4. CZ / SK — de-scrape or.justice.cz and orsr.sk in favour of stable data feeds where they exist; add change-detection monitoring where they do not.
  5. UBO expansion beyond GB and CZ, prioritised by the jurisdictions in the active pipeline.

:::note Where the resolution engine helps Tier 2 and Tier 3 sources are exactly the case a trust-scoring / provenance-resolution layer is built for — flag a non-official source, weight it below official ones, and require corroboration before it feeds a decision. See Atlas Adoption and Entity Resolution. :::