Aviation Weather Center (METAR) API
Free official METAR and TAF API with no key: decoded aviation weather for any airport worldwide, with raw observation text, cloud layers and flight category. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the Aviation Weather Center (METAR) API?
The NOAA Aviation Weather Center API is a free, key-free service returning METAR observations, TAF forecasts, PIREPs and SIGMETs. Requesting JSON gives both the raw coded observation and a fully decoded form with temperature, wind, visibility, cloud layers and flight category.
METAR is the international standard for airport weather observations and it is famously unreadable — `METAR KJFK 210751Z 36014KT 10SM BKN010 OVC019 18/16 A2998` is a complete weather report if you have been trained to read it. This API hands you both halves: the raw string for anyone who wants it, and every element already parsed into named numeric fields.
The `fltCat` field is the one to build alerts on. It collapses ceiling and visibility into the four categories pilots actually plan around — VFR, MVFR, IFR and LIFR — which is a judgement you would otherwise have to encode yourself from the cloud layers and visibility. Note that `visib` is a string rather than a number, because "10+" means "ten statute miles or more" and there is no numeric way to say that. `obsTime` is a Unix timestamp while `reportTime` is ISO 8601, and observations are typically issued once an hour just before the hour.
Quick facts
- Base URL
https://aviationweather.gov/api/data- Authentication
- No API key or account. US federal government service; data is in the public domain.
- Rate limit
- No published quota. Observations update roughly hourly, so polling more often than that gains nothing.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Aviation Weather Center (METAR) API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch the current decoded METAR for an airport
GET https://aviationweather.gov/api/data/metar?ids=KJFK&format=json
curl 'https://aviationweather.gov/api/data/metar?ids=KJFK&format=json'const res = await fetch("https://aviationweather.gov/api/data/metar?ids=KJFK&format=json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://aviationweather.gov/api/data/metar?ids=KJFK&format=json", timeout=20)
res.raise_for_status()
print(res.json())[
{
"icaoId": "KJFK",
"receiptTime": "2026-08-21T07:54:13.147Z",
"obsTime": 1787298660,
"reportTime": "2026-08-21T08:00:00.000Z",
"temp": 17.8,
"dewp": 16.1,
"wdir": 360,
"wspd": 14,
"visib": "10+",
"altim": 1015.3,
"slp": 1015.2,
"qcField": 12,
"metarType": "METAR",
"rawOb": "METAR KJFK 210751Z 36014KT 10SM BKN010 OVC019 18/16 A2998 RMK AO2 SLP152 T01780161 $",
"lat": 40.6392,
"lon": -73.7639,
"elev": 3,
"name": "New York/JF Kennedy Intl, NY, US",
"cover": "OVC",
"clouds": [
{
"cover": "BKN",
"base": 1000
},
{
"cover": "OVC",
"base": 1900
}
],
"fltCat": "MVFR"
}
]Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
ids | query | Required | Comma-separated ICAO station identifiers. Several airports can be requested at once. KJFK,EGLL |
format | query | Required | `json` for decoded output, `raw` for the coded text, `xml` and `geojson` also available. json |
hours | query | Optional | How many hours of history to return. Defaults to the most recent observation only. 6 |
bbox | query | Optional | Bounding box as `minLat,minLon,maxLat,maxLon` to fetch every station in an area. 40,-75,42,-73 |
(taf) | path | Optional | `/taf` returns terminal aerodrome forecasts using the same parameters. taf |
(pirep, airsigmet) | path | Optional | Pilot reports and significant meteorological information, on their own endpoints. |
Response fields
icaoIdstring- ICAO station identifier the observation belongs to.
rawObstring- The complete raw METAR string, for display to pilots or for your own decoding.
obsTime / reportTimeinteger / string- Observation time as Unix seconds and report time as ISO 8601. Two different formats in one object.
temp / dewpfloat- Temperature and dew point in Celsius. The spread between them indicates humidity and fog risk.
wdir / wspdinteger- Wind direction in degrees true and speed in knots. A direction of 0 with non-zero speed means variable.
visibstring- Visibility — a string, because "10+" means ten statute miles or more.
altim / slpfloat- Altimeter setting and sea-level pressure in hectopascals.
cloudsarray- Cloud layers, each with `cover` (FEW, SCT, BKN, OVC) and `base` in feet above ground.
fltCatstring- Flight category derived from ceiling and visibility: VFR, MVFR, IFR or LIFR.
lat / lon / elevfloat- Station position and elevation in metres.
namestring- Human-readable station name, for example "New York/JF Kennedy Intl, NY, US".
What you can build with the Aviation Weather Center (METAR) API
- Show current conditions at an airport on a flight-planning page
- Alert when an airport drops below VFR conditions
- Log weather at departure and arrival for incident or delay analysis
- Feed accurate airport-level observations into an aviation dashboard
- Correlate flight delays with ceiling and visibility
Common errors and how to fix them
Empty array for a valid airport
The station reports intermittently, or the identifier is IATA rather than ICAO.
Fix: Use four-letter ICAO codes — KJFK, not JFK. Small aerodromes may only issue observations during staffed hours.
visib will not parse as a number
It is deliberately a string, because "10+" is not numeric.
Fix: Handle the plus suffix explicitly. Values below ten can be fractions such as "1/2", which also need parsing rather than casting.
Two different time formats in one object
`obsTime` is Unix seconds and `reportTime` is ISO 8601.
Fix: Normalise both on ingest. Times are UTC throughout; METAR has no concept of local time.
CORS error in the browser
The service sends no Access-Control-Allow-Origin header.
Fix: Fetch it server-side. Because observations only change hourly, a cached server-side copy is the right design anyway.
Aviation Weather Center (METAR) API — frequently asked questions
Is the aviation weather API free?
Yes. It is run by the NOAA Aviation Weather Center with no key or account, and the data is US federal government work in the public domain.
What does the fltCat field mean?
It is the flight category derived from ceiling and visibility: VFR for good conditions, MVFR marginal, IFR instrument conditions and LIFR low instrument conditions. It saves you encoding those thresholds yourself.
How often do METARs update?
Roughly hourly, usually issued shortly before the hour, with special observations (SPECI) inserted when conditions change sharply. Polling more frequently than every fifteen minutes returns the same report.
Does it cover airports outside the United States?
Yes. The service redistributes the global METAR exchange, so major international airports are covered. Reporting frequency and completeness vary by national meteorological service.
Tools that pair with this API
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
Timestamp Converter
Convert timestamps to human-readable dates and dates back to timestamps. Auto-detects seconds vs milliseconds, shows local, UTC and ISO 8601 formats.
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Aviation Weather Center (METAR) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.