# Rijksbegroting (Rijksfinanciën open data)

Het ministerie van Financiën zet de begrotingstabellen van alle ministeries en fondsen in een open API: uitgaven, verplichtingen en ontvangsten per hoofdstuk, artikel en regeling, voor de begroting, de suppletoire begrotingen en het jaarverslag. Daarnaast: wie welke subsidie of bijdrage kreeg (financiële instrumenten, 2016–2025). De ontwerpbegroting 2027 stond er op 16 oktober 2026 al in; OCW alleen al is goed voor 60,8 miljard euro.

- Uitgever: Ministerie van Financiën
- Gebied: Nederland · Laagste detail: begrotingsregeling
- Periode: 2015 – 2027 (begrotingstabellen) · Ververst: elk kwartaal
- Toegang: Open · Licentie: CC0 1.0
- Koppelsleutels: hoofdstuk (VIII), artikelnummer, regelingnaam, ontvanger
- Status: grijs · ontwerpbegroting 2027 staat erin
- URL: https://www.rijksfinancien.nl/open-data/api-documentatie

## Wat kun je ermee?
- **Waar gaat het onderwijsgeld heen?.** Tel de uitgaven van OCW (hoofdstuk VIII) per artikel. In de ontwerpbegroting 2027 is primair onderwijs het grootst: 17,7 miljard euro van 60,8 miljard. De grafiek op deze pagina doet precies dat.
- **Begroot tegen uitgegeven.** Zet de begroting (phase=OWB) naast het jaarverslag (phase=JV) van hetzelfde jaar en kijk waar het verschil het grootst is.
- **Wie krijgt het meest van het Rijk?.** De financiële instrumenten noemen de ontvanger. In 2025 bovenaan: Zorginstituut Nederland (41,1 miljard), Sociale Verzekeringsbank (29,1 miljard) en TenneT Holding (11,9 miljard).
- **Een regeling door de jaren.** Zoek één regeling op naam in elke begroting sinds 2015. Niet op nummer: regeling_detailniveau_nummer verandert per jaar (Multiproblematiek bij BZK: 484520 in 2024, 595647 in 2025, 692510 in 2027).

## Zo verwerk je het
1. **Begrotingstabel van één ministerie.** year en phase zijn verplicht. vuo kiest uitgaven (U), ontvangsten (O) of verplichtingen (V); chapter het hoofdstuk. Bedragen zijn in duizenden euro's.
   `https://www.rijksfinancien.nl/open-data/api/json/budgettaire_tabellen?year=2027&phase=OWB&vuo=U&chapter=VIII`
2. **Alles als CSV.** Zelfde aanroep met csv in plaats van json. Zonder chapter krijg je de hele begroting (2.797 regels voor de uitgaven 2026).
   `https://www.rijksfinancien.nl/open-data/api/csv/budgettaire_tabellen?year=2026&phase=OWB&vuo=U`
3. **Ontvangers van subsidies en bijdragen.** Let op: de jaarparameter heet hier jaar (niet year), bedragen staan in hele euro's en er komen hoogstens 25 resultaten per keer (start voor de volgende).
   `https://www.rijksfinancien.nl/open-data/api/json/v2/financiele_instrumenten/ontvangers?jaar=2025&sort=amount%20desc`
4. **De beschrijving van de API.** OpenAPI 3.1 met alle paden en parameters (17 paden).
   `https://www.rijksfinancien.nl/swagger.json`

## Interessante koppelingen
- Wat het Rijk stuurt en wat gemeenten ontvangen → [iv3-gemeentefinancien](https://www.opendataindex.nl/bron/iv3-gemeentefinancien.md) via gemeentefonds (hoofdstuk B) en algemene uitkering (Iv3 taakveld 0.7). Zet de uitgaven van het Gemeentefonds naast de som van de algemene uitkering in de gemeentebegrotingen.
- Hoeveel geld steekt het Rijk in het stroomnet? → [tennet](https://www.opendataindex.nl/bron/tennet.md) via ontvanger (TenneT Holding B.V.). De financiële instrumenten tonen de bijdragen aan TenneT Holding per jaar; de TenneT-bronpagina beschrijft wat het netbedrijf zelf publiceert.

## Vergelijkbare bronnen
- [iv3-gemeentefinancien](https://www.opendataindex.nl/bron/iv3-gemeentefinancien.md): Begrotingen en jaarrekeningen van alle gemeenten en provincies, in een vaste indeling per taakveld.
- [ams-subsidies](https://www.opendataindex.nl/bron/ams-subsidies.md): Subsidies van één gemeente (Amsterdam) per ontvanger en project.
- [Miljoenennota en begrotingsstukken](https://www.rijksfinancien.nl): Dezelfde cijfers met de toelichting erbij, als leesbare stukken per ministerie.

## Waar je op moet letten
- **Twee eenheden in één API.** In de begrotingstabellen staat bedrag in duizenden euro's (OCW 2026: 57.033.064 = 57,0 miljard, zoals de memorie van toelichting). Bij de financiële instrumenten in hele euro's. De specificatie zegt het niet.
- **Niet alles optellen.** Fondsen als het Gemeentefonds en het Mobiliteitsfonds krijgen hun geld uit de hoofdstukken van ministeries, en Financiën bevat de aflossing van de staatsschuld. Een som over alle hoofdstukken telt dus dubbel.
- **Parameters wijken af van de specificatie.** Bij de financiële instrumenten negeert de API year en limit (wel: jaar; altijd 25 per pagina). De fiscale regelingen gaven alleen voor 2020 en eerder iets terug; 2021–2026 is leeg (16 oktober 2026).
- **Jaarverslag niet voor elk hoofdstuk.** Voor 2025 gaf phase=JV wel regels voor Defensie (X), maar niet voor De Koning (I). Controleer of een fase er is voor je gaat vergelijken.

## API (REST (JSON en CSV), OpenAPI 3.1)

- Basis: https://www.rijksfinancien.nl/open-data/api
- Toegang: Geen sleutel of account. (getest)
- Formaten: json, csv
- Omvang: 3183 begrotingsregels in de ontwerpbegroting 2026 (2.797 uitgaven, 386 ontvangsten); 21.193 ontvangers van financiële instrumenten in 2025 (getest)
- Filteren: Gewone queryparameters, geen querytaal. Bij de begrotingstabellen filter je op jaar, fase, vuo en hoofdstuk/artikel; bij de instrumenten op jaar, naam (search) en bedrag (min/max).; 

### Endpoints
- `GET /json/budgettaire_tabellen`: Begrotingstabellen: per regel hoofdstuk, artikel, artikelonderdeel, instrument, regeling en bedrag (in duizenden euro's). Ook als /csv/budgettaire_tabellen.
- `GET /json/v2/financiele_instrumenten/{ontvangers|regelingen|artikelen|hoofdstukken}`: Financiële instrumenten (subsidies, bijdragen, opdrachten) samengeteld per ontvanger, regeling, artikel of hoofdstuk, met totaal, min en max. Bedragen in hele euro's. Ook als /csv/v2/….
- `GET /json/v2/financiele_instrumenten?referrer={soort}&referrer_id={id}`: Doorklikken: bv. alle regelingen waaruit één ontvanger geld kreeg (referrer=ontvanger&referrer_id=politie).
- `GET /json/v2/financiele_instrumenten/available_years`: Beschikbare jaren (2016–2025 op 16 okt 2026).
- `GET /json/financiele_instrumenten`: Oude versie (v1) met year[], regulation[], receiver[], instrument[]: geeft een boom beleid › hoofdstuk › artikel › regeling.
- `GET /json/financiele_instrumenten/instruments`: Lijst van soorten instrumenten (Bekostiging, Bijdrage aan medeoverheden …).
- `GET /json/fiscale_regelingen/{year}`: Fiscale regelingen als boom met begroting, premie en fiscaal. Gaf voor 2020 gegevens (25 onderdelen), voor 2021–2026 een lege lijst.

### Parameters
- `year`: Begrotingsjaar bij budgettaire_tabellen (verplicht volgens de specificatie). Vanaf 2015; 2014 gaf een lege lijst. (getest)
- `phase`: OWB (ontwerpbegroting), O1, O2 (suppletoire begrotingen) of JV (jaarverslag). Zonder phase kwam OWB terug. (getest)
- `vuo`: U = uitgaven, O = ontvangsten, V = verplichtingen. (uit de beschrijving)
- `chapter`: Begrotingshoofdstuk in Romeinse cijfers of letter (VIII = OCW, B = Gemeentefonds). Ook chapter_name, article, article_name, sub_article, minister. (uit de beschrijving)
- `jaar`: Jaar bij de v2-financiële instrumenten. Let op: jaar, niet year; year wordt genegeerd (dan geen jaar in het antwoord). (getest)
- `search`: Zoeken op naam (search=stichting: 3.902 ontvangers in 2025). (getest)
- `sort`: amount desc|asc, name_string desc|asc, score desc|asc. (uit de beschrijving)
- `min`: Minimumbedrag in euro's (min=1000000000: 13 ontvangers in 2024). Ook max. (getest)
- `limit`: Aantal per pagina; onder de 25 wordt het 25, daarboven werkt het (100, 1.000 en 5.000 gaven precies zoveel). (getest)
- `start`: Offset voor de volgende pagina (records_start in het antwoord). (getest)
- `referrer`: artikel, hoofdstuk, ontvanger of regeling, met referrer_id (de id uit de lijst, bv. politie) en eventueel type. (getest)

### Velden in het antwoord (selectie) (12)
`index` string, `jaar` integer, `fase` string, `hoofdstuk_nummer` string, `artikel_nummer` string, `artikelonderdeel_naam` string, `instrument_of_uitsplitsing_apparaat_naam` string, `regeling_detailniveau_naam` string, `vuo` string, `bedrag` integer, `result[].bedrag` integer, `total_results` integer

### Limieten en valkuilen
- Geen gedocumenteerde rate limit. Een hele begroting (zonder chapter) is ongeveer 3.000 regels en komt in minder dan een seconde. (getest)
- Twee eenheden in één API: bedrag in de begrotingstabellen is in duizenden euro's (OCW 2026: 57.033.064 = 57,0 miljard), bij de financiële instrumenten in hele euro's. De specificatie zegt het niet. (ervaring)
- Niet alle hoofdstukken optellen: fondsen (B Gemeentefonds, A Mobiliteitsfonds, K Deltafonds …) worden uit departementale hoofdstukken gevoed en IX bevat de financiering van de staatsschuld. (ervaring)
- regeling_detailniveau_nummer verandert per jaar voor dezelfde regeling; koppel jaren op naam, niet op nummer. (ervaring)
- Jaarverslag (phase=JV) 2025 gaf 3.017 uitgavenregels, maar niet voor elk hoofdstuk (I De Koning ontbrak). Controleer per hoofdstuk of de fase er is. (getest)
- In de v2-ontvangerslijst staan ook samengevoegde posten als "Geanonimiseerde ontvanger(s) van …"; dat zijn geen echte ontvangers. (getest)
- Het pad met /api/json/… staat zo in de specificatie zonder servers-veld: gebruik https://www.rijksfinancien.nl als basis. Een DSO-achtige aanroep (?_format=json) geeft 301 en daarna 404. (ervaring)

### Voorbeeld
```
https://www.rijksfinancien.nl/open-data/api/json/v2/financiele_instrumenten/ontvangers?jaar=2025&sort=amount%20desc&limit=25
```

## Zo haal je het op

### curl
```bash
curl "https://www.rijksfinancien.nl/open-data/api/json/budgettaire_tabellen?year=2027&phase=OWB&vuo=U&chapter=VIII"
```

### python
```python
import requests
from collections import defaultdict

url = "https://www.rijksfinancien.nl/open-data/api/json/budgettaire_tabellen"
rijen = requests.get(url, params={"year": 2027, "phase": "OWB", "vuo": "U", "chapter": "VIII"}).json()
per_artikel = defaultdict(int)
for r in rijen:
    per_artikel[r["artikel_naam"]] += r["bedrag"]  # duizenden euro's
for naam, bedrag in sorted(per_artikel.items(), key=lambda x: -x[1]):
    print(f"{naam}: {bedrag / 1e6:.1f} miljard euro")
```

## Wat je ermee kunt bouwen
- [Rijksbegroting-tracker: begroot tegen uitgegeven](https://www.opendataindex.nl/bouwen/rijksbegroting-tracker.md): Volg per ministerie en per begrotingsartikel wat het Rijk van plan was uit te geven en wat het echt uitgaf, jaar na jaar, met de moties en amendementen die de Kamer erover indiende.


## Voorbeelden met echte cijfers (1)

Per voorbeeld de bevinding, de peildatum en de aanroep die precies deze cijfers ophaalt.

- **Uitgaven van het ministerie van OCW per begrotingsartikel: het meest primair onderwijs (17.733 miljoen euro), dan voortgezet onderwijs en wetenschappelijk onderwijs** (2027). Tabel budgettaire_tabellen. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/rijksfinancien-ocw-per-artikel)
  - `https://www.rijksfinancien.nl/open-data/api/json/budgettaire_tabellen?year=2027&phase=OWB&vuo=U&chapter=VIII`
