Sources & methodology
Where this data comes from
Everything this API serves is derived from publicly published Belgian healthcare nomenclature reference data. Nothing is invented, and nothing is computed.
- Provider
- RIZIV/INAMI
- Source application date
- 2026-09-01
- Last successful synchronisation
- 2026-09-22 10:33:00
- Codes currently served
- 31,231
- Source file
- TXT.zip
- Archive checksum
- 303f1ed75818d8a5…
The pipeline
- 1Official publication
RIZIV/INAMI publishes the NomenSoft reference tables as ZIP archives — 46 pipe-delimited tables, roughly 912 MB unpacked. - 2Retrieval and checksum
We fetch the archive and hash it. The site's own last-modified header is a constant 2018 timestamp on every file, so the content hash is the only reliable way to tell whether a publication is new. Every archive we download is retained, byte for byte, keyed by hash. - 3Parsing
windows-1252 into UTF-8; European decimals into exact decimal values; the 31-12-2999 open-ended marker into null; and records that span two physical lines rejoined, because the format has no quoting and some text fields contain a newline. - 4Validation
Row counts are checked against floors before anything is published. An archive that unzips but is truncated is rejected rather than allowed to replace a good dataset. - 5Normalisation and versioning
Each fact is stored with the period it applies to. Nothing is overwritten: a tariff moving from €32.84 to €33.74 is a period that ended and a period that began. - 6Change detection
Transitions are read out of the validity windows the source itself publishes, and imports are diffed against each other to catch corrections made without moving a window. - 7Indexing and serving
Dutch and French are indexed separately with their own language rules, and the result is served over /v1 with the source publication named on every response.
How fresh the data is
We check the source every day and publish a new import whenever the archive's checksum changes and the result validates. The source publishes on no fixed schedule: between February and September 2026 it published 16 update archives, with gaps ranging from two days to seven weeks.
We therefore make a promise about our polling, not about theirs. /v1/source-status reports the application date of the publication you are reading and when we last synchronised, so you never have to take freshness on trust.
Historical depth
The source keeps its update archive for five months, then removes older files. Anything not captured within that window is gone. We mirror every archived update as it appears, which is why the history available here can outlast what the source still offers.
What we do not do
- We do not compute amounts. The nomenclature uses a key-letter system where a tariff is nominally a coefficient times a letter value. That reproduces the published figure for 9,609 codes and fails for 1,352 of them. So we serve published amounts only, and expose the key letters as metadata.
- We do not interpret zero as free. 28% of published amounts are exactly €0.00, and what that means depends on the fee code it belongs to.
- We do not translate. Dutch and French descriptions are reproduced as published.
- We do not decide entitlement. This service creates no medical rules, determines no reimbursement rights, and replaces no official publication.
Official sources
- Tabellen met basisgegevens uit de nomenclatuur — the current reference tables.
- Historiek van de updatebestanden — the rolling five-month archive of update files.
Independence
HealthCodes API is an independent developer service and is not affiliated with or endorsed by RIZIV/INAMI. Official publications remain authoritative.
HealthCodes API is a developer convenience layer over public reference data. Where this service and an official publication disagree, the official publication is correct, and we would like to hear about it.