Weather — entry 006 of 31
AviationWeather
The legacy Text Data Server referenced by the original dataserver URL has been discontinued and replaced by the new Aviation Weather Center Data API, reachable at aviationweather.gov/data/api. It serves worldwide METAR/TAF, US/North-Atlantic PIREPs, global SIGMETs, and CONUS G-AIRMETs (which replaced text AIRMETs in January 2025) in raw text, JSON, GeoJSON, CSV, XML, or IWXXM, with no authentication but a 100-requests/minute rate limit.
The Aviation Weather Center's Data API replaced the old Text Data Server and serves worldwide METAR/TAF, PIREPs, SIGMETs, and G-AIRMETs as plain text, JSON, GeoJSON, CSV, XML, or IWXXM from a single query-parameter-driven endpoint per product.
GreatAPIs Score
Auth quickstart
- No API key required — requests are public and keyless.
Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.
Latest METAR for a single airport as JSON
GEThttps://aviationweather.gov/api/data/metar?ids=KJFK&format=json
[{
"icaoId": "KJFK",
"receiptTime": "2026-07-26T02:54:14.213Z",
"obsTime": 1785034260,
"reportTime": "2026-07-26T03:00:00.000Z",
"temp": 18.9,
"dewp": 13.3,
"wdir": 0,
"wspd": 0,
"visib": "10+",
"altim": 1016.7,
"slp": 1016.5,
"qcField": 12,
"metarType": "METAR",
"rawOb": "METAR KJFK 260251Z 00000KT 10SM FEW250 19/13 A3002 RMK AO2 SLP165 T01890133 50000 $",
"lat": 40.6392,
"lon": -73.7639,
"elev": 3,
"name": "New York/JF Kennedy Intl, NY, US",
"cover": "FEW",
"clouds": [{ "cover": "FEW", "base": 25000 }],
"fltCat": "VFR"
}]Developer reference
https://aviationweather.gov/api/data100 requests/minute overall; individual endpoints should not be hit more than 1 request/min per thread, per the live API docs
Gotchas & limits
- Cross-origin resource sharing is explicitly disabled ('not permitted at this time' per the live docs) — confirmed live: the JSON response carries no `access-control-allow-origin` header, so call this from a server, not directly from a browser
- The 100-requests/minute ceiling isn't just a global bucket: the docs separately say API endpoints 'should not be consumed more frequently than 1 request/min per thread' — a single tight loop can get throttled well under the 100/min limit
- Most endpoints cap results at 400 entries per request; for bulk pulls, the docs point to published cache files instead of paginating this endpoint
- A request with no matching data returns HTTP 204 No Content (every format except GeoJSON) rather than an empty 200 body with `[]` — check the status code before trying to parse a body