# Iv3, begrotingen en jaarrekeningen van gemeenten

Gemeenten leveren hun begroting, vier kwartaalcijfers en de jaarrekening aan bij het CBS, in een vaste indeling: Informatie voor derden (Iv3). Het CBS zet die cijfers onbewerkt open, per gemeente, per taakveld (van bestuur tot jeugdhulp en afval) en per soort baten of lasten. Er is één tabel per verslagjaar, ook voor provincies, waterschappen en gemeenschappelijke regelingen.

- Uitgever: Centraal Bureau voor de Statistiek
- Gebied: Nederland · Laagste detail: gemeente en taakveld
- Periode: 2010 – 2026 · Ververst: elk kwartaal
- Toegang: Open · Licentie: CC BY 4.0
- Koppelsleutels: gemeentecode (GM), taakveld, categorie
- Status: ok (2026-09-22) · 45073NED: Gemeenschappelijke regelingen 2025 onbewerkte Iv3-data
- URL: https://iv3statline.cbs.nl/portal.html?_la=nl&_catalog=IV3&tableId=45071NED

## Wat kun je ermee?
- **Hoeveel haalt je gemeente op aan OZB?.** Tel de baten op taakveld 0.61 (OZB woningen) en 0.62 (niet-woningen) op. Amsterdam begrootte voor 2025 op 0.61 samen 172,7 miljoen euro aan baten. Deel door het aantal inwoners en vergelijk met buurgemeenten.
- **Begroting tegen werkelijkheid.** Zet de begroting naast de jaarrekening van hetzelfde jaar. Op welke taakvelden geeft je gemeente steeds meer uit dan begroot?
- **Wie huurt het meest in?.** Categorie L3.5.1 (ingeleend personeel) tegenover L1.1 (salarissen en sociale lasten) laat per gemeente zien hoe afhankelijk die is van inhuur.
- **Volg de reserves.** De balansposten P111 (algemene reserve) en P112 (bestemmingsreserves) met de categorieën Primo en Ultimo laten zien hoe de spaarpot van een gemeente door het jaar verandert.

## Zo verwerk je het
1. **Zoek de tabel van het juiste jaar.** Elk verslagjaar heeft een eigen tabel: 45071NED is Gemeenten 2025, 45078NED Gemeenten 2026, 45067NED Gemeenten 2024. De catalogus geeft ze allemaal.
   `https://dataderden.cbs.nl/ODataCatalog/Tables?$format=json&$filter=Catalog%20eq%20'IV3'&$select=Identifier,Title,Modified`
2. **Bekijk de codes.** Vier dimensies: TaakveldBalanspost (145 codes), Categorie (78), Gemeenten (342) en Verslagsoort (6: begroting, kwartaal 1 tot 4, jaarrekening).
   `https://dataderden.cbs.nl/ODataApi/OData/45071NED/Verslagsoort`
3. **Filter op gemeente, verslagsoort en taakveld.** Vul de sleutels aan met spaties: gemeente tot 9 tekens ('GM0363   '), taakveld tot 6 ('0.61  '), categorie tot 8 ('B2.2.1  '). Zonder spaties krijg je een lege lijst.
   `https://dataderden.cbs.nl/ODataApi/OData/45071NED/TypedDataSet?$filter=Gemeenten%20eq%20'GM0363%20%20%20'%20and%20Verslagsoort%20eq%20'2025X000'%20and%20TaakveldBalanspost%20eq%20'0.61%20%20'`
4. **Gebruik de tweede plaatsing.** Elke verslagsoort wordt twee keer geplaatst. De tweede plaatsing bevat de verbeteringen die gemeenten nog instuurden. Bedragen zijn in duizenden euro's.
5. **Of neem de bewerkte tabellen.** Het CBS maakt er ook bewerkte tabellen van, maar alleen per regio en grootteklasse: 83641NED (begrotingen) en 84413NED (jaarrekeningen). De heffingen staan wel per gemeente in 83642NED.
   `https://opendata.cbs.nl/ODataApi/OData/83642NED/DataProperties`

## Interessante koppelingen
- Hoeveel geeft je gemeente per inwoner uit aan jeugdhulp? → [cbs-kwb](https://www.opendataindex.nl/bron/cbs-kwb.md) via gemeentecode (GM). Haal het aantal inwoners (of jongeren) uit de kerncijfers en deel de lasten op de jeugdtaakvelden erdoor (onder andere 6.751 tot en met 6.763, 6.792 PGB Jeugd, 6.821 en 6.822).
- Geven gemeenten met veel overlast meer uit aan openbare orde? → [politie-overlast](https://www.opendataindex.nl/bron/politie-overlast.md) via gemeentecode (GM). Zet de lasten op taakveld 1.2 (openbare orde en veiligheid) per inwoner naast de geregistreerde overlast per 1.000 inwoners.

## Vergelijkbare bronnen
- [waarstaatjegemeente](https://www.opendataindex.nl/bron/waarstaatjegemeente.md): De dashboards Gemeentefinanciën en BBV tonen dezelfde soort cijfers al bewerkt, als grafiek en per inwoner.
- [cbs-statline](https://www.opendataindex.nl/bron/cbs-statline.md): Bewerkte CBS-tabellen over gemeentefinanciën, opgeteld per regio en grootteklasse en gecontroleerd door het CBS.

## Waar je op moet letten
- **Onbewerkt, dus ongecontroleerd.** Het CBS draagt geen verantwoordelijkheid voor de kwaliteit van deze cijfers en hoeft ze in eigen publicaties niet een-op-een over te nemen. Een opvallend bedrag kan een boekingsfout zijn.
- **Gemeenten boeken verschillend.** Amsterdam boekt de OZB op woningen onder B2.2.1 (belastingen op producenten), niet onder B2.2.2. Tel alle baten- of lastencategorieën van een taakveld op voor je gemeenten vergelijkt.
- **Kwartaalcijfers ontbreken vaak.** Gemeenten onder 20.000 inwoners hoeven geen kwartaalcijfers te leveren. Wat niet geleverd is, staat in de tabel als '.' (ontbrekend).
- **Taakvelden pas vanaf 2017.** De indeling in taakvelden geldt vanaf 2017. Oudere jaren gebruiken een andere indeling (functies), zie de stopgezette CBS-tabellen tot 2016. Een lange reeks maak je niet zomaar.
- **Valkuilen in de API.** Sleutels zijn aangevuld met spaties, en de lengte verschilt per dimensie. Maximaal 10.000 rijen per verzoek. Een jaartabel voor alle gemeenten heeft 23,2 miljoen rijen: filter altijd op gemeente of taakveld.

## API (OData v3)

- Basis: https://dataderden.cbs.nl/ODataApi/OData/45071NED
- Toegang: Geen sleutel of account; de beschrijving en onze aanroep werken anoniem. (getest)
- Formaten: JSON, Atom/XML
- Omvang: 23208120 rijen (cellen) in TypedDataSet (getest)
- Filteren: OData-expressies in $filter, sleutels tussen enkele aanhalingstekens; eq, ne, gt, ge, lt, le, and, or, substringof(), startswith()

### Endpoints
- `GET /TableInfos`: titel, samenvatting, periode en wijzigingsdatum van de tabel
- `GET /UntypedDataSet`: de cijfers, alle waarden als tekst
- `GET /TypedDataSet`: de cijfers, met getallen als getal
- `GET /DataProperties`: alle kolommen: dimensies en onderwerpen met eenheid
- `GET /CategoryGroups`: groepering van categorieën
- `GET /TaakveldBalanspost`: codes en namen van de dimensie TaakveldBalanspost
- `GET /Categorie`: codes en namen van de dimensie Categorie
- `GET /Gemeenten`: codes en namen van de dimensie Gemeenten
- `GET /Verslagsoort`: codes en namen van de dimensie Verslagsoort

### Parameters
- `$filter`: rijen kiezen, bv. WijkenEnBuurten eq 'GM0363    ' (platform)
- `$select`: alleen deze kolommen (platform)
- `$top / $skip`: pagineren (platform)
- `$orderby`: sorteren (platform)
- `$format`: json of atom (platform)
- `$count`: achter een pad: alleen het aantal (platform)

### Dimensies
- `TaakveldBalanspost` (145 codes): '0.1   ' = 0.1 Bestuur; '0.2   ' = 0.2 Burgerzaken; '0.3   ' = 0.3 Beheer overige gebouwen en gronden
- `Categorie` (78 codes): 'L1.1    ' = L1.1 Salarissen en sociale lasten; 'L2.1    ' = L2.1 Belastingen; 'L3.1    ' = L3.1 Grond
- `Gemeenten` (342 codes): 'GM1680   ' = Aa en Hunze; 'GM0358   ' = Aalsmeer; 'GM0197   ' = Aalten
- `Verslagsoort` (6 codes): '2025X000' = Begroting; '2025X001' = 1e kwartaal; '2025X002' = 2e kwartaal

### Velden (2)
`k_1ePlaatsing_1` double, `k_2ePlaatsing_2` double

### Limieten en valkuilen
- Maximaal 10.000 rijen per verzoek; pagineer met $skip. De tabel Gemeenten 2025 telt 23.208.120 rijen (15 okt 2026). (getest)
- Sleutels zijn met spaties aangevuld en de lengte verschilt per dimensie: Gemeenten 9 tekens ('GM0363   '), TaakveldBalanspost 6 ('0.61  '), Categorie 8 ('B2.2.1  '). Let op: in andere CBS-tabellen is de gemeentecode 10 tekens. (getest)
- Eén tabel per verslagjaar en per soort overheid (45071NED = Gemeenten 2025). Zoek nieuwe jaren in de catalogus met $filter=Catalog eq 'IV3'. (getest)
- Twee maten: k_1ePlaatsing_1 en k_2ePlaatsing_2 (1e en 2e plaatsing), in 1.000 euro. De tweede plaatsing bevat verbeteringen van gemeenten. (uit de beschrijving)
- Verslagsoort-codes bevatten het jaar (2025X000 begroting, 2025X001 tot en met 2025X004 de kwartalen, 2025X005 jaarrekening). (getest)
- robots.txt van opendata.cbs.nl en iv3statline.cbs.nl verbiedt /ODataAPI/OData/* (hoofdletters API) en zet er Noindex op; dataderden.cbs.nl heeft geen robots.txt (404). (getest)

### Voorbeeld
```
https://dataderden.cbs.nl/ODataApi/OData/45071NED/TypedDataSet?$filter=Gemeenten%20eq%20'GM0363%20%20%20'%20and%20Verslagsoort%20eq%20'2025X000'%20and%20TaakveldBalanspost%20eq%20'0.61%20%20'%20and%20Categorie%20eq%20'B2.2.1%20%20'
```

## Zo haal je het op

### curl
```bash
curl "https://dataderden.cbs.nl/ODataApi/OData/45071NED/TypedDataSet?\$filter=Gemeenten%20eq%20'GM0363%20%20%20'%20and%20Verslagsoort%20eq%20'2025X000'%20and%20TaakveldBalanspost%20eq%20'0.61%20%20'"
```

### python
```python
import requests

url = "https://dataderden.cbs.nl/ODataApi/OData/45071NED/TypedDataSet"
# let op: sleutels zijn met spaties aangevuld (gemeente 9 tekens, taakveld 6)
f = "Gemeenten eq 'GM0363   ' and Verslagsoort eq '2025X000' and TaakveldBalanspost eq '0.61  '"
rijen = requests.get(url, params={"$filter": f}).json()["value"]
baten = sum(r["k_2ePlaatsing_2"] or 0 for r in rijen if r["Categorie"].startswith("B"))
print(round(baten / 1000, 1), "mln euro OZB woningen, begroting 2025")  # bedragen in 1.000 euro
```

## Wie gebruikt het
- [Waarstaatjegemeente.nl](https://www.waarstaatjegemeente.nl/mosaic/dashboard/besluit-begroting-en-verantwoording--bbv-): Dashboard met de BBV-indicatoren per gemeente

## Wat je ermee kunt bouwen
- [Gemeentebegroting-verkenner: waar geeft mijn gemeente geld aan uit?](https://www.opendataindex.nl/bouwen/gemeentebegroting-verkenner.md): Kies een gemeente en zie de begroting per taakveld, in euro's per inwoner, en hoe één taakveld zich verhoudt tot alle 342 andere gemeenten.


## Voorbeelden met echte cijfers (2)

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

- **Begrote algemene uitkering uit het gemeentefonds per inwoner: het hoogst in Schiermonnikoog (4.844 euro), het laagst in Bloemendaal (1.481 euro)** (begroting 2026). Tabel 45078NED. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/iv3-algemene-uitkering-per-inwoner)
  - `https://dataderden.cbs.nl/ODataApi/OData/45078NED/TypedDataSet?$format=json&$filter=(TaakveldBalanspost%20eq%20'0.7%20%20%20')%20and%20Verslagsoort%20eq%20'2026X000'%20and%20(Categorie%20eq%20'B4.3.1%20%20')&$select=Gemeenten,Categorie,k_1ePlaatsing_1,k_2ePlaatsing_2`
  - `https://opendata.cbs.nl/ODataApi/OData/37230ned/TypedDataSet?$format=json&$filter=substringof('GM'%2CRegioS)%20and%20Perioden%20eq%20'2026MM01'&$select=RegioS,BevolkingAanHetBeginVanDePeriode_1`
- **Begrote opbrengst van de OZB per inwoner: het hoogst in Schiermonnikoog (874 euro), het laagst in Ooststellingwerf (134 euro)** (begroting 2026). Tabel 45078NED. [Voorbeeld](https://www.opendataindex.nl/voorbeeld/iv3-ozb-per-inwoner)
  - `https://dataderden.cbs.nl/ODataApi/OData/45078NED/TypedDataSet?$format=json&$filter=(TaakveldBalanspost%20eq%20'0.61%20%20'%20or%20TaakveldBalanspost%20eq%20'0.62%20%20')%20and%20Verslagsoort%20eq%20'2026X000'%20and%20(Categorie%20eq%20'B2.2.1%20%20'%20or%20Categorie%20eq%20'B2.2.2%20%20')&$select=Gemeenten,Categorie,k_1ePlaatsing_1,k_2ePlaatsing_2`
  - `https://opendata.cbs.nl/ODataApi/OData/37230ned/TypedDataSet?$format=json&$filter=substringof('GM'%2CRegioS)%20and%20Perioden%20eq%20'2026MM01'&$select=RegioS,BevolkingAanHetBeginVanDePeriode_1`
