Aviation Weather Center
App · Weather & Space · 20 actions
Read official US aviation weather from the National Weather Service's Aviation Weather Center, through its keyless public Data API: METARs and TAFs, pilot reports, SIGMETs and AIRMETs, center advisories, the convective forecast, winds and temperatures aloft, area forecasts and forecast discussions, plus airport, station, navaid, fix, and obstacle lookups. No account or API key required.
Actions
| Action | What it does |
|---|---|
| Get airport info | Look up airports: name, position, elevation, magnetic variation, ownership, and the runways with their dimensions and surface. |
| Get Alaska AIRMETs | Read the domestic AIRMETs issued for Alaska, decoded with their hazard, altitude band, and area. |
| Get area forecast | Read the textual Area Forecast (FA) for one Alaskan region: the synopsis, clouds, and weather covering a whole area rather than a single airport. |
| Get center weather advisories | Read the Center Weather Advisories (CWAs) issued by the NWS Center Weather Service Units: the short-fuse, en-route advisories for conditions affecting one air route traffic control center. |
| Get convective forecast | Read the Traffic Flow Management Convective Forecast (TCF): the polygons of expected thunderstorm activity, with coverage, tops, and confidence, that air traffic flow decisions are planned around. |
| Get domestic SIGMETs | Read the SIGMETs in force over the contiguous United States in domestic format: convective SIGMETs and the non-convective ones for turbulence, icing, and IFR conditions. |
| Get forecast discussion | Read a Weather Forecast Office's forecast discussion: the forecaster's own reasoning behind the products. |
| Get geographic features | Look up the additional geographic features the Aviation Weather Center charts inside a bounding box, such as the named points and boundaries advisories are described against. |
| Get graphical AIRMETs | Read Graphical AIRMETs (G-AIRMETs) for the contiguous United States: the three-hourly snapshots of turbulence, icing, freezing level, IFR conditions, mountain obscuration, low-level wind shear, and strong surface winds. |
| Get international SIGMETs | Read SIGMETs issued worldwide in the international format, decoded with their hazard, altitude band, valid period, and area. |
| Get METARs | Read surface observations (METARs) for one or more airports, or for everything inside a bounding box: wind, visibility, cloud layers, temperature, altimeter setting, the raw observation, and the derived flight category (VFR, MVFR, IFR, LIFR). |
| Get meteorological information statements | Read the Meteorological Information Statements (MIS) issued by a Center Weather Service Unit: the longer-range outlook of conditions expected to affect an air route traffic control center, issued ahead of any advisory. |
| Get navigational aids | Look up navigational aids (VORs, VORTACs, NDBs and the like) with their type, frequency, position, elevation, and magnetic variation. |
| Get navigational fixes | Look up navigational fixes and waypoints by their five-letter names, or find every fix inside a bounding box. |
| Get obstacles | Look up the charted obstacles inside a bounding box (towers, stacks, and other tall structures) with their position and height. |
| Get pilot reports | Read pilot reports (PIREPs and AIREPs), which record what crews actually encountered: turbulence, icing, cloud layers, visibility, and ride quality, with the aircraft type and flight level. |
| Get station info | Look up the weather stations behind the reports: position, elevation, state and country, the ICAO, IATA, and FAA identifiers, and which products the site issues. |
| Get TAFs | Read Terminal Aerodrome Forecasts for one or more airports, or for everything inside a bounding box. |
| Get winds and temperatures aloft | Read the FD winds-and-temperatures-aloft bulletin for a region: forecast wind direction, speed, and temperature at each reporting altitude, for every station in that region. |
| Query the legacy data server | Run a query against the compatibility layer for the retired Text Data Server. |
Get airport info
Look up airports: name, position, elevation, magnetic variation, ownership, and the runways with their dimensions and surface. Airport IDs or a bounding box are required.
Inputs
- Airports
idstext - Airport IDs to look up, separated by commas. Leave blank if you are using a bounding box.
- Bounding box
bboxtext - Bounding box to search, as lat0, lon0, lat1, lon1: the south-west corner followed by the north-east corner. Longitudes in the Americas are negative.
- Format
formattext - Output format. Defaults to JSON, which comes back as one row per airport in 'entries'. GeoJSON returns those rows as features with geometry; decoded is returned verbatim in 'content'.One of:
json(JSON (decoded rows)),decoded(Decoded text (human-readable)),geojson(GeoJSON (rows with geometry)). Default:json.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"country": "US",
"elev": "313",
"faaId": "MCI",
"iataId": "MCI",
"icaoId": "KMCI",
"lat": "39.2976",
"lon": "-94.7139",
"magdec": "02E",
"name": "KANSAS CITY/KANSAS CITY INTL",
"owner": "P",
"runways": [
{
"dimension": "10801x150",
"id": "01L/19R",
"surface": "CONC"
}
],
"source": "FAA",
"state": "MO",
"type": "ARP"
}
],
"format": "json"
}Get Alaska AIRMETs
Read the domestic AIRMETs issued for Alaska, decoded with their hazard, altitude band, and area. The contiguous United States is covered by 'Get graphical AIRMETs' instead. AIRMETs only exist while conditions warrant one, and this is a single region's product, so no advisories in force is a common and correct answer: expect a count of 0 much of the time.
Inputs
- Format
formattext - Output format. Defaults to GeoJSON, which comes back as one row per advisory in 'entries', each with the area it covers. This endpoint's plain JSON output is the one format on this API that answers an empty result with nothing at all rather than an empty list, so GeoJSON is the dependable structured choice here. IWXXM is returned verbatim in 'content'.One of:
geojson(GeoJSON (rows with geometry)),json(JSON (decoded rows)),iwxxm(IWXXM (ICAO XML)). Default:geojson. - Hazard
hazardtext - Only return advisories for this hazard.One of:
turb(Turbulence),ifr(IFR conditions),conv(Convection (thunderstorms)),ice(Icing). - Flight level
levelnumber - Only return advisories that touch this level, as a flight level in hundreds of feet (300 means 30,000 ft). The API searches a window of plus or minus 3,000 ft around it.From 0 to 900.
- As of
datedate and time - Point in time to read the products as of, either as the API's own yyyymmdd_hhmm or as an ISO 8601 timestamp. Leave blank for the latest products.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"geometry": {
"coordinates": [
[
[
-95.1,
39.2
],
[
-93.4,
40.1
],
[
-92.8,
38.6
],
[
-95.1,
39.2
]
]
],
"type": "Polygon"
},
"properties": {
"base": 24000,
"hazard": "TURB",
"severity": "MOD",
"top": 38000,
"validTimeFrom": 1699056000,
"validTimeTo": 1699070400
},
"type": "Feature"
}
],
"format": "geojson"
}Get area forecast
Read the textual Area Forecast (FA) for one Alaskan region: the synopsis, clouds, and weather covering a whole area rather than a single airport. Returned as the bulletin text in 'content'.
Inputs
- Region
regiontextRequired - Which Alaskan region's area forecast to read.One of:
aknorth(Northern half of Alaska),akcentral(Interior Alaska),akaleutian(Aleutians),aksouth(Southcentral Alaska),aksouthwest(Alaska Peninsula),aksoutheast(Eastern Gulf of Alaska),akpanhandle(Alaska Panhandle). Default:aknorth.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "FAAK47 PAFC 041045\nFA9N\nSYNOPSIS AND VFR CLDS/WX\nSYNOPSIS VALID UNTIL 050500\n...LOW PRES OVER THE NORTH SLOPE DRIFTS EAST...",
"count": 0,
"entries": [],
"format": "text"
}Get center weather advisories
Read the Center Weather Advisories (CWAs) issued by the NWS Center Weather Service Units: the short-fuse, en-route advisories for conditions affecting one air route traffic control center.
Inputs
- Hazard
hazardtext - Only return advisories for this hazard.One of:
ts(Thunderstorms),turb(Turbulence),ice(Icing),ifr(IFR conditions),pcpn(Precipitation),unk(Unknown or other). - Format
formattext - Output format. Defaults to JSON, which comes back as decoded rows in 'entries'. GeoJSON returns those rows as features with geometry; raw is returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (as issued)),geojson(GeoJSON (rows with geometry)). Default:json. - As of
datedate and time - Point in time to read the products as of, either as the API's own yyyymmdd_hhmm or as an ISO 8601 timestamp. Leave blank for the latest products.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"cwaText": "ZKC1 CWA 041735 VALID UNTIL 041935 AREA OF EMBEDDED TS MOV FROM 24020KT TOPS TO FL410",
"cwsu": "ZKC",
"hazard": "TS",
"issueTime": "2023-11-04 17:35:00.000Z",
"series": 1,
"validTimeFrom": 1699119300,
"validTimeTo": 1699126500
}
],
"format": "json"
}Get convective forecast
Read the Traffic Flow Management Convective Forecast (TCF): the polygons of expected thunderstorm activity, with coverage, tops, and confidence, that air traffic flow decisions are planned around.
Inputs
- Format
formattext - Output format. Defaults to GeoJSON, which comes back as one forecast polygon per row in 'entries'. Raw is returned verbatim in 'content'.One of:
geojson(GeoJSON (rows with geometry)),raw(Raw text (as issued)). Default:geojson.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"geometry": {
"coordinates": [
[
[
-97.2,
35.1
],
[
-95.6,
36.4
],
[
-94.9,
34.8
],
[
-97.2,
35.1
]
]
],
"type": "Polygon"
},
"properties": {
"conf": "HIGH",
"coverage": "SCT",
"tops": 420,
"valid": "2023-11-04T18:00:00Z"
},
"type": "Feature"
}
],
"format": "geojson"
}Get domestic SIGMETs
Read the SIGMETs in force over the contiguous United States in domestic format: convective SIGMETs and the non-convective ones for turbulence, icing, and IFR conditions. For SIGMETs the US issues in international format, use 'Get international SIGMETs' instead.
Inputs
- Format
formattext - Output format. Defaults to JSON, which comes back as decoded rows in 'entries'. GeoJSON returns those rows as features with geometry; raw, XML, and IWXXM are returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (the bulletin as issued)),geojson(GeoJSON (rows with geometry)),xml,iwxxm(IWXXM (ICAO XML)). Default:json. - Hazard
hazardtext - Only return advisories for this hazard.One of:
conv(Convection (thunderstorms)),turb(Turbulence),ice(Icing),ifr(IFR conditions). - Flight level
levelnumber - Only return advisories that touch this level, as a flight level in hundreds of feet (300 means 30,000 ft). The API searches a window of plus or minus 3,000 ft around it.From 0 to 900.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"geometry": {
"coordinates": [
[
[
-95.1,
39.2
],
[
-93.4,
40.1
],
[
-92.8,
38.6
],
[
-95.1,
39.2
]
]
],
"type": "Polygon"
},
"properties": {
"base": 24000,
"hazard": "TURB",
"severity": "MOD",
"top": 38000,
"validTimeFrom": 1699056000,
"validTimeTo": 1699070400
},
"type": "Feature"
}
],
"format": "geojson"
}Get forecast discussion
Read a Weather Forecast Office's forecast discussion: the forecaster's own reasoning behind the products. Returns the aviation section, or the full discussion, issued in the past six hours, as text in 'content'.
Inputs
- Forecast office
cwatext - Which Weather Forecast Office's discussion to read, by the four-letter identifier of the office itself: KEAX for Kansas City, KLOT for Chicago, KSEW for Seattle. That is the office's three-letter County Warning Area code with its K prefix (EAX becomes KEAX), and the bare three-letter code is not accepted. Leave blank for every office.
- Section
typetext - Whether to return only the aviation section or the full discussion.One of:
afd(Aviation section),af(Full discussion). Default:afd.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "AVIATION...(06Z TAFS)\nVFR conditions prevail through the period. Southwest winds 10-15 kt with gusts to 25 kt develop after 18Z.",
"count": 0,
"entries": [],
"format": "text"
}Get geographic features
Look up the additional geographic features the Aviation Weather Center charts inside a bounding box, such as the named points and boundaries advisories are described against.
Inputs
- Bounding box
bboxtextRequired - Bounding box to search, as lat0, lon0, lat1, lon1: the south-west corner followed by the north-east corner. Longitudes in the Americas are negative. Required for this action, which only ever searches an area.
- Format
formattext - Output format. Defaults to JSON, which comes back as decoded rows in 'entries'. GeoJSON returns those rows as features with geometry; raw is returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (as issued)),geojson(GeoJSON (rows with geometry)). Default:json.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"id": "CHI",
"lat": 41.88,
"lon": -87.63,
"name": "Chicago"
}
],
"format": "json"
}Get graphical AIRMETs
Read Graphical AIRMETs (G-AIRMETs) for the contiguous United States: the three-hourly snapshots of turbulence, icing, freezing level, IFR conditions, mountain obscuration, low-level wind shear, and strong surface winds. For Alaska, use 'Get Alaska AIRMETs' instead.
Inputs
- Product
producttext - Which AIRMET product to read: Sierra (IFR and mountain obscuration), Tango (turbulence and winds), or Zulu (icing and freezing level).One of:
sierra(Sierra (IFR and mountain obscuration)),tango(Tango (turbulence and surface winds)),zulu(Zulu (icing and freezing level)). - Format
formattext - Output format. Defaults to JSON, which comes back as decoded rows in 'entries'. GeoJSON returns those rows as features with geometry; raw and XML are returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (as issued)),geojson(GeoJSON (rows with geometry)),xml. Default:json. - Hazard
hazardtext - Only return advisories for this hazard.One of:
turb-hi(Turbulence, high level),turb-lo(Turbulence, low level),llws(Low-level wind shear),sfc_wind(Strong surface winds),ifr(IFR conditions),mtn_obs(Mountain obscuration),ice(Icing),fzlvl(Freezing level). - As of
datedate and time - Point in time to read the products as of, either as the API's own yyyymmdd_hhmm or as an ISO 8601 timestamp. Leave blank for the latest products.
- Forecast hour
foretext - Which snapshot of the current forecast package to read, in hours ahead of its issue time.One of:
0(0 hours (valid now)),3(3 hours),6(6 hours),9(9 hours),12(12 hours).
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"geometry": {
"coordinates": [
[
[
-95.1,
39.2
],
[
-93.4,
40.1
],
[
-92.8,
38.6
],
[
-95.1,
39.2
]
]
],
"type": "Polygon"
},
"properties": {
"base": 24000,
"hazard": "TURB",
"severity": "MOD",
"top": 38000,
"validTimeFrom": 1699056000,
"validTimeTo": 1699070400
},
"type": "Feature"
}
],
"format": "geojson"
}Get international SIGMETs
Read SIGMETs issued worldwide in the international format, decoded with their hazard, altitude band, valid period, and area. Does not include the convective and non-convective SIGMETs the United States issues in its own domestic format.
Inputs
- Format
formattext - Output format. Defaults to JSON, which comes back as decoded rows in 'entries'. GeoJSON returns those rows as features with geometry; raw, XML, and IWXXM are returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (the bulletin as issued)),geojson(GeoJSON (rows with geometry)),xml,iwxxm(IWXXM (ICAO XML)). Default:json. - Hazard
hazardtext - Only return advisories for this hazard.One of:
turb(Turbulence),ice(Icing). - Flight level
levelnumber - Only return advisories that touch this level, as a flight level in hundreds of feet (300 means 30,000 ft). The API searches a window of plus or minus 3,000 ft around it.From 0 to 900.
- As of
datedate and time - Point in time to read the products as of, either as the API's own yyyymmdd_hhmm or as an ISO 8601 timestamp. Leave blank for the latest products.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"geometry": {
"coordinates": [
[
[
-95.1,
39.2
],
[
-93.4,
40.1
],
[
-92.8,
38.6
],
[
-95.1,
39.2
]
]
],
"type": "Polygon"
},
"properties": {
"base": 24000,
"hazard": "TURB",
"severity": "MOD",
"top": 38000,
"validTimeFrom": 1699056000,
"validTimeTo": 1699070400
},
"type": "Feature"
}
],
"format": "geojson"
}Get METARs
Read surface observations (METARs) for one or more airports, or for everything inside a bounding box: wind, visibility, cloud layers, temperature, altimeter setting, the raw observation, and the derived flight category (VFR, MVFR, IFR, LIFR). Station IDs or a bounding box are required.
Inputs
- Stations
idstext - Station IDs, separated by commas. Two group shorthands also work here: @IL for every station in a US state, and ~US for every station in a country. Write the @ form in quotes and on its own, as "@IL", because a bare @ starts a variable reference in the builder and would be read as a variable named IL; the ~ form needs no quotes. A country is a lot of weather: ~US answers with every US station, which is around 170 KB of observations or 1.4 MB of forecasts, so prefer a state or a bounding box unless you really want all of it. Leave blank if you are using a bounding box.
- Bounding box
bboxtext - Bounding box to search, as lat0, lon0, lat1, lon1: the south-west corner followed by the north-east corner. Longitudes in the Americas are negative.
- Format
formattext - Output format. Defaults to JSON, which comes back as one decoded row per observation in 'entries'. GeoJSON returns those rows as features with geometry; raw, decoded, XML, and IWXXM are returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (the bulletin as issued)),decoded(Decoded text (human-readable)),geojson(GeoJSON (rows with geometry)),xml,iwxxm(IWXXM (ICAO XML)). Default:json. - Include TAF
taftrue/false - Also return each station's current Terminal Aerodrome Forecast alongside its observation. Defaults to off.Default:
false. - Hours back
hoursnumber - How many hours of observations to return, counting back from now. Defaults to 1.5, which is the most recent observation for most stations.From 0 to 1000. Default:
1.5. - As of
datedate and time - Point in time to read the products as of, either as the API's own yyyymmdd_hhmm or as an ISO 8601 timestamp. Leave blank for the latest products.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"altim": 1016.3,
"clouds": [
{
"base": 11000,
"cover": "BKN"
},
{
"base": 25000,
"cover": "OVC"
}
],
"dewp": 2.8,
"elev": 202,
"fltCat": "VFR",
"icaoId": "KORD",
"lat": 41.9602,
"lon": -87.9316,
"metarType": "METAR",
"name": "Chicago/O'Hare Intl",
"obsTime": 1699048260,
"rawOb": "KORD 032151Z 23006KT 10SM BKN110 OVC250 14/03 A3000 RMK AO2 SLP162 VIRGA OHD T01440028",
"receiptTime": "2023-11-03 21:54:03.000Z",
"reportTime": "2023-11-03 22:00:00.000Z",
"slp": 1016.2,
"temp": 14.4,
"visib": 10.0,
"wdir": 230,
"wgst": 12,
"wspd": 6,
"wxString": "-RA"
}
],
"format": "json"
}Get meteorological information statements
Read the Meteorological Information Statements (MIS) issued by a Center Weather Service Unit: the longer-range outlook of conditions expected to affect an air route traffic control center, issued ahead of any advisory. A CWSU issues one only when it has something to flag, so a count of 0 is a common and correct answer rather than a failure.
Inputs
- Center
loctext - Which CWSU's statements to read, by its center identifier such as ZKC or ZNY. Leave blank for every center.
- Format
formattext - Output format. Defaults to JSON, which comes back as one row per statement in 'entries'. Text is returned verbatim in 'content'.One of:
json(JSON (decoded rows)),text(Plain text). Default:json.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"cwsu": "ZKC",
"issueTime": "2023-11-04 11:02:00.000Z",
"misText": "ZKC MIS 01 VALID 041102-041900. AREA OF MVFR CIGS EXPECTED TO DEVELOP ACROSS THE WESTERN HALF OF ZKC.",
"validTimeFrom": 1699095720,
"validTimeTo": 1699124400
}
],
"format": "json"
}Get navigational aids
Look up navigational aids (VORs, VORTACs, NDBs and the like) with their type, frequency, position, elevation, and magnetic variation. Navaid IDs or a bounding box are required. Be aware that the Aviation Weather Center is publishing no navaid data at present: this endpoint answers every query, by identifier or by area, with an empty list, which is a gap in their data rather than anything to fix in the step. 'Get navigational fixes' covers waypoints and does return results.
Inputs
- Navaids
idstext - Navaid identifiers to look up, separated by commas, such as MCI or OJC. Leave blank if you are using a bounding box. Note that the source dataset behind this action is currently empty, so no identifier returns anything today.
- Bounding box
bboxtext - Bounding box to search, as lat0, lon0, lat1, lon1: the south-west corner followed by the north-east corner. Longitudes in the Americas are negative.
- Format
formattext - Output format. Defaults to JSON, which comes back as decoded rows in 'entries'. GeoJSON returns those rows as features with geometry; raw is returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (as issued)),geojson(GeoJSON (rows with geometry)). Default:json.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"country": "US",
"elev": 310,
"freq": 113.25,
"id": "MCI",
"lat": 39.2853,
"lon": -94.7371,
"mag_dec": "05E",
"name": "Kansas City",
"state": "MO",
"type": "VORTAC"
}
],
"format": "json"
}Get navigational fixes
Look up navigational fixes and waypoints by their five-letter names, or find every fix inside a bounding box. Fix IDs or a bounding box are required.
Inputs
- Fixes
idstext - Five-letter fix names to look up, separated by commas. Leave blank if you are using a bounding box.
- Bounding box
bboxtext - Bounding box to search, as lat0, lon0, lat1, lon1: the south-west corner followed by the north-east corner. Longitudes in the Americas are negative.
- Format
formattext - Output format. Defaults to JSON, which comes back as decoded rows in 'entries'. GeoJSON returns those rows as features with geometry; raw is returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (as issued)),geojson(GeoJSON (rows with geometry)). Default:json.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"id": "BARBQ",
"lat": 39.0811,
"lon": -94.7681,
"type": "I"
}
],
"format": "json"
}Get obstacles
Look up the charted obstacles inside a bounding box (towers, stacks, and other tall structures) with their position and height.
Inputs
- Bounding box
bboxtextRequired - Bounding box to search, as lat0, lon0, lat1, lon1: the south-west corner followed by the north-east corner. Longitudes in the Americas are negative. Required for this action, which only ever searches an area.
- Format
formattext - Output format. Defaults to JSON, which comes back as decoded rows in 'entries'. GeoJSON returns those rows as features with geometry; raw is returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (as issued)),geojson(GeoJSON (rows with geometry)). Default:json.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"agl": 449,
"elev": 1105,
"lat": 41.7402,
"lon": -87.9711,
"type": "TOWER"
}
],
"format": "json"
}Get pilot reports
Read pilot reports (PIREPs and AIREPs), which record what crews actually encountered: turbulence, icing, cloud layers, visibility, and ride quality, with the aircraft type and flight level. Search a bounding box, or a radius around one airport.
Inputs
- Around station
idtext - Station to search around. Use together with 'Radius'. Leave blank if you are using a bounding box.
- Radius
distancenumber - How far around that station to search, in statute miles.From 0 to 5000.
- Bounding box
bboxtext - Bounding box to search, as lat0, lon0, lat1, lon1: the south-west corner followed by the north-east corner. Longitudes in the Americas are negative.
- Format
formattext - Output format. Defaults to JSON, which comes back as one decoded row per report in 'entries'. GeoJSON returns those rows as features with geometry; raw, decoded, and XML are returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (the report as filed)),decoded(Decoded text (human-readable)),geojson(GeoJSON (rows with geometry)),xml. Default:json. - Hours back
agenumber - How many hours of reports to return, counting back from now. Reports thin out quickly, so a few hours is usually the useful window.From 0 to 1000.
- Flight level
levelnumber - Only return advisories that touch this level, as a flight level in hundreds of feet (300 means 30,000 ft). The API searches a window of plus or minus 3,000 ft around it.From 0 to 900.
- Minimum intensity
intentext - Only return reports at or above this intensity of turbulence or icing.One of:
lgt(Light),mod(Moderate),sev(Severe). - As of
datedate and time - Point in time to read the products as of, either as the API's own yyyymmdd_hhmm or as an ISO 8601 timestamp. Leave blank for the latest products.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"acType": "E170",
"fltLvl": "140",
"icaoId": "KCOU",
"lat": 40.938,
"lon": -90.4311,
"obsTime": 1699379880,
"pirepType": "PIREP",
"rawOb": "COU UA /OV COU260020/TM 0012/FL140/TP E170/TB LGT-MOD CHOP 140-170/RM DURC /ZKC FDC/CW",
"receiptTime": "2023-11-07 18:08:15.000Z",
"tbInt1": "LGT-MOD",
"tbType1": "CAT"
}
],
"format": "json"
}Get station info
Look up the weather stations behind the reports: position, elevation, state and country, the ICAO, IATA, and FAA identifiers, and which products the site issues. Station IDs or a bounding box are required.
Inputs
- Stations
idstext - Station IDs, separated by commas. To cover a region rather than a list of airports, leave this blank and give a bounding box instead: this endpoint matches identifiers one station at a time, with no shorthand for a whole state.
- Bounding box
bboxtext - Bounding box to search, as lat0, lon0, lat1, lon1: the south-west corner followed by the north-east corner. Longitudes in the Americas are negative.
- Format
formattext - Output format. Defaults to JSON, which comes back as decoded rows in 'entries'. GeoJSON returns those rows as features with geometry; raw and XML are returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (as issued)),geojson(GeoJSON (rows with geometry)),xml. Default:json.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"country": "US",
"elev": 202,
"faaId": "ORD",
"iataId": "ORD",
"icaoId": "KORD",
"lat": 41.9602,
"lon": -87.9316,
"priority": 1,
"site": "Chicago/O'Hare Intl",
"siteType": [
"METAR",
"TAF"
],
"state": "IL"
}
],
"format": "json"
}Get TAFs
Read Terminal Aerodrome Forecasts for one or more airports, or for everything inside a bounding box. Each forecast comes back with its valid period, the raw bulletin, and a decoded list of forecast periods with wind, visibility, weather, and clouds. Station IDs or a bounding box are required.
Inputs
- Stations
idstext - Station IDs, separated by commas. Two group shorthands also work here: @IL for every station in a US state, and ~US for every station in a country. Write the @ form in quotes and on its own, as "@IL", because a bare @ starts a variable reference in the builder and would be read as a variable named IL; the ~ form needs no quotes. A country is a lot of weather: ~US answers with every US station, which is around 170 KB of observations or 1.4 MB of forecasts, so prefer a state or a bounding box unless you really want all of it. Leave blank if you are using a bounding box.
- Bounding box
bboxtext - Bounding box to search, as lat0, lon0, lat1, lon1: the south-west corner followed by the north-east corner. Longitudes in the Americas are negative.
- Format
formattext - Output format. Defaults to JSON, which comes back as decoded rows in 'entries'. GeoJSON returns those rows as features with geometry; raw, XML, and IWXXM are returned verbatim in 'content'.One of:
json(JSON (decoded rows)),raw(Raw text (the bulletin as issued)),geojson(GeoJSON (rows with geometry)),xml,iwxxm(IWXXM (ICAO XML)). Default:json. - Include METAR
metartrue/false - Also return each station's current observation alongside its forecast. Defaults to off.Default:
false. - Select by
timetext - Whether to select forecasts by the period they are valid for (the default) or by when they were issued.One of:
valid(Valid time),issue(Issuance time). Default:valid. - As of
datedate and time - Point in time to read the products as of, either as the API's own yyyymmdd_hhmm or as an ISO 8601 timestamp. Leave blank for the latest products.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "",
"count": 1,
"entries": [
{
"bulletinTime": "2023-11-03 23:20:00.000Z",
"elev": 202,
"fcsts": [
{
"clouds": [
{
"base": 11000,
"cover": "OVC"
}
],
"timeFrom": 1699056000,
"timeTo": 1699077600,
"visib": 6.0,
"wdir": "VRB",
"wspd": 5,
"wxString": "-SHRA"
}
],
"icaoId": "KORD",
"issueTime": "2023-11-03 23:20:00.000Z",
"lat": 41.9602,
"lon": -87.9316,
"mostRecent": 1,
"name": "Chicago/O'Hare Intl",
"rawTAF": "KORD 032320Z 0400/0506 VRB05KT P6SM FEW050 SCT080 OVC110 TEMPO 0401/0403 -SHRA BKN050 OVC080 FM040600 34006KT P6SM FEW015 SCT100 BKN150",
"remarks": "RMK PGG",
"validTimeFrom": 1699056000,
"validTimeTo": 1699164000
}
],
"format": "json"
}Get winds and temperatures aloft
Read the FD winds-and-temperatures-aloft bulletin for a region: forecast wind direction, speed, and temperature at each reporting altitude, for every station in that region. Returned as the bulletin text in 'content'.
Inputs
- Region
regiontext - Which region's bulletin to read.One of:
us(All contiguous US sites),bos(Northeast (Boston)),mia(Southeast (Miami)),chi(North central (Chicago)),dfw(South central (Dallas-Fort Worth)),slc(Rocky Mountain (Salt Lake City)),sfo(Pacific Coast (San Francisco)),alaska,hawaii,other_pac(Western Pacific). - Altitude band
leveltext - Low altitudes (up to 24,000 ft) or high altitudes (above them).One of:
low,high. - Forecast cycle
fcsttext - Which forecast cycle to read: the 6, 12, or 24 hour product.One of:
06(6 hour),12(12 hour),24(24 hour).
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "DATA BASED ON 041200Z\nVALID 041800Z FOR USE 1400-2100Z. TEMPS NEG ABV 24000\nFT 3000 6000 9000 12000 18000 24000\nBOS 2116 2222+06 2334+01 2447-05 2578-17 2695-29",
"count": 0,
"entries": [],
"format": "text"
}Query the legacy data server
Run a query against the compatibility layer for the retired Text Data Server. Its one advantage over the other actions is an explicit start and end time, so it can pull a past window of METARs, TAFs, pilot reports, SIGMETs, or G-AIRMETs rather than only recent ones. Give a start and end time for that; with neither, it reads the last two hours. Answers in XML or CSV, returned in 'content'.
Inputs
- Data source
dataSourcetextRequired - Which product to query.One of:
metars,tafs,aircraftreports(Pilot reports),airsigmets(AIRMETs and SIGMETs),gairmets(Graphical AIRMETs). Default:metars. - Stations
stationStringtext - Station IDs to query, separated by commas. Give this, a bounding box, or a radial distance.
- Bounding box
boundingBoxtext - Bounding box to search, as lat0, lon0, lat1, lon1: the south-west corner followed by the north-east corner. Longitudes in the Americas are negative.
- Start time
startTimedate and time - Beginning of the window to query, as yyyymmdd_hhmm or an ISO 8601 timestamp. Give this together with an end time to pull a specific past window; leave both blank to use 'Hours back' instead.
- End time
endTimedate and time - End of the window to query, as yyyymmdd_hhmm or an ISO 8601 timestamp.
- Hours back
hoursBeforeNownumber - Query the last this many hours. Defaults to 2. A start and end time take precedence over this if you give them, so leave those blank to use it.From 0 to 1000. Default:
2. - Format
formattext - Output format. Defaults to XML; TAFs are not available as CSV. Either way the document is returned in 'content'.One of:
xml,csv. Default:xml. - Most recent per station
mostRecentForEachStationtext - Return only the latest report for each station, for METARs and TAFs. 'Constraint' asks the server for the newest report directly; 'post-filter' fetches the window and then thins it, which is slower but honours the other filters.One of:
constraint(Constraint (faster)),postfilter(Post-filter). - Radial distance
radialDistancetext - Circular bounds for pilot reports, in the legacy server's own spelling: distance in statute miles, a semicolon, then longitude and latitude.
Outputs
contenttext- The response verbatim for the raw, decoded, XML, IWXXM, CSV, and plain-text formats. Empty for JSON and GeoJSON.
countnumber- Number of rows in 'entries'; 0 when a text format was asked for
entrieslist- One row per product for the JSON and GeoJSON formats (GeoJSON rows are features, each with its own geometry). Empty for every other format.
formattext- The format the products were requested in
Example output
{
"content": "No errors\nNo warnings\n2 ms\ndata source=metars\nraw_text,station_id,observation_time,latitude,longitude\n\"KORD 032151Z 23006KT 10SM BKN110 OVC250 14/03 A3000\",KORD,2023-11-03T21:51:00Z,41.96,-87.93",
"count": 0,
"entries": [],
"format": "csv"
}