303.525 datasets geïndexeerd1.419 uitgevers
Open Data IndexDe index van open data over Nederland
Bronnen›Gezondheid

Samen Meten (RIVM)

Burgers, gemeenten en onderzoekers hangen zelf sensorkastjes op; het RIVM verzamelt hun metingen in het Samen Meten-dataportaal en maakt voor fijnstof gekalibreerde reeksen. Op 16 oktober 2026 stonden er 12.419 meetpunten in de API, met 56.391 meetreeksen: fijnstof (PM10, PM2,5), stikstofdioxide, ammoniak, temperatuur, luchtvochtigheid en luchtdruk, per uur. De grootste groep is Luftdaten (6.099 meetpunten).

GezondheidKlimaat en milieuOpenAPIRealtimeNederland · meetpunt (sensorkastje)
Actueel · bijgewerkt 1 uur geleden · gecontroleerd 17:23
samenmeten.nl
Schermafbeelding van samenmeten.nl

Meetpunten in Samen Meten per project: het meest Luftdaten (6.103 meetpunten), dan Palmes en Luchtclub

Meetpunten in Samen Meten per project, oktober 2026, in meetpunten. Totaal: 12.439; de grootste 12 van 60 categorieën staan in de grafiek. Luftdaten is 49% van het totaal. Een meetpunt is een sensorkastje of, bij de Palmes-projecten, een buisje dat stikstofdioxide meet. Geteld zijn alle meetpunten in de API, ook die niet meer meten.

Bron: RIVM, Samen Meten (SensorThings API) · opgehaald 25 oktober 2026 · selectie: Things, gegroepeerd op properties/projectOpen de tabel Los blok

Wat je ermee kunt bouwen1

Wat kun je ermee?4 ideeën

Om te beginnen

Hoe vies is de lucht in mijn straat?

Zoek de meetpunten rond een adres met geo.distance en haal de gekalibreerde fijnstofreeks (pm25_kal) op. Rond de Utrechtse Dom staan 10 meetpunten binnen 0,005 graad.

Om te beginnen

Wie meet er mee?

Elk meetpunt hoort bij een project: Luftdaten (6.099), Palmes (1.837), Luchtclub (704), Hollandse Luchten (573). De grafiek op deze pagina telt ze.

Voor gevorderden

Burgersensor naast het officiële station

Elk meetpunt noemt het dichtstbijzijnde Luchtmeetnet-station (bv. no2closecode NL10131). Zet de twee reeksen naast elkaar en kijk hoe goed de kalibratie werkt.

Voor gevorderden

Vuurwerk en houtstook zichtbaar maken

Er zijn projecten met de namen Vuurwerk (75 meetpunten) en Houtstook (28). Bekijk de fijnstofpieken rond oud en nieuw of op koude winteravonden.

Zo verwerk je het4 stappen

  1. Meetpunten van één project

    Things zijn de meetpunten. Filter op properties/project; $count=true geeft het aantal, $top hoogstens 200 per pagina (volg @iot.nextLink).

    https://api-samenmeten.rivm.nl/v1.0/Things?$filter=properties/project%20eq%20'Smartcitizen'&$count=true&$top=5
  2. De laatste metingen van een reeks

    Elke reeks (Datastream) heet <meetpunt>-<nummer>-<grootheid>. Met $expand haal je de laatste metingen in dezelfde aanroep op.

    https://api-samenmeten.rivm.nl/v1.0/Datastreams?$filter=name%20eq%20'SMC_20058-21-pm25_kal'&$expand=Observations($top=2;$orderby=phenomenonTime%20desc)
  3. Meetpunten rond een plek

    geo.distance werkt alleen met SRID=4326 erbij in de geografie. De coördinaten in de antwoorden zijn afgerond op drie decimalen (ongeveer 100 meter).

    https://api-samenmeten.rivm.nl/v1.0/Locations?$filter=geo.distance(location,geography'SRID=4326;POINT(5.121314%2052.090654)')%20le%200.005&$expand=Things($select=name)
  4. Welke grootheden er zijn

    Negen: pres, rh, temp, nh3, no2, pm25_kal, pm10_kal, pm25 en pm10. Gebruik voor fijnstof de gekalibreerde (_kal).

    https://api-samenmeten.rivm.nl/v1.0/ObservedProperties

Interessante koppelingen

Vergelijkbare bronnen

Waar je op moet letten

  • Veel meetpunten meten niet meer

    De API telt alle meetpunten die ooit zijn aangemeld. Een Palmes-meetpunt dat we bekeken had geen enkele meting. Kijk per reeks naar de laatste meting.

  • Ruwe sensorwaarden zijn onbetrouwbaar

    Goedkope fijnstofsensoren kunnen flink afwijken, bijvoorbeeld bij hoge luchtvochtigheid. Gebruik de gekalibreerde reeksen (pm25_kal, pm10_kal), niet pm25 en pm10.

  • Brede vragen lopen vast

    Observations zonder filter, of een $expand over veel meetpunten tegelijk, gaf een 504 (Gateway Time-out). Een filter op Observations/phenomenonTime vanuit Datastreams gaf een lege reactie. Werk per reeks.

  • Licentie niet benoemd

    Samen Meten schrijft "Onze data zijn Open Data", zonder licentienaam. Een oudere dataset van Utrecht op data.overheid.nl staat onder CC0, maar voor het RIVM-portaal is dat niet vastgesteld.

  • Locaties afgerond

    Coördinaten staan op drie decimalen (ongeveer 100 meter). Genoeg voor een buurt, niet voor een huisnummer.

APIOGC SensorThings API 1.0 (OData-achtig, JSON) · gelezen 16 okt 2026

StandaardOGC SensorThings API 1.0 (OData-achtig, JSON)documentatie
Toegang zonder sleutel

Geen sleutel; de API is openbaar (getest). getest

Omvang12.425

Things (sensorkastjes) met 56.418 datastreams, 24.613 locaties en 52 sensortypen ($count, 16 okt 2026) getest

Formaten

json

Basisadres

https://api-samenmeten.rivm.nl/v1.0

Endpoints 9

  • GET/ThingsSensorkastjes; properties met project, owner, gemeentecode en de dichtstbijzijnde officiële stations per stof (no2closecode, pm25regiocode …).
  • GET/DatastreamsEén meetreeks per kastje en grootheid, naam <kastje>-<nr>-<grootheid> (SMC_20058-21-pm25_kal), met eenheid.
  • GET/Datastreams({id})/ObservationsUurwaarden van één reeks (phenomenonTime, result).
  • GET/ObservationsAlle waarnemingen; altijd filteren, de hele set is te groot om te tellen.
  • GET/ObservedPropertiesDe 9 grootheden: pm10, pm25, pm10_kal, pm25_kal (gekalibreerd), no2, nh3, temp, rh, pres.
  • GET/SensorsDe 52 sensoren op naam (Sensirion SEN5x, AirVisual …); het nummer in description komt terug in de datastreamnaam.
  • GET/LocationsPlaatsen van de kastjes (GeoJSON-punt); zoek in de buurt met geo.distance.
  • GET/HistoricalLocationsEerdere plaatsen van een kastje (verhuisd).
  • GET/FeaturesOfInterestWaar een waarneming over gaat (meestal de locatie).

Filteren platform

OData-achtige expressies in $filter (SensorThings), ook op properties/… en met geo.distance(location, geography'SRID=4326;POINT(lon lat)') le <graden>.

eqnegtgeltleandorstartswith()geo.distance()

Parameters 6

$filterFilter, bv. name eq 'SMC_20058-21-pm25_kal', properties/project eq 'Smartcitizen', phenomenonTime ge 2026-10-16T00:00:00Z, startswith(name,'ZWL').getest
$expandGerelateerde entiteiten meenemen, ook met eigen opties: Observations($top=2;$orderby=phenomenonTime desc).getest
$selectAlleen deze velden (phenomenonTime,result).getest
$orderbySorteren.getest
$top / $skipPagineren; $top hoogstens 200 (meer wordt stil 200).getest
$countTotaal in @iot.count.getest

Velden in het antwoord (selectie) 8

NaamTypeBetekenis
@iot.idintegerId van de entiteit
nametekstNaam van kastje of reeks
properties.project / ownertekstMeetproject (Smartcitizen, …) en eigenaar
properties.codegemeentetekstCBS-gemeentecode zonder GM (935 = Maastricht)
unitOfMeasurement.symboltekst · µg/m³, %, °C, hPaEenheid van de reeks
phenomenonTimedatetime · UTCUur van de waarneming
resultgetalDe waarde
location.coordinatespunt · lon, lat (WGS84)Plaats van het kastje

Limieten en valkuilen

  • $top hoogstens 200 per pagina; volg @iot.nextLink voor de rest. getest
  • Tellen over alle Observations of alle actieve kastjes liep vast (HTTP 504). Tel per reeks of per project. ervaring
  • Voor fijnstof bestaan twee reeksen per kastje: ruw (pm25, pm10) en gekalibreerd (pm25_kal, pm10_kal, 'fijnstof gekalibreerd' in ObservedProperties). Vergelijk met officiële metingen alleen de _kal-reeksen. getest
  • geo.distance werkt alleen met geography'SRID=4326;POINT(lon lat)', afstand in graden (0,005 ≈ 350 m oost-west). ervaring
  • Een fout in $filter geeft 400 met de ruwe databasefout ('pq: column "bogus" does not exist'): handig om veldnamen te controleren. getest
  • Elk kastje noemt in properties de dichtstbijzijnde officiële Luchtmeetnet-stations per stof: zo vergelijk je direct met de referentiemeting. getest

Probeer het HTTP 200 · 387 ms · 16 okt

https://api-samenmeten.rivm.nl/v1.0/Datastreams?$filter=name eq 'SMC_20058-21-pm25_kal'&$expand=Observations($top=3;$orderby=phenomenonTime desc)
{
  "value": [
    {
      "@iot.id": 56399,
      "@iot.selfLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(56399)",
      "name": "SMC_20058-21-pm25_kal",
      "description": "SMC_20058-21-pm25_kal",
      "unitOfMeasurement": {
        "definition": "https://qudt.org/vocab/unit/MicroGM-PER-M3",
        "symbol": "ug/m3"
      },
      "observationType": "http://www.opengis.net/def/observationType/OGC-OM/2.0/OM_Measurement",
      "Thing@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(56399)/Thing",
      "Sensor@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(56399)/Sensor",
      "ObservedProperty@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Datastreams(56399)/ObservedProperty",
      "Observations": [
        {
          "@iot.id": 733886641,
          "@iot.selfLink": "https://api-samenmeten.rivm.nl/v1.0/Observations(733886641)",
          "phenomenonTime": "2026-10-16T20:00:00.000Z",
          "result": 3.01,
          "Datastream@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Observations(733886641)/Datastream",
          "FeatureOfInterest@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Observations(733886641)/FeatureOfInterest",
          "resultTime": null
        },
        {
          "@iot.id": 733875902,
          "@iot.selfLink": "https://api-samenmeten.rivm.nl/v1.0/Observations(733875902)",
          "phenomenonTime": "2026-10-16T19:00:00.000Z",
          "result": 15.09,
          "Datastream@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Observations(733875902)/Datastream",
          "FeatureOfInterest@iot.navigationLink": "https://api-samenmeten.rivm.nl/v1.0/Observations(733875902)/FeatureOfInterest",
          "resultTime": null
        }
      ]
    }
  ]
}

Ingekort antwoord, opgeslagen bij het oogsten. Klik op het adres voor het echte, actuele antwoord.

Gelezen uit Wortel van de dienst: de 8 SensorThings-entiteiten met hun adres · Uitleg van Samen Meten met voorbeeldaanroepen · OGC SensorThings API 1.0 (de standaard). 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.

Zo haal je het op

curl "https://api-samenmeten.rivm.nl/v1.0/Datastreams?\$filter=name%20eq%20'SMC_20058-21-pm25_kal'&\$expand=Observations(\$top=24;\$orderby=phenomenonTime%20desc)"

Meer van RIVM in onze index

929 datasets in data.overheid.nl, Nationaal Georegister, CBS, tabellen van derden, RIVM GCN en GDN. Dit zijn de laatst gewijzigde.

Alles over RIVM

Meer in dit thema

Bekijk hoe deze pagina is opgebouwd
bron: rivm-samenmeten
blokken: []
secties:
  - ideeen
  - verwerken
  - koppelingen
  - vergelijkbaar
  - beperkingen
  - code
cache:
  tag: bron:rivm-samenmeten
  ververs: na statuscheck, als de bron nieuwer is
statuscheck:
  methode: nieuwste uurwaarde van één vast meetpunt (gekalibreerd PM2,5 van SMC_20058)
  verwacht: elk uur

Bron: content/bronnen/rivm-samenmeten.yaml · Markdown