Datamask Aviation API
Datamask Aviation publishes a small read-only JSON API derived from the public OPMET feeds we already render. No authentication. CORS open. Use it for student-pilot apps, simulator integrations, hobby tooling, university research and anything else that benefits from a clean decoded METAR.
Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/metar/{icao} | Latest METAR plus decoded fields (wind, visibility, clouds, QNH, flight category). |
| GET | /api/v1/taf/{icao} | Latest TAF as raw text. Decoded TAF timeline lives only in the web UI. |
| GET | /api/v1/health | Service status: ok flag, airport-database size, version and current UTC time. |
Base URL: https://datamask.org · ICAO must match ^[A-Z0-9]{4}$ · 400 on invalid · 404 when the upstream OPMET feed has nothing for that station.
Example: METAR
GET /api/v1/metar/EDDM
{
"icao": "EDDM",
"observedAt": "2026/04/24 14:50",
"fetchedAt": 1745504247123,
"raw": "EDDM 241450Z 27012KT 9999 FEW035 18/09 Q1015 NOSIG",
"decoded": {
"station": "EDDM",
"wind": { "direction": 270, "speedKt": 12, "gustKt": null, "unitRaw": "KT" },
"visibility": { "meters": 9999, "statuteMiles": 6.21, "cavok": false },
"clouds": [{ "quantity": "FEW", "heightFt": 3500, "type": null }],
"temperature": { "temp": 18, "dewpoint": 9 },
"qnh": { "hpa": 1015, "inhg": 29.97 },
"flightCategory": "VFR",
"ceilingFt": null
/* ...full DecodedMetar shape */
},
"source": "noaa-tgftp",
"attribution": "NOAA NWS · Datamask Aviation"
}Example: TAF
GET /api/v1/taf/EDDM
{
"icao": "EDDM",
"issuedAt": "2026/04/24 12:00",
"fetchedAt": 1745504247456,
"raw": "TAF EDDM 241100Z 2412/2518 27010KT 9999 FEW040 ...",
"source": "noaa-tgftp",
"attribution": "NOAA NWS · Datamask Aviation"
}Example: health
GET /api/v1/health
{
"ok": true,
"airports": 85217,
"version": "0.2.0",
"now": "2026-04-24T14:50:00.000Z"
}Authentication & CORS
No authentication is required. Every endpoint sends Access-Control-Allow-Origin: * and accepts GET and OPTIONS, so the API is callable directly from a browser. Successful METAR/TAF responses are marked Cache-Control: public, s-maxage=30, stale-while-revalidate=300 — feel free to cache aggressively client-side; we already cache the upstream fetch for 30 seconds in-process.
Rate limits
Currently unenforced — please be reasonable. If your app makes more than a handful of requests per second per ICAO it is almost certainly fighting the upstream cache for no benefit; the underlying NOAA tgftp feed only updates around the publication minute. We will introduce per-IP limits if abuse occurs.
Attribution
Please cite both Datamask Aviation and the NOAA National Weather Service (the upstream OPMET source) in any product that surfaces this data. The attribution field on each response carries the canonical credit string.
Status
Free, beta. The shape of the JSON may change in backwards-compatible ways while we are at v1; breaking changes will only ship under /api/v2. For high-volume use, integration questions or a heads-up before relying on the API in production, e-mail admin@datamask.org.