Weather — entry 017 of 31

openSenseMap

Verified Jul 2026

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.

no-keyopen-sourceair-qualityglobal
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSON, GeoJSON, CSVResponses can be requested as JSON or GeoJSON or CSV.

GreatAPIs Score

Score94out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs14/20Documentation URL provided
Formats15/15Supports 3 response formats
Freshness20/20Verified within 6 months

Embed this badge

Scored 94 on greatapis.com
<a href="https://greatapis.com/api/opensensemap/"><img src="https://greatapis.com/badge/opensensemap.svg" alt="Scored 94 on greatapis.com"></a>

Auth quickstart

  1. 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).
Stored keyNo key stored

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

200 application/json; charset=utf-8

{
  "_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

Base URLhttps://api.opensensemap.org
Key endpoints
  • GET/boxes
  • GET/boxes/{senseBoxId}

Gotchas & limits

  • limit on the /boxes list endpoint is effectively ignored: a live GET /boxes?limit=1 streamed past 10MB and still hadn't finished after 15 seconds — scope list queries with bbox=<west,south,east,north> instead of relying on limit to keep the response small
  • The /boxes list endpoint returns each sensor's lastMeasurement as 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
  • /stats returns 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/unit strings 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

Availability

Uptime100%
Median latency557 ms
Last checkUp · 200 · Sep 2026

3 checks since Aug 2026. A person runs this check by hand, not an automated monitor.