Weather — entry 017 of 31
openSenseMap
openSenseMap is the open, non-profit citizen-science platform behind the University of Munster's senseBox project, serving live and historical readings from thousands of crowdsourced environmental sensor stations worldwide, covering not just temperature/humidity but also particulate matter, noise and other phenomena. Reading data is fully open and keyless (accounts are only needed to register or post data from your own senseBox), and the full historical archive is separately mirrored on an archive subdomain.
openSenseMap serves live and historical readings from crowdsourced senseBox environmental stations; fetch a single station by ID for its full sensor list with live values, or query the /boxes collection scoped by a bounding box.
GreatAPIs Score
Auth quickstart
- No API key required for reads — requests are public and keyless (an account is only needed to register or post data from your own senseBox).
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Live readings for a single senseBox
GEThttps://api.opensensemap.org/boxes/5c4208271b7ca800198cbe90
{
"_id": "5c4208271b7ca800198cbe90",
"name": "Geigenbaumeister Kehnen #1",
"exposure": "indoor",
"model": "homeV2Wifi",
"currentLocation": {
"type": "Point",
"coordinates": [7.217819, 51.470113],
"timestamp": "2019-01-18T17:12:01.018Z"
},
"sensors": [
{
"title": "Temperatur",
"unit": "\u00b0C",
"sensorType": "HDC1080",
"_id": "5c4208271b7ca800198cbe92",
"lastMeasurement": { "createdAt": "2026-07-26T03:13:09.564Z", "value": "22.66" }
},
{
"title": "rel. Luftfeuchte",
"unit": "%",
"sensorType": "HDC1080",
"_id": "5c4208271b7ca800198cbe91",
"lastMeasurement": { "createdAt": "2026-07-26T03:13:09.564Z", "value": "63.43" }
}
],
"lastMeasurementAt": "2026-07-26T03:13:09.564Z",
"weblink": "http://www.geigenbaumeisterkehnen.de/",
"description": "Zur \u00dcberwachung der Feuchtigkeit in der Werkstatt"
}Try it
Developer reference
https://api.opensensemap.org- GET/boxes
- GET/boxes/{senseBoxId}
Gotchas & limits
limiton the/boxeslist endpoint is effectively ignored: a liveGET /boxes?limit=1streamed past 10MB and still hadn't finished after 15 seconds — scope list queries withbbox=<west,south,east,north>instead of relying onlimitto keep the response small- The
/boxeslist endpoint returns each sensor'slastMeasurementas a bare measurement-ID string, not a value — fetching the same box individually via/boxes/:boxId(as above) returns the full{ createdAt, value }object instead, confirmed live for the same station /statsreturns global counts as a bare 3-element array with no keys —[boxCount, measurementCount, measurementsInLastMinute]— the third element is a live throughput figure, not a sensor total, and the field order is documented only in the API docs, never in the response itself- Sensor
title/unitstrings are free text entered by whoever registered the senseBox, not a controlled vocabulary — German labels like "Temperatur" and "rel. Luftfeuchte" turn up alongside English ones on live stations, so don't match on title text across boxes