/

Developer API

CivicStat stelt parlementaire data gratis beschikbaar via een publieke API. Gebruik onze data voor onderzoek, journalistiek of civic tech projecten.

Snel beginnen

Publieke endpoints zijn direct toegankelijk zonder authenticatie:

curl https://civicstat-api.fly.dev/v2/parties

Response: JSON met alle partijen en hun metadata.

Publieke endpoints

Geen API-sleutel vereist. Rate limit: 100 verzoeken per minuut.

GET/v2/parliamentsAlle parlementen (Tweede Kamer, gemeenteraden)
GET/v2/partiesAlle partijen, optioneel gefilterd op parlement
GET/v2/parliament/:slug/scorecardsMCS-scorecards per parlement
GET/v2/insightsAutomatisch berekende inzichten
GET/v2/search?q=...Zoek partijen, moties, beloften en Kamerleden
GET/v2/statsPlatformstatistieken (aantallen moties, beloften, etc.)

Geauthenticeerde endpoints

Voor volledige toegang tot beloftedata, matchresultaten en ruwe stemdata is een API-sleutel vereist.

GET/v2/promisesBeloften met matchdata (partij, jaar, thema filters)
GET/v2/promises/:idEnkelvoudige belofte met alle gekoppelde moties
GET/v2/motionsMoties doorzoeken (query, partij, soort, parlement)
GET/v2/motions/:idMotiedetails met stemresultaten
GET/v2/votesStemmingen opvragen
GET/v2/votes/:idStemdetails per partij

Authenticatie

Voeg je API-sleutel toe via de X-API-Key header:

curl -H "X-API-Key: csk_jouw_sleutel" \
  https://civicstat-api.fly.dev/v2/promises

Alternatieven: Authorization: Bearer csk_... header of ?api_key=csk_... query parameter.

Voorbeelden

Python

import requests

# Publieke data (geen sleutel nodig)
parties = requests.get("https://civicstat-api.fly.dev/v2/parties").json()
for party in parties:
    print(party["name"], party.get("abbreviation", ""))

# Geauthenticeerde data
headers = {"X-API-Key": "csk_jouw_sleutel"}
promises = requests.get(
    "https://civicstat-api.fly.dev/v2/promises",
    params={"party": "VVD", "theme": "KLIMAAT"},
    headers=headers,
).json()

JavaScript

// Publieke data
const parties = await fetch("https://civicstat-api.fly.dev/v2/parties")
  .then(r => r.json());

// Geauthenticeerde data
const promises = await fetch(
  "https://civicstat-api.fly.dev/v2/promises?party=VVD&theme=KLIMAAT",
  { headers: { "X-API-Key": "csk_jouw_sleutel" } }
).then(r => r.json());

Rate limiting

Publieke endpoints: 100 verzoeken per minuut. Geauthenticeerde endpoints: 1.000 verzoeken per minuut. Bij overschrijding ontvang je een 429 Too Many Requests response. Wacht 60 seconden en probeer het opnieuw.

Interactieve documentatie

Bekijk de volledige OpenAPI-specificatie en test endpoints direct in de browser:

Swagger UI openen →

Licentie

Alle data is beschikbaar onder CC BY 4.0. Vrij te gebruiken met bronvermelding:

Data: CivicStat.nl (CC BY 4.0)

API-sleutel aanvragen

Stuur een e-mail naar api@civicstat.nl met je naam, organisatie en beoogd gebruik. We streven ernaar binnen 24 uur te reageren.

Support

Bugs en feature requests kunnen gemeld worden via GitHub Issues.