
Vektis open data on healthcare costs
What basic health insurance pays out per year, split into 26 cost types such as hospital care, medicines, GP and mental health. Per municipality (age in 5-year bands) and per three-digit postcode area (per year of age), for all insured people. Cost years 2011 to 2024.

Basic health insurance costs by type of care: most Specialist medical care (31,273 million euros), then Pharmaceuticals and Mental health, consultations
Basic health insurance costs by type of care, 2024, in million euros. Total: 59,525; the largest 12 of 25 categories are shown. Specialist medical care is 53% of the total. Claimed costs under the basic health insurance, including the residual category (groups smaller than ten and unknown characteristics). 17,773,377 insured years.
Basic health insurance costs per insured person: highest in Heerlen and 1 other municipality (4,520 euros), lowest in Urk (2,601 euros)
Basic health insurance costs per insured person per municipality, 2024, in euros per insured year. Netherlands as a whole: 3,349. 342 municipalities with a figure.
What you can build with it1
What can you do with it?4 ideas
Healthcare costs per resident in your municipality
Add up all cost categories per municipality and divide by insured-years. Put your municipality next to the national figure and its neighbours.
Where does the money go after 65?
Plot costs per insured-year by age band, per cost type. You see where medicines, hospital care and community nursing start to weigh most.
Correct for ageing
A municipality with many older people naturally has higher costs. Calculate what each municipality would cost with the national age profile, and only then compare.
Mental health costs and income per postcode area
Join the postcode3 figures with income data and see whether mental health consultation costs rise in poorer areas. Beware of small areas and of categories that changed name.
How to process it5 steps
Read the leaflet
It defines every cost category, explains the residual category and says which costs are still missing.
https://www.vektis.nl/vektisnl-assets/prd/storage/uploads/Docs%20per%20pagina/Open%20Data%20Bestanden/2024/Bijsluiter%20bij%20de%20Vektis%20Open%20Databestanden%20Zorgverzekeringswet%202011%20-%202024.pdf
Download one year per municipality
A semicolon-separated CSV. The 2024 municipality file is 2.9 MB with 12,992 rows (342 municipalities, two sexes, 19 age bands). The postcode file is 21.8 MB.
https://www.vektis.nl/vektisnl-assets/prd/storage/uploads/Docs%20per%20pagina/Open%20Data%20Bestanden/2024/Vektis%20Open%20Databestand%20Zorgverzekeringswet%202024%20-%20gemeente.csv
Remove the residual category
The row without sex, age and municipality is the residual category: groups of fewer than 10 people and insured people with unknown characteristics. In 2024 that was 412,394 people. Include it in the national total, not per municipality.
Divide by insured-years, not persons
aantal_verzekerdejaren weighs how long someone was insured or lived in the municipality. Anyone born, deceased or moving during the year counts only partly.
Join municipalities by name
There is no municipality code, only the name in capitals ('AA EN HUNZE'). The 2024 file follows the 2026 municipal boundaries. Build a lookup table to the GM code.
Interesting combinations


Are healthcare costs linked to income?
The key figures give income and age profile per municipality. Compare municipalities with a similar age profile first.


Where in the Netherlands are costs per insured person highest?
Use municipal boundaries from the same year as the file's classification (2026 for cost year 2024).
Similar sources
Waarstaatjegemeente.nl (municipal benchmark)The Zorggebruik dashboard shows municipal figures already processed and charted, from several sources.
CBS StatLineCBS publishes total Dutch healthcare spending, also outside basic insurance, but not per municipality and age.
What to watch out for
- Not for commercial use
The files are for personal use and research. Reselling and commercial use are not allowed. Always credit 'source: Vektis'.
- Only what goes through the insurer
Costs you pay yourself without claiming, and statutory personal contributions, are not included. The deductible that the insurer paid first and then reclaimed is included.
- Two years of claims, not everything
Each cost year includes claims over 8 quarters. For specialist mental health about 90% is in by then. Cross-border care is incomplete. Negative amounts are corrections.
- Cost categories change
The mental health category was called second-line up to 2013 and specialist up to 2021. From 2022 there are new categories for consultations, inpatient stays and other services. GP-MDZ only exists from 2015. Check the columns per year.
- Age bands sort badly
The bands are text with double spaces ('0 t/m 4 jaar', '5 t/m 9 jaar'). Sorted alphabetically, '10 t/m 14' comes before '5 t/m 9'. Turn them into numbers yourself.
APIBestanden (CSV) · read 16 Oct 2026
No key or account needed tested
rows in the 2024 municipality file (2.9 MB); the postcode3 file is 21.8 MB experience
csv
Base URL
https://www.vektis.nl/vektisnl-assets/prd/storage/uploads/Docs%20per%20pagina/Open%20Data%20Bestanden
Endpoints 5
- GET
/{jaar}/Vektis%20Open%20Databestand%20Zorgverzekeringswet%20{jaar}%20-%20gemeente.csvCosts per municipality, sex and 5-year age band, cost years 2017 to 2024 (2024: Last-Modified 20 July 2026). - GET
/{jaar}/Vektis%20Open%20Databestand%20Zorgverzekeringswet%20{jaar}%20-%20postcode3.csvCosts per 3-digit postcode area, sex and age in years, 2017 to 2024 (2024: 21.8 MB). - GET
/Gemeentebestanden%202011-2016/Vektis%20Open%20Databestand%20Zorgverzekeringswet%20{jaar}%20-%20gemeente.csvMunicipality files 2011 to 2016 (different folder). - GET
/Oud/Vektis%20Open%20Databestand%20Zorgverzekeringswet%20{jaar}%20-%20postcode3.csvPostcode3 files 2011 to 2016 (folder Oud). - GET
/2020/Vektis%20Open%20Databestand%20Zorgverzekeringswet%202020%20-%20gemeente_versie2.csvException: 2020 is named _versie2 (municipality and postcode3).
Filtering tested
No filters: whole files. Find the newest year by trying the fixed path with descending years (HEAD).
Parameters 1
jaar | Cost year 2011 to 2024; one file per year and per breakdown. 2025 didn't exist yet on 16 Oct 2026 (404); next release mid-2027. | tested |
Columns in the 2024 CSV file (selection) 10
| Name | Type | Meaning |
|---|---|---|
geslacht | tekst | M of V; leeg in de restcategorie |
leeftijdsklasse | tekst | Gemeentebestand: klassen van 5 jaar met dubbele spatie ('0 t/m 4 jaar'); postcode3: leeftijd in jaren |
gemeentenaam | tekst | Naam in hoofdletters ('AA EN HUNZE'), geen GM-code; indeling 2026 in het bestand 2024. Postcode3-bestand: postcode_3 |
aantal_bsn | getal · personen | Aantal verzekerden (unieke BSN's) |
aantal_verzekerdejaren | getal · jaren | Verzekerde jaren; deel kosten hierdoor, niet door aantal_bsn |
kosten_medisch_specialistische_z | getal · euro | Ziekenhuiszorg en medisch specialisten (kolomnaam afgekapt op 32 tekens) |
kosten_farmacie | getal · euro | Geneesmiddelen |
kosten_huisarts_inschrijftarief | getal · euro | Huisarts: inschrijftarief; ook _consult, _mdz (vanaf 2015) en _overig |
kosten_consulten_ggz | getal · euro | Ggz-consulten; met _intramuraal_verblijf_ggz en _overige_prestaties_ggz nieuw vanaf 2022 |
kosten_overig | getal · euro | Overige kosten; 26 kostenrubrieken in 2024 |
Limits and pitfalls
- No key and no limit; plain files with Last-Modified and Accept-Ranges (Range returns 206). tested
- The first data row is the residual category: sex, age and municipality empty (2024: 412,394 insured). Include it in the national total, not per municipality. tested
- Semicolon separator, dot as decimal mark, CRLF line endings, no BOM. tested
- Columns differ per year: 2011 uses upper case and full names (KOSTEN_MEDISCH_SPECIALISTISCHE_ZORG, KOSTEN_TWEEDELIJNS_GGZ), 2024 lower case truncated at 32 characters and different mental-health categories. Check the header per year. tested
- Matching municipality names to CBS codes works by name with a few aliases (BERGEN LB = Bergen (L.), NUENEN CA = Nuenen, Gerwen en Nederwetten). experience
- Costs are claims over 8 quarters; negative amounts are corrections. Specialist mental healthcare is about 90% complete. experience
- robots.txt allows everything for normal user agents; only AGB register pages are forbidden for AI crawlers. tested
Try it HTTP 200 · 998 ms · 16 Oct
https://www.vektis.nl/vektisnl-assets/prd/storage/uploads/Docs per pagina/Open Data Bestanden/2024/Vektis Open Databestand Zorgverzekeringswet 2024 - gemeente.csv
geslacht;leeftijdsklasse;gemeentenaam;aantal_bsn;aantal_verzekerdejaren;kosten_medisch_specialistische_z;kosten_farmacie;kosten_huisarts_inschrijftarief;kosten_huisarts_consult;kosten_huisarts_mdz;kosten_huisarts_overig;kosten_hulpmiddelen;kosten_mondzorg;kosten_paramedische_zorg_fysioth;kosten_paramedische_zorg_overig;kosten_ziekenvervoer_zittend;kosten_ziekenvervoer_liggend;kosten_kraamzorg;kosten_verloskundige_zorg;kosten_grensoverschrijdende_zorg;kosten_eerstelijns_ondersteuning;kosten_geriatrische_revalidatiez;kosten_eerstelijnsverblijf;kosten_verpleging_en_verzorging;kosten_gzsp;kosten_integrale_geboortezorg;kosten_innovatiegelden_ggz;kosten_overig;kosten_consulten_ggz;kosten_intramuraal_verblijf_ggz;kosten_overige_prestaties_ggz ;;;412394;220748.91;75738481.61;11107600.71;6081467.62;2120101.39;1852201.82;7886723.95;2751693.39;1909400.32;670095.03;685824.08;137566.16;3089765.03;1106950.27;1066411.95;36255655.9;0;233868.73;276735.8;1297283.78;53388.62;760262.82;0;489674.26;9488679.78;2134088.05;641623.15 M;0 t/m 4 jaar;AA EN HUNZE;503;462.82;594197.18;32444.9;35500.43;20536.52;15357.5;60736.99;6294.89;21220.92;19570.15;9072.21;1311.56;11235.92;0;0;531.63;0;0;0;2453.22;0;0;0
Shortened response, saved at harvest time. Click the URL for the real, current response.
Read from Page with all files per cost year and the terms · Package leaflet (PDF): definitions of the cost categories, residual category, completeness. Labels: from the description stated in what the api itself publishes. tested from our own small call. platform applies to every api on this platform, per its documentation. experience learned while building open data index.
How to fetch it
curl -o vektis-2024-gemeente.csv "https://www.vektis.nl/vektisnl-assets/prd/storage/uploads/Docs%20per%20pagina/Open%20Data%20Bestanden/2024/Vektis%20Open%20Databestand%20Zorgverzekeringswet%202024%20-%20gemeente.csv"
More in this topic
See how this page is built
bron: vektis-zorgkosten blokken: [] secties: - ideeen - verwerken - koppelingen - vergelijkbaar - beperkingen - code cache: tag: bron:vektis-zorgkosten ververs: na statuscheck, als de bron nieuwer is statuscheck: methode: Last-Modified van het gemeentebestand van het nieuwste kostenjaar verwacht: jaarlijks
Source: content/bronnen/vektis-zorgkosten.yaml · Markdown




