
Open Raadsinformatie
Agenda's, moties, raadsvoorstellen en verslagen van honderden gemeenten in één doorzoekbare index, met een open zoek-API.

Raadsdocumenten in Open Raadsinformatie per gemeente: het meest Amsterdam (224.023 documenten), dan Haarlem en Den Haag
Raadsdocumenten in Open Raadsinformatie per gemeente, oktober 2026, in documenten. Totaal: 4.966.438; de grootste 12 van 307 categorieën staan in de grafiek. Amsterdam is 5% van het totaal. Een bron is meestal een gemeente; Amsterdamse stadsdelen tellen apart. Het aantal zegt vooral hoeveel een gemeente publiceert en sinds wanneer ze is aangesloten.
Vergaderingen van raden en commissies die in Open Raadsinformatie staan: 20.868 vergaderingen per jaar in 2025, 3,8 keer zo veel als in 2010
Vergaderingen van raden en commissies die in Open Raadsinformatie staan, 2010 – 2025, in vergaderingen per jaar. Het hoogste punt was 2021 (21.656).
Wat je ermee kunt bouwen1
Wat kun je ermee?2 ideeën
Wat zei de raad hierover?
Zoek een onderwerp in alle gemeenten tegelijk en zie waar het speelt.
Moties volgen
Verzamel moties over een onderwerp en zie welke partijen ze indienen.
Interessante koppelingen
Vergelijkbare bronnen
open.overheid.nl (Woo-documenten)Woo-besluiten en andere openbaar gemaakte documenten.
APIREST (JSON) + NDJSON-export · gelezen 16 okt 2026
Geen sleutel of account; alle endpoints zijn alleen-lezen. getest
documenten van 326 organisaties (308 gemeenten, 13 waterschappen, 8 provincies) volgens /api/stats, 16 okt 2026 getest
jsonndjsonjpeg
Basisadres
https://openbesluitvorming.nl/api
Endpoints 8
- GET
/searchZoeken in vergaderingen, documenten, moties en gesproken woord; gegroepeerd en ontdubbeld, paginahits terug naar documentniveau (matchedPage). - GET
/entities/{entity_id}Eén entiteit volledig: documenttekst als Markdown en downloadUrl; bij een vergadering de agenda, moties met stemmen en opnames met transcript. Id URL-coderen (dubbele punten). - GET
/entities/{entity_id}/pdf/page/{n}Een PDF-pagina als JPEG (96 dpi, scale=2 voor 192 dpi); kop X-Pdf-Page-Count. - GET
/sourcesAlle bronnen (organisaties) met key, leverancier en soort; implemented=true voor alleen actieve. - GET
/statsAantal documenten en organisaties (1 uur gecachet). - GET
/statusVersheid per organisatie en per leverancier in één aanroep: state, lastSuccessAt, latestContentDate, coverage, cbsId (10 minuten gecachet). - GET
/export/snapshot?source={key}Bulk: de huidige stand van één bron als NDJSON, pagineren met cursor (X-Next-Cursor, X-Has-More). - GET
/export/changes?source={key}&cursor={c}Bulk: wijzigingen sinds een cursor (upserts en deletes met reden), om bij te blijven zonder alles opnieuw te halen.
De API's van deze bron 1 · uit de documentatie van de aanbieder uit de beschrijving
Open Raadsinformatie Classic (Elasticsearch 7)
De oude, publieke alleen-lezen Elasticsearch-proxy: één index per bron (ori_<naam>_<tijdstempel>), vrije Query DSL. Werkte op 16 okt 2026 nog (7.457.556 objecten in 310 shards), maar de vergaderingen lopen tot juli 2026: niet meer bijgewerkt. Velden o.a. @type (MediaObject, Meeting, AgendaItem), name, start_date, last_discussed_at, text.
https://api.openraadsinformatie.nl/v1/elastic- GET
/ori_*/_search?source_content_type=application/json&source={json}Zoeken met Query DSL als GET (een gewone link); aggregaties werken, bv. terms op _index - POST
/ori_*/_searchZelfde met de Query DSL in de body - GET
/_cat/indices?vAlle indexen (één per bron)
Open Data Index gebruikt deze proxy nog voor de voorbeeldgrafiek; overstappen naar /api/search en de export ligt voor de hand.
Filteren uit de beschrijving
Geen querytaal: filter met organization, entityType, dateFrom en dateTo; zoek met vrije tekst in query. Fouten zijn JSON met een vaste code (unknown_organization, invalid_date …): kijk naar code, niet naar de Nederlandse tekst.
Parameters 10
query | Vrije tekst, geen querytaal: leestekens worden weggehaald en woorden met AND gecombineerd; "tussen aanhalingstekens" is een woordgroep. Verplicht tenzij organization is gegeven. "a b"~10 geeft 400. | uit de beschrijving |
organization | Bron-key uit /sources (soest, amsterdam …), hoofdlettergevoelig; onbekend = 400. | uit de beschrijving |
entityType | Meeting, Document, Motion of Recording, met hoofdletter (motion gaf 400 unknown_entity_type). | getest |
sort | date_desc (standaard), date_asc, title_asc of relevance. | uit de beschrijving |
dateFrom | Vanaf JJJJ-MM-DD (inclusief), op sortDate: de vergaderdatum, niet de schrijf- of publicatiedatum. | uit de beschrijving |
dateTo | Tot en met JJJJ-MM-DD (de hele dag telt mee). | uit de beschrijving |
limit | Resultaten per pagina, standaard 24, hoogstens 100. | uit de beschrijving |
offset | Pagineren; reikt maar een paar honderd tot ongeveer duizend resultaten diep. Dieper: smaller filteren of de export gebruiken. | uit de beschrijving |
source | Bij /export: de bron-key (verplicht). | uit de beschrijving |
cursor | Bij /export: de X-Next-Cursor van de vorige pagina; cursor=motion springt naar de moties. | uit de beschrijving |
Velden in zoekresultaat en detail (selectie) 13
| Naam | Type | Betekenis |
|---|---|---|
entityId | string | Stabiel id: type:leverancier:soort:organisatie:bron-id (document:ibabs:gemeente:soest:…) |
entityType | string | Meeting, Document, Motion (zoekresultaat van een Recording komt terug als Meeting) |
organization | string | Naam van de organisatie |
sortDate | datetime | Vergaderdatum (UTC); bij registerstukken de registerdatum |
title | string | Titel |
summary | string | Tekstfragment rond de treffer (summaryHtml met <b>) |
downloadUrl | uri | Link naar de opgeslagen PDF |
matchedPage | integer | Pagina met de treffer; pageCount = aantal pagina's |
totalCount | integer | Aantal treffers; totalIsApproximate zegt of het een schatting is |
markdownText | string | Detail: de volledige tekst van een document |
motion.result | string | Detail motie: aangenomen, verworpen, ingetrokken, aangehouden of overig |
motion.votes | lijst | Detail motie: per raadslid option (voor/tegen), voter_name en group_name (fractie) |
Toon alle 13
| Naam | Type | Betekenis |
|---|---|---|
recordings.segments | lijst | Detail vergadering: transcript (spraakherkenning) met start_seconds en end_seconds |
Limieten en valkuilen
- 60 eenheden per minuut per client (token bucket). Een zoekvraag kost 1, plus 1 per 250 resultaten boven de 24; een PDF-pagina 1/8. Koppen RateLimit-Limit, -Remaining en -Reset; bij te veel 429 met Retry-After. uit de beschrijving
- Export: hoogstens 1.000 records per pagina (standaard 500). robots.txt sluit /api/export/ uit voor crawlers, maar de documentatie noemt de export juist als de route voor hergebruikers die alles willen. uit de beschrijving
- Dit is de opvolger van Open Raadsinformatie Classic (api.openraadsinformatie.nl, Elasticsearch). De oude ids zijn niet om te zetten naar de nieuwe; MediaObject heet nu Document. uit de beschrijving
- /sources gaf 397 bronnen (360 gemeenten, 21 waterschappen, 12 provincies, 4 verzamelingen), 335 actief. Leveranciers: iBabs 201, Notubiz 148, GemeenteOplossingen 43, Parlaeus 5. getest
- /status gaf 317 bronnen ok, 62 niet meer geïmporteerd, 10 opgeheven door herindeling (met opvolger en cbsId), 4 falend. latestContentDate ligt vaak in de toekomst: agenda's staan er voor de vergadering. getest
- Stemmen per raadslid alleen waar de raad digitaal stemt (volgens de documentatie 67 van 142 iBabs-gemeenten); Notubiz-bronnen hebben alleen de uitslag. Onthouding en afwezigheid zijn niet te onderscheiden. uit de beschrijving
- Transcripten zijn spraakherkenning zonder sprekers: geen citaten op naam. uit de beschrijving
Probeer het HTTP 200 · 351 ms · 16 okt
https://openbesluitvorming.nl/api/search?query=woningbouw&entityType=Motion&limit=3
{
"results": [
{
"entityId": "motion:notubiz:gemeente:krimpen_ad_ijssel:1215231",
"organization": "Krimpen Ad Ijssel",
"entityType": "Motion",
"entityTypeLabel": "Motie",
"date": "15 oktober 2026",
"sortDate": "2026-10-15T18:00:00Z",
"title": "Motie CDA,LK Motie Geen gemiste kansen Onderzoek woningbouw bij uitbreiding supermarkt de Olm (vs 3)",
"summary": "Motie CDA,LK Motie Geen gemiste kansen Onderzoek woningbouw bij uitbreiding supermarkt de Olm (vs 3) Moties Motie Kar…",
"summaryHtml": "Motie CDA,LK Motie Geen gemiste kansen Onderzoek <b>woningbouw</b> bij uitbreiding supermarkt de Olm (vs 3) Moties Mo…"
},
{
"entityId": "motion:notubiz:gemeente:ijsselstein:1214069",
"organization": "Ijsselstein",
"entityType": "Motion",
"entityTypeLabel": "Motie",
"date": "8 oktober 2026",
"sortDate": "2026-10-08T18:00:00Z",
"title": "M2 PRO - Stapeling en toedeling van functies bij woningbouw",
"summary": "M2 PRO Stapeling en toedeling van functies bij woningbouw Moties Motie Aangenomen aangenomen Sanne de Bruijne",
"summaryHtml": "M2 PRO Stapeling en toedeling van functies bij <b>woningbouw</b> Moties Motie Aangenomen aangenomen Sanne de Bruijne"
}
],
"totalCount": 528,
"totalIsApproximate": true,
"hasMore": true
}Ingekort antwoord, opgeslagen bij het oogsten. Klik op het adres voor het echte, actuele antwoord.
Gelezen uit API-documentatie van OpenBesluitvorming (Markdown): endpoints, parameters, foutcodes, rate limits, export · Migratiegids van Open Raadsinformatie Classic (Elasticsearch) naar OpenBesluitvorming, met veldmapping · JSON Schema's per entiteit (meeting, document, motion, recording, vote …). Labels: uit de beschrijving staat in wat de api zelf publiceert. getest uit onze eigen kleine aanroep. platform geldt voor elk api van dit platform, volgens de documentatie. ervaring zelf ondervonden bij het bouwen van open data index.
Vragen waarin deze bron helpt
Meer in dit thema
Bekijk hoe deze pagina is opgebouwd
bron: openraadsinformatie blokken: [] secties: - ideeen - koppelingen - vergelijkbaar cache: tag: bron:openraadsinformatie ververs: na statuscheck, als de bron nieuwer is statuscheck: methode: zoek-API geeft resultaat verwacht: dagelijks
Bron: content/bronnen/openraadsinformatie.yaml · Markdown





