
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).

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.
Wat je ermee kunt bouwen1
Wat kun je ermee?4 ideeën
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.
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.
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.
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
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
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)
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)
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


Klopt de burgersensor?
Elk meetpunt noemt zijn dichtstbijzijnde, regionale en stadsstation. Haal van dat station dezelfde uren op bij Luchtmeetnet en vergelijk.


Meer fijnstof bij weinig wind?
Het KNMI-station staat bij elk meetpunt. Zet de dagelijkse windsnelheid naast het daggemiddelde fijnstof.
Vergelijkbare bronnen
LuchtmeetnetHet officiële meetnet van RIVM, GGD's en provincies; veel minder meetpunten, maar met referentie-apparatuur.
Grootschalige concentratiekaarten (GCN)Berekende jaargemiddelden op een kaart van heel Nederland, geen metingen per uur.
EEA luchtkwaliteitOfficiële metingen van heel Europa, vergelijkbaar tussen landen.
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
Geen sleutel; de API is openbaar (getest). getest
Things (sensorkastjes) met 56.418 datastreams, 24.613 locaties en 52 sensortypen ($count, 16 okt 2026) getest
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>.
Parameters 6
$filter | Filter, bv. name eq 'SMC_20058-21-pm25_kal', properties/project eq 'Smartcitizen', phenomenonTime ge 2026-10-16T00:00:00Z, startswith(name,'ZWL'). | getest |
$expand | Gerelateerde entiteiten meenemen, ook met eigen opties: Observations($top=2;$orderby=phenomenonTime desc). | getest |
$select | Alleen deze velden (phenomenonTime,result). | getest |
$orderby | Sorteren. | getest |
$top / $skip | Pagineren; $top hoogstens 200 (meer wordt stil 200). | getest |
$count | Totaal in @iot.count. | getest |
Velden in het antwoord (selectie) 8
| Naam | Type | Betekenis |
|---|---|---|
@iot.id | integer | Id van de entiteit |
name | tekst | Naam van kastje of reeks |
properties.project / owner | tekst | Meetproject (Smartcitizen, …) en eigenaar |
properties.codegemeente | tekst | CBS-gemeentecode zonder GM (935 = Maastricht) |
unitOfMeasurement.symbol | tekst · µg/m³, %, °C, hPa | Eenheid van de reeks |
phenomenonTime | datetime · UTC | Uur van de waarneming |
result | getal | De waarde |
location.coordinates | punt · 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.
- Emissies naar het riool vanuit de industrie (2019 - heden) (INSPIRE)2026-10-29
- Geluid van windturbines (Lden)2026-10-28
- Nitraatrichtlijn 2024 LMG (WFS) (INSPIRE)2026-10-27
- Gemeten Koolstofmonoxide concentraties in buitenlucht.2026-10-27
- Nitraatrichtlijn 2024 LMG (WMS) (INSPIRE)2026-10-27
- Gemeten fijnere fractie van Fijn stof concentraties in buitenlucht.2026-10-27
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



