
Central government budget (Rijksfinanciën open data)
The Ministry of Finance publishes the budget tables of all ministries and funds through an open API: expenditure, commitments and revenue per chapter, article and scheme, for the budget, the supplementary budgets and the annual report. Plus who received which grant or contribution (financial instruments, 2016–2025). The draft budget for 2027 was already there on 16 October 2026; the Ministry of Education alone accounts for 60.8 billion euros.

Spending by the Ministry of Education by budget article: most primary education (17,733 million euros), then secondary education and universities
Spending by the Ministry of Education by budget article, 2027, in million euros. Total: 60,774; the largest 12 of 15 categories are shown. Primary education is 29% of the total. Chapter VIII (Onderwijs Cultuur en Wetenschap), draft budget 2027, expenditure (vuo=U). Amounts in the API are in thousands of euros.
What you can build with it1
What can you do with it?4 ideas
Where does the education money go?
Add up the Ministry of Education's spending (chapter VIII) per article. In the draft budget for 2027 primary education is the largest: 17.7 billion of 60.8 billion euros. The chart on this page does exactly that.
Budgeted against spent
Put the budget (phase=OWB) next to the annual report (phase=JV) of the same year and see where the gap is largest.
Who gets the most from central government?
The financial instruments name the recipient. Top of 2025: Zorginstituut Nederland (41.1 billion), the Social Insurance Bank (29.1 billion) and TenneT Holding (11.9 billion).
One scheme over the years
Look up one scheme by name in every budget since 2015. Not by number: regeling_detailniveau_nummer changes every year (Multiproblematiek at the Interior Ministry: 484520 in 2024, 595647 in 2025, 692510 in 2027).
How to process it4 steps
Budget table of one ministry
year and phase are required. vuo picks expenditure (U), revenue (O) or commitments (V); chapter the budget chapter. Amounts are in thousands of euros.
https://www.rijksfinancien.nl/open-data/api/json/budgettaire_tabellen?year=2027&phase=OWB&vuo=U&chapter=VIII
Everything as CSV
Same call with csv instead of json. Without chapter you get the whole budget (2,797 rows of expenditure for 2026).
https://www.rijksfinancien.nl/open-data/api/csv/budgettaire_tabellen?year=2026&phase=OWB&vuo=U
Recipients of grants and contributions
Note: the year parameter is called jaar here (not year), amounts are in whole euros and you get at most 25 results at a time (start for the next).
https://www.rijksfinancien.nl/open-data/api/json/v2/financiele_instrumenten/ontvangers?jaar=2025&sort=amount%20desc
The API description
OpenAPI 3.1 with all paths and parameters (17 paths).
https://www.rijksfinancien.nl/swagger.json
Interesting combinations


What central government sends and what municipalities receive
Compare the spending of the Municipalities Fund with the sum of the general grant in the municipal budgets.

How much money does the state put into the power grid?
The financial instruments show the contributions to TenneT Holding per year; the TenneT source page describes what the grid company itself publishes.
Similar sources
Iv3, municipal budgets and accountsBudgets and accounts of all municipalities and provinces, in a fixed breakdown per task field.
Amsterdam grants registerGrants of one municipality (Amsterdam) per recipient and project.
- MBMiljoenennota en begrotingsstukken not in the index yet
The same figures with the explanation, as readable documents per ministry.
What to watch out for
- Two units in one API
In the budget tables the amount is in thousands of euros (Education 2026: 57,033,064 = 57.0 billion, as in the explanatory memorandum). In the financial instruments it is in whole euros. The specification does not say so.
- Do not just add everything up
Funds such as the Municipalities Fund and the Mobility Fund get their money from ministry chapters, and Finance includes repayment of the national debt. A sum across all chapters therefore double counts.
- Parameters differ from the specification
For the financial instruments the API ignores year and limit (use jaar; always 25 per page). The tax schemes only returned data for 2020 and earlier; 2021–2026 is empty (16 October 2026).
- Annual report not for every chapter
For 2025, phase=JV returned rows for Defence (X) but not for the King (I). Check that a phase exists before comparing.
APIREST (JSON en CSV), OpenAPI 3.1 · read 16 Oct 2026
No key or account. tested
budget lines in the 2026 draft budget (2,797 expenditure, 386 revenue); 21,193 recipients of financial instruments in 2025 tested
jsoncsv
Base URL
https://www.rijksfinancien.nl/open-data/api
Endpoints 7
- GET
/json/budgettaire_tabellenBudget tables: per line chapter, article, article part, instrument, scheme and amount (in thousands of euros). Also as /csv/budgettaire_tabellen. - GET
/json/v2/financiele_instrumenten/{ontvangers|regelingen|artikelen|hoofdstukken}Financial instruments (grants, contributions, contracts) summed per recipient, scheme, article or chapter, with total, min and max. Amounts in whole euros. Also as /csv/v2/…. - GET
/json/v2/financiele_instrumenten?referrer={soort}&referrer_id={id}Drill down: e.g. all schemes from which one recipient received money (referrer=ontvanger&referrer_id=politie). - GET
/json/v2/financiele_instrumenten/available_yearsAvailable years (2016–2025 on 16 Oct 2026). - GET
/json/financiele_instrumentenOld version (v1) with year[], regulation[], receiver[], instrument[]: returns a tree policy › chapter › article › scheme. - GET
/json/financiele_instrumenten/instrumentsList of instrument types (Bekostiging, contributions to other governments …). - GET
/json/fiscale_regelingen/{year}Tax schemes as a tree with budget, premium and tax parts. Returned data for 2020 (25 items), an empty list for 2021–2026.
Filtering tested
Plain query parameters, no query language. For the budget tables filter on year, phase, vuo and chapter/article; for the instruments on year, name (search) and amount (min/max).
Parameters 11
year | Budget year for budgettaire_tabellen (required per the spec). From 2015; 2014 returned an empty list. | tested |
phase | OWB (draft budget), O1, O2 (supplementary budgets) or JV (annual report). Without phase, OWB came back. | tested |
vuo | U = expenditure, O = revenue, V = commitments. | from the description |
chapter | Budget chapter in Roman numerals or letter (VIII = Education, B = Municipal Fund). Also chapter_name, article, article_name, sub_article, minister. | from the description |
jaar | Year for the v2 financial instruments. Note: jaar, not year; year is ignored (then no year in the response). | tested |
search | Search by name (search=stichting: 3,902 recipients in 2025). | tested |
sort | amount desc|asc, name_string desc|asc, score desc|asc. | from the description |
min | Minimum amount in euros (min=1000000000: 13 recipients in 2024). Also max. | tested |
limit | Number per page; below 25 it becomes 25, above that it works (100, 1,000 and 5,000 returned exactly that many). | tested |
start | Offset for the next page (records_start in the response). | tested |
referrer | artikel, hoofdstuk, ontvanger or regeling, with referrer_id (the id from the list, e.g. politie) and optionally type. | tested |
Fields in the response (selection) 12
| Name | Type | Meaning |
|---|---|---|
index | string | Unieke sleutel van de regel (VIII.1.70.1.692752.U) |
jaar | integer | Begrotingsjaar |
fase | string | OWB, O1, O2 of JV |
hoofdstuk_nummer | string | Hoofdstuk (VIII); hoofdstuk_naam |
artikel_nummer | string | Artikel; artikel_naam (Primair onderwijs) |
artikelonderdeel_naam | string | Onderdeel van het artikel (Bekostiging) |
instrument_of_uitsplitsing_apparaat_naam | string | Instrument of apparaatsuitgave |
regeling_detailniveau_naam | string | Regeling; regeling_detailniveau_nummer verandert per jaar |
vuo | string | U, O of V |
bedrag | integer · 1.000 euro | Bedrag in duizenden euro's (begrotingstabellen) |
result[].bedrag | integer · euro | v2-instrumenten: bedrag in hele euro's per ontvanger/regeling |
total_results | integer | v2-instrumenten: aantal treffers; total is de som van alle bedragen |
Limits and pitfalls
- No documented rate limit. A whole budget (without chapter) is about 3,000 lines and arrives in under a second. tested
- Two units in one API: bedrag in the budget tables is in thousands of euros (Education 2026: 57,033,064 = 57.0 billion), in the financial instruments in whole euros. The specification doesn't say so. experience
- Don't add up all chapters: funds (B Municipal Fund, A Mobility Fund, K Delta Fund …) are fed from departmental chapters and IX contains the financing of the national debt. experience
- regeling_detailniveau_nummer changes per year for the same scheme; link years by name, not by number. experience
- Annual report (phase=JV) 2025 returned 3,017 expenditure lines, but not for every chapter (I The King was missing). Check per chapter whether the phase exists. tested
- The v2 recipient list also contains merged items such as "Geanonimiseerde ontvanger(s) van …" (anonymised recipients); these are not real recipients. tested
- The /api/json/… path is in the specification without a servers field: use https://www.rijksfinancien.nl as base. A DSO-style call (?_format=json) returns 301 then 404. experience
Try it HTTP 200 · 469 ms · 16 Oct
https://www.rijksfinancien.nl/open-data/api/json/v2/financiele_instrumenten/ontvangers?jaar=2025&sort=amount desc&limit=25
{
"jaar": 2025,
"search": null,
"max": 41063185000,
"min": -3934539000,
"total": 234370967000,
"total_results": 21193,
"records_show": 25,
"records_start": 0,
"result": [
{
"id": "zorginstituut nederland",
"titel": "Zorginstituut Nederland",
"bedrag": 41063185000
},
{
"id": "sociale verzekeringsbank",
"titel": "Sociale Verzekeringsbank",
"bedrag": 29107897000
}
]
}Shortened response, saved at harvest time. Click the URL for the real, current response.
Read from OpenAPI 3.1 ("Rijksfinancien: Open API" 1.0.0): 17 paths with parameters and allowed values · API documentation on the site. 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 "https://www.rijksfinancien.nl/open-data/api/json/budgettaire_tabellen?year=2027&phase=OWB&vuo=U&chapter=VIII"
More from Financiën in our index
54 datasets in data.overheid.nl. These changed most recently.
- Catalogusverkoop DRZ2026-10-07
- Verkoopkalender DRZ2026-10-06
- Uitslagenlijst Verkoop DRZ2026-10-06
- Kengetallen staatsdeelnemingen2026-10-06
- Rijksbegrotingsstaten2026-09-15
- Budgettaire Tabellen Rijksbegroting 20262026-09-15
More in this topic
See how this page is built
bron: rijksfinancien blokken: [] secties: - ideeen - verwerken - koppelingen - vergelijkbaar - beperkingen - code cache: tag: bron:rijksfinancien ververs: na statuscheck, als de bron nieuwer is statuscheck: methode: staat de ontwerpbegroting van volgend jaar (of dit jaar) erin verwacht: elk kwartaal
Source: content/bronnen/rijksfinancien.yaml · Markdown



