303,525 datasets indexed1,419 publishers
Open Data IndexThe index of open data about the Netherlands
Sources›Government

Dutch House of Representatives open data

Everything the House does, as an open API: motions and amendments, how each party voted, written questions, debates and committees, parliamentary papers, and the members themselves, with their side jobs, gifts and trips.

GovernmentOpenAPINetherlands · motion, vote, member
Up to date · updated yesterday · checked 17:23
opendata.tweedekamer.nl
Screenshot of opendata.tweedekamer.nl

Amendments filed: 982 per year in 2025, 7% more than in 2009

Amendments filed, 2009 – 2025, per year. The highest point was 2016 (1,163).

Source: Tweede Kamer, Gegevensmagazijn (Zaak, alleen volle jaren) · opgehaald 25 oktober 2026Open the table Single block

Government letters to the House: 4,935 per year in 2025, 17% less than in 2009

Government letters to the House, 2009 – 2025, per year. The highest point was 2009 (5,958).

Source: Tweede Kamer, Gegevensmagazijn (Zaak, alleen volle jaren) · opgehaald 25 oktober 2026Open the table Single block

Gifts declared by members: 434 per year in 2025, 52% more than in 2010

Gifts declared by members, 2010 – 2025, per year. The highest point was 2018 (592).

Source: Tweede Kamer, Gegevensmagazijn (PersoonGeschenk, alleen volle jaren) · opgehaald 25 oktober 2026Open the table Single block

Private members' bills: 13 per year in 2025, 2.2 times as much as in 2009

Private members' bills, 2009 – 2025, per year. The highest point was 2016 (28).

Source: Tweede Kamer, Gegevensmagazijn (Zaak, alleen volle jaren) · opgehaald 25 oktober 2026Open the table Single block

Written parliamentary questions: 1,993 per year in 2025, 34% less than in 2009

Written parliamentary questions, 2009 – 2025, per year. The highest point was 2019 (3,076).

Source: Tweede Kamer, Gegevensmagazijn (Zaak, alleen volle jaren) · opgehaald 25 oktober 2026Open the table Single block

Oral questions at question time: 76 per year in 2025, 44% less than in 2009

Oral questions at question time, 2009 – 2025, per year. That is the lowest point in the series.

Source: Tweede Kamer, Gegevensmagazijn (Zaak, alleen volle jaren) · opgehaald 25 oktober 2026Open the table Single block

Motions filed in the House: 4,440 per year in 2025, 70% more than in 2009

Motions filed in the House, 2009 – 2025, per year. The highest point was 2022 (5,010).

Source: Tweede Kamer, Gegevensmagazijn (Zaak, alleen volle jaren) · opgehaald 25 oktober 2026Open the table Single block

What the House worked on last year: brief regering is the largest part, 31% in 2025

Breakdown in 2025: brief regering 31%, motie 28%, schriftelijke vragen 12%, amendement 6.1%, brief commissie 5.3%, position paper 3.5%, other (26) 14%. Total: 15,992 cases.

Source: Tweede Kamer, Gegevensmagazijn (Zaak) · opgehaald 25 oktober 2026Open the table Single block

All 9 examples

What you can build with it2

What can you do with it?3 ideas

Getting started

Which party files the most motions?

Count motions per sponsor and year. Also check how many were adopted.

Getting started

Voting records side by side

Put all votes of two parties in a year side by side and calculate how often they agreed.

Advanced

Side jobs and gifts

Per member there are side jobs, income from them, gifts received and trips. Link them to the committees they sit on.

How to process it2 steps

  1. Use the new addresses (OData v5)

    Since 12 June 2026 there is a new version of the OData API, with the same 38 entities but different field names. The date of a case is called Datum there (in v4: GestartOp). This example returns the latest motions.

    https://gegevensmagazijn.tweedekamer.nl/OData/v5/Zaak?$filter=Soort%20eq%20'Motie'%20and%20Verwijderd%20eq%20false&$orderby=Datum%20desc&$top=3&$select=Nummer,Onderwerp,Datum
  2. Count per year in one call

    $apply also works in v5. This gives the number of motions per year without fetching everything (on 16 October 2026: 66,147 motions in total, the same in v4 and v5).

    https://gegevensmagazijn.tweedekamer.nl/OData/v5/Zaak?$apply=filter(Soort%20eq%20'Motie'%20and%20Verwijderd%20eq%20false)/compute(year(Datum)%20as%20Jaar)/groupby((Jaar),aggregate($count%20as%20n))

Interesting combinations

Similar sources

  • Debat Direct not in the index yet

    The debates themselves, live and on demand, with speaker information. No data API; the meetings are in the Gegevensmagazijn as Activiteit and Vergadering.

  • Open Council Information

    The same kind of documents, but from municipal councils and provinces.

What to watch out for

  • At most 250 per request

    A higher $top returns an error. Page with $skip, or use the SyncFeed for bulk.

  • Votes hang off decisions

    A vote belongs to a Besluit (decision), which belongs to a Zaak (the motion). Use $expand or join on Besluit_Id.

  • Version 4 is deprecated

    On 29 May 2026 the House announced that the old address (/OData/v4/2.0) would stop returning results from 1 October 2026. On 16 October 2026 v4 still answered, with the same counts as v5. Build new code on /OData/v5. The SyncFeed does not change.

  • Different field names in v5

    An old field name in v5 returns an error. Examples: Zaak.GestartOp becomes Datum, Organisatie becomes Kamer, Volgnummer becomes Ondernummer; Document.DocumentNummer becomes Nummer; ActorNaam and ActorFractie become Naam and FractieNaam (Stemming, ZaakActor, DocumentActor, ActiviteitActor); Relatie becomes Rol. Zaak.Status, HuidigeBehandelstatus and GrootProject are dropped. The full list is in the House's news item: https://opendata.tweedekamer.nl/nieuws/nieuwe-versie-odata-api

APIOData v4 · read 16 Oct 2026

StandardOData v4docs
Access no key

No key or account; the service document and counts work anonymously. tested

Formats

JSONXML (Atom)

Base URL

https://gegevensmagazijn.tweedekamer.nl/OData/v5

Endpoints 38

  • GET/Persoonmembers (and former members)
  • GET/PersoonContactinformatiePersoonContactinformatie
  • GET/PersoonGeschenkPersoonGeschenk
  • GET/PersoonLoopbaanPersoonLoopbaan
  • GET/PersoonNevenfunctiePersoonNevenfunctie
  • GET/PersoonNevenfunctieInkomstenPersoonNevenfunctieInkomsten
  • GET/PersoonOnderwijsPersoonOnderwijs
  • GET/PersoonReisPersoonReis
  • GET/CommissieCommissie
  • GET/CommissieContactinformatieCommissieContactinformatie
  • GET/CommissieZetelCommissieZetel
  • GET/CommissieZetelVastPersoonCommissieZetelVastPersoon
  • GET/CommissieZetelVastVacatureCommissieZetelVastVacature
  • GET/CommissieZetelVervangerPersoonCommissieZetelVervangerPersoon
  • GET/CommissieZetelVervangerVacatureCommissieZetelVervangerVacature
  • GET/Fractieparties with number of seats
  • GET/FractieZetelFractieZetel
  • GET/FractieZetelPersoonFractieZetelPersoon
  • GET/FractieZetelVacatureFractieZetelVacature
  • GET/Activiteitdebates, committee meetings, hearings
  • GET/ActiviteitActorActiviteitActor
  • GET/AgendapuntAgendapunt
  • GET/Besluitdecisions on a case, with the voting method
  • GET/Stemmingvotes per party or member
  • GET/Zaakcases: motions, amendments, bills, questions (field Soort)
  • GET/ZaakActorZaakActor
  • GET/ZaalZaal
  • GET/ReserveringReservering
  • GET/Documentdocuments: papers, letters, reports
  • GET/DocumentActorDocumentActor
  • GET/DocumentVersieDocumentVersie
  • GET/DocumentPublicatieDocumentPublicatie
  • GET/DocumentPublicatieMetadataDocumentPublicatieMetadata
  • GET/KamerstukdossierKamerstukdossier
  • GET/VergaderingVergadering
  • GET/VerslagVerslag
  • GET/ToezeggingToezegging
  • GET/ToegezegdAanToegezegdAan

The APIs of this source 2 · from the provider's documentation from the description

OData API (v5)

Targeted search: with entities, attributes and filters you build your own query as a URL (the API on this page).

https://gegevensmagazijn.tweedekamer.nl/OData/v5
  • GET/Zaak?$filter=Soort eq 'Motie'Moties, met $orderby, $select en $expand
  • GET/Zaak?$apply=…groupby(…)Tellen en groeperen in de API zelf
  • GETdocumentatiehttps://opendata.tweedekamer.nl/documentatie/odata-api

Open Data Index uses this API for the House blocks and the status check.

SyncFeed API

Synchronising: keep (part of) the Gegevensmagazijn in your own database, with a feed of all changes.

https://gegevensmagazijn.tweedekamer.nl/SyncFeed/2.0/Feed
  • GET/FeedAtom-feed met wijzigingen, te volgen met een volgnummer
  • GETdocumentatiehttps://opendata.tweedekamer.nl/documentatie/syncfeed-api

Filtering platform

OData v4 expressions in $filter

eqnegtgeltleandornotcontains()startswith()any()year()

Parameters 7

$filterselect rows, e.g. Soort eq 'Motie' and Datum ge 2025-01-01T00:00:00Zplatform
$selectonly these fieldsplatform
$expandinclude related entities, e.g. Zaak with Besluit and Stemmingplatform
$orderbysorting, e.g. Datum descplatform
$top / $skippagingplatform
$countinclude total ($count=true) or count only (/$count)platform
$applygroup and count, e.g. groupby((Soort),aggregate($count as n))tested

Dimensions · = space in the key

DimensionCodesExamples
Zaak
zaken: moties, amendementen, wetsvoorstellen, Kamervragen (veld Soort)
343,619
Document
documenten: Kamerstukken, brieven, verslagen
728,947
Besluit
besluiten over een zaak, met de stemmingssoort
740,618
Stemming
stemmingen per fractie of Kamerlid
1,030,560
Activiteit
debatten, commissievergaderingen, gesprekken
100,752
Vergadering
Vergadering
7,569
Persoon
Kamerleden (en oud-Kamerleden)
4,480
Fractie
fracties met aantal zetels
160
Kamerstukdossier
Kamerstukdossier
7,840

Fields of Zaak 18

NameTypeMeaning
Idguid
Nummerstring
Soortstring
Titelstring
Citeertitelstring
Aliasstring
Onderwerpstring
Datumdatetimeoffset
Kamerstring
Voorhangstring
Termijndatetimeoffset
Vergaderjaarstring
Show all 18
NameTypeMeaning
Ondernummerint32
Afgedaanboolean
GewijzigdOpdatetimeoffset
ApiGewijzigdOpdatetimeoffset
Verwijderdboolean
Kabinetsappreciatiestring

Limits and pitfalls

  • At most 250 rows per request ($top); higher returns an error. Follow @odata.nextLink or page with $skip. tested
  • Not all data start at once: Parlis (activities, documents, votes) since 1 September 2008, VLOS (reports) since 25 June 2013, Sesam (members, parties, committees) since 1 September 2021, commitments since 1 September 2022. Series before those dates are incomplete. from the description
  • Licence: CC0 1.0 unless stated otherwise (disclaimer: https://opendata.tweedekamer.nl/disclaimer). The House does not endorse the use and excludes liability. from the description
  • For everything at once there is the SyncFeed (gegevensmagazijn.tweedekamer.nl/SyncFeed/2.0/Feed): an Atom feed with all changes. tested
  • Counting and grouping work in the API itself: $apply=groupby((Soort),aggregate($count as n)). tested
  • Records are not deleted but get Verwijderd = true; always filter on it. experience

Try it HTTP 200 · 320 ms · 16 Oct

https://gegevensmagazijn.tweedekamer.nl/OData/v5/Zaak?$filter=Soort eq 'Motie'&$orderby=Datum desc&$top=3&$select=Nummer,Onderwerp,Titel,Datum
{
  "@odata.context": "https://gegevensmagazijn.tweedekamer.nl/OData/v5/$metadata#Zaak(Nummer,Onderwerp,Titel,Datum)",
  "value": [
    {
      "Nummer": "2026Z22500",
      "Titel": "Vaststelling van de begrotingsstaten van het Ministerie van Volksgezondheid, Welzijn en Sport (XVI) voor het jaar 2027",
      "Onderwerp": "Motie van het lid Dobbe",
      "Datum": "2026-10-15T00:00:00+02:00"
    },
    {
      "Nummer": "2026Z22487",
      "Titel": "Vaststelling van de begrotingsstaten van het Ministerie van Volksgezondheid, Welzijn en Sport (XVI) voor het jaar 2027",
      "Onderwerp": "Motie van het lid Van Meijeren",
      "Datum": "2026-10-15T00:00:00+02:00"
    }
  ]
}

Shortened response, saved at harvest time. Click the URL for the real, current response.

Read from service document: 38 entities · data model: 38 entity types with fields. 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.

More from Tweede Kamer in our index

3 datasets in Open Archieven, data.overheid.nl. These changed most recently.

All about Tweede Kamer

More in this topic

See how this page is built
bron: tweedekamer-opendata
blokken: []
secties:
  - ideeen
  - verwerken
  - koppelingen
  - vergelijkbaar
  - beperkingen
cache:
  tag: bron:tweedekamer-opendata
  ververs: na statuscheck, als de bron nieuwer is
statuscheck:
  methode: "OData v5: nieuwste motie (Datum)"
  verwacht: dagelijks

Source: content/bronnen/tweedekamer-opendata.yaml · Markdown