Home › Data · Version française

The dataset

Prices are published. One canton CHF 250 · the full set CHF 1 500 · annual refresh CHF 600. Order →

The pages of this site are free and will stay free: an official fact belongs to nobody. What is sold is the compilation work — extracting the European register, giving it two joins it does not have — the Swiss company identifier and the municipality —, dating it, and delivering it in a form you can actually use.

What the set covers

The column that makes this usable: the Swiss company identifier

Every record carries the Swiss UID (CHE-…) on 95.4 % of rows. This is what lets you match the register against your own files — company by company, on a number rather than on a name.

Matching on names does not work: the commercial register writes Dassym S.A. where the medical register writes Dassym SA, and no software reads those as the same firm. EUDAMED declares a UID on 60.1 % of records, but the field is free text there — suffixes, missing separators, a German VAT number here and there — so only 36.0 % were usable as written. Normalising those and completing the rest against the commercial register is the work.

Nothing is guessed. Column uid_appariement states how each identifier was obtained, and uid_motif says why the 27 unresolved rows are empty. A file filled plausibly turns against whoever uses it.

Why the timing matters

Actor registration in EUDAMED has only been mandatory since 28 May 2026, under Commission Decision (EU) 2025/2371. The Swiss list is still filling: what it holds today is not what it will hold at the end of the year. Snapshots of this register age quickly — the changes are the durable part.

Honest limit: continuous capture here started on 15 August 2026, so the May-to-August build-up was not recorded. What is offered is every change from that date on.

Fields, and their real fill rates

FieldDescriptionFilled
srnSingle Registration Number issued by the European Commission — the register key100.0 %
nomCompany name as filed100.0 %
nom_abregeShort name, where one is filed37.0 %
type_acteurRole: manufacturer, system/procedure pack producer, notified body100.0 %
statutActive or inactive in the register100.0 %
statut_depuisDate of the status change — the register fills this rarely, hence the low rate4.9 %
npaPostal code as filed in EUDAMED100.0 %
localiteTown as filed in EUDAMED100.0 %
no_ofsSwiss federal municipality number, resolved by us — joins to any Swiss municipal data99.8 %
communeSwiss municipality, resolved by us99.8 %
cantonCanton, resolved by us99.8 %
adresseStreet address as filed99.8 %
emailContact address published by the operator in the register100.0 %
telephonePhone as filed61.2 %
site_webWebsite as filed70.5 %
tva_europeenneVAT / identifier EXACTLY as declared in EUDAMED — free text, kept unchanged for provenance. Use the `uid` column instead60.1 %
versionVersion of the register record100.0 %
capture_leDate of our snapshot100.0 %
resolu_parHow the municipality was resolved: postal code, or fallback on town name99.8 %
uidSwiss company identifier (CHE-…), canonical form — the column that lets this file join to the commercial register and to your own databases95.4 %
uid_appariementHow that identifier was obtained, so how strong the evidence is: “source” declared as such in the European register · “source-normalise” same value, tax suffix or separators corrected · “nom+siege” confirmed against the commercial register on BOTH the company name AND the federal number of its registered seat · “nom-unique-siege-autre” sole namesake in Switzerland, registered seat differing from the operating address95.4 %
uid_motifWhy the identifier is empty, when it is — never guessed to fill a gap4.6 %

Measured on the 587 delivered rows, not copied from a previous run. Free sample (CSV) · schema.json

Order

Pick the line you are interested in.

Réponse sous 48 heures ouvrables, avec le prix exact et le dictionnaire de données.