Introduction

The CheckWX Aviation Weather API allows for programmatic access to CheckWX.com's data and services. Using this API you can retrieve current METAR and TAF information for use in web, desktop and mobile applications.

Note: You must register for a free API KEY before you can this service.

Widget

Only need raw METAR and TAF reports? Don't want to write API code?

Try our NEW METAR-TAF widget.

Just drop on any web page and start receiving live METARs and TAFs automatically!

Documentation

This documentation is structured by API, which is a group of related functionality like METAR or TAF, and then by endpoint, which is a specific method within that API that performs one action and is located at a specific URL.

Each endpoint in this documentation is described using several parts:

  • HTTP Method: GET
  • Path: /metar/
  • Header Parameters
  • URL Parameters
  • Query Parameters

All URLs referenced in the documentation have the root path https://api.checkwx.com. This base path goes before the endpoint path:

https://api.checkwx.com

In this example combine the base path and /metar/{icao} to get the request URL:

https://api.checkwx.com/metar/{icao}

For this endpoint, {icao} is the URL parameter. In a request, you replace the placeholder {icao} with a real value:

https://api.checkwx.com/metar/KPIE

We use query string parameters for filtering. The format for query string parameters is the full resource URL followed by a question mark and the optional parameters:

https://api.checkwx.com/metar/KPIE?filter=string

Authentication

All endpoints require an API key, which is unique for each user.

You must provided your API key as a header parameter as shown in this example:

The next section covers how you get and use an API key.

API Key Example

$ curl 'https://api.checkwx.com/station/{icao}' \
    -H 'X-API-Key: apikey'

API Access

To enable API access, you will need to create a free account at www.checkwx.com/apikey.

  • You will then receive a unique personal API key via email.
  • You will need to supply your API key with each API request as shown in our examples.

JSON/XML

All response data is returned in a JSON format by default. This is our preferred response data type.

You can however request response data in a XML format by specifying an additional header parameter as shown in this example:

$ curl 'https://api.checkwx.com/station/kpie' \
    -H 'X-API-Key: apikey' \
    -H 'Accept: application/xml'

SSL

We give a valid, signed certificate for all API methods. We recommend all requests to our API should be sent over HTTPS. Any requests initiated over HTTP are automatically upgraded to HTTPS.

Limits

API requests are limited to 2000 requests per day. An API request is defined as any call to our server. Making a request with multiple ICAO codes only counts as one request.

If you exceed 2000 requests per day, the server will block your incoming requests. Your limit counter will reset to zero at 00:00 UTC.

To prevent exceeding your request limit you should consider caching the responses:

  • METARS AND TAFS should be requested and cached for at least 30 minutes.
  • STATIONS should be requested and cached for at least 30 days.

Example response

{
  "errors": [
    {
      "status": 429,
      "message": "API Rate Limit Exceeded",
      "help": "See api.checkwx.com for documentation and examples"
    }
  ]
}

Throttling

To improve connections and experiences for all our users, we use some connection limits when we see suspicious activity or other overload. Each user account is permitted up to 5 simultaneous connections.

To protect the quality of this free service, additional rate limits may apply to some actions. For example, polling aggressively instead of caching, making API calls with a high concurrency, or repeatedly requesting the same data may result in abuse rate limiting or termination of your API key.

Error Messages

Successful API requests are returned with a status code of 200.

If you receive a status code in the range of 400 to 450, please check the error section in the response data for the exact error message and resolution.

If you receive a status code of 500 then the error is on our server and we will resolve it asap.

Example response

{
  "errors": [
    {
      "status": 401,
      "message": "Invalid Header API Key",
      "help": "See api.checkwx.com for documentation and examples"
    }
  ]
}

Station

A Station is our term for an Airport, Heliport, Seaplane Base, Gliderport, or Weather Reporting Station.

Stations are identified by a four-character alphanumeric ICAO code.

Our database contains over 44,000 ICAO codes to choose from.

You can search a listing of all ICAO codes on CheckWX.com

Station Fields

The following table lists the fields which are returned by the Station service.

If a field is marked as Conditional Yes, the field will not be returned if data does not exist for that field. Therefore your code should check for the existence of the field in the returned JSON before attempting to use it.

Field Type Description Conditional
icao string ICAO airport code or station indicator
name string Station name
activated string Activated Month/Year Yes
city string City Yes
country string Country abbreviation
elevation.feet integer Elevation in feet Yes
elevation.method string Method used to determine elevation - 'Surveyed' or 'Estimated' Yes
iata string IATA airport code or station indicator Yes
latitude.decimal float Latitude in decimal degrees
latitude.degrees string Latitude in degrees, minutes, seconds
longitude.decimal float Longitude in decimal degrees
longitude.degrees string Longitude in degrees, minutes, seconds
magnetic_variation string The angle between magnetic north and true north Yes
magnetic_variation_year string Year of last magnetic variation determination Yes
sectional string Station appears on this FAA Sectional chart (US/Canada) Yes
state string State/province abbreviation (US/Canada) Yes
status string Status - 'Operational' or 'Closed' Yes
timezone.gmt integer Timezone offset subtracted or added to GMT time
timezone.dst integer Timezone offset subtracted or added to GMT time including DST
timezone.tzid string Timezone text string
type string Type 'Airport', 'Heliport', 'Seaplane Base', etc. Yes
useage string Useage 'Public', 'Private', 'Military', etc. Yes

Station Methods

1.1 Single

Returns the latest Station information for a single ICAO code.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao A single ICAO code required
GET
/station/{icao}

Example request

$ curl 'https://api.checkwx.com/station/kpie' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 1,
  "data": [
    {
      "icao": "KPIE",
      "name": "St Pete-Clearwater International",
      "activated": "10\/1942",
      "city": "St Petersburg-Clearwater",
      "country": "US",
      "elevation": {
        "feet": 10.5,
        "method": "Surveyed"
      },
      "iata": "PIE",
      "latitude": {
        "decimal": 27.909999,
        "degrees": "27° 54' 35\" N"
      },
      "longitude": {
        "decimal": -82.687545,
        "degrees": "82° 41' 15\" W"
      },
      "magnetic": "004 W (08\/05)",
      "sectional": "MIAMI",
      "state": "FL",
      "status": "Operational",
      "timezone": {
        "gmt": -5,
        "dst": -4,
        "tzid": "America\/New_York"
      },
      "type": "Airport",
      "useage": "Public"
    }
  ]
}

1.2 Multiple

Returns the latest Station information for multiple ICAO codes.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao1 , icao2 , icao3 Multiple ICAO codes separated with commas.
Maximum of 25 ICAO codes per API request.
required
GET
/station/{icao1},{icao2},{icao3}....

Example request

$ curl 'https://api.checkwx.com/station/kpie,kspg' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 2,
  "data": [
    {
      "icao": "KPIE",
      "name": "St Pete-Clearwater International",
      "activated": "10\/1942",
      "city": "St Petersburg-Clearwater",
      "country": "US",
      "elevation": {
        "feet": 10.5,
        "method": "Surveyed"
      },
      "iata": "PIE",
      "latitude": {
        "decimal": 27.909999,
        "degrees": "27° 54' 35\" N"
      },
      "longitude": {
        "decimal": -82.687545,
        "degrees": "82° 41' 15\" W"
      },
      "magnetic": "004 W (08\/05)",
      "sectional": "MIAMI",
      "state": "FL",
      "status": "Operational",
      "timezone": {
        "gmt": -5,
        "dst": -4,
        "tzid": "America\/New_York"
      },
      "type": "Airport",
      "useage": "Public"
    },
    {
      "icao": "KSPG",
      "name": "Albert Whitted",
      "activated": "04\/1940",
      "city": "St Petersburg",
      "country": "US",
      "elevation": {
        "feet": 6.7,
        "method": "Surveyed"
      },
      "latitude": {
        "decimal": 27.765111,
        "degrees": "27° 45' 54\" N"
      },
      "longitude": {
        "decimal": -82.626972,
        "degrees": "82° 37' 37\" W"
      },
      "magnetic": "004 W (01\/05)",
      "sectional": "MIAMI",
      "state": "FL",
      "status": "Operational",
      "timezone": {
        "gmt": -5,
        "dst": -4,
        "tzid": "America\/New_York"
      },
      "type": "Airport",
      "useage": "Public"
    }
  ]
}

1.3 Radius

Returns the latest Station information for stations within a parameter radius of a single ICAO code.

The results are sorted based on the distance from the requested ICAO code.

Additional data elements are included in the response data to show the distance and direction of additional stations from the requested ICAO code.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao A single ICAO code required
radius The surrounding radius in miles from the parameter ICAO code required
Query Parameter Description
type Filter the results by station type (A, H, G, or S):

  • A - Airport
  • H - Heliport
  • G - Gliderport
  • S - Seaplane Base
optional
GET
/station/{icao}/radius/{radius}
GET
/station/{icao}/radius/{radius}/?type={type}

Example request

$ curl 'https://api.checkwx.com/station/kpie/radius/10' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 2,
  "data": [
    {
      "icao": "KCLW",
      "name": "Clearwater Air Park",
      "activated": "10\/1942",
      "city": "Clearwater",
      "country": "US",
      "elevation": {
        "feet": 71,
        "method": "Surveyed"
      },
      "latitude": {
        "decimal": 27.977214,
        "degrees": "27° 58' 37\" N"
      },
      "longitude": {
        "decimal": -82.759057,
        "degrees": "82° 45' 32\" W"
      },
      "magnetic": "004 W (01\/05)",
      "radius": {
        "from": "KPIE",
        "miles": 6.4,
        "meters": 10299.8,
        "direction": 317,
        "compass": "NW"
      },
      "sectional": "MIAMI",
      "state": "FL",
      "status": "Operational",
      "timezone": {
        "gmt": -5,
        "dst": -4,
        "tzid": "America\/New_York"
      },
      "type": "Airport",
      "useage": "Public"
    },
    {
      "icao": "6FD4",
      "name": "Dunedin",
      "city": "Dunedin",
      "country": "US",
      "elevation": {
        "feet": 10,
        "method": null
      },
      "latitude": {
        "decimal": 28.019699,
        "degrees": "28° 1' 10\" N"
      },
      "longitude": {
        "decimal": -82.789803,
        "degrees": "82° 47' 23\" W"
      },
      "radius": {
        "from": "KPIE",
        "miles": 9.8,
        "meters": 15799.6,
        "direction": 321,
        "compass": "NW"
      },
      "state": "FL",
      "status": "Operational",
      "timezone": {
        "gmt": -5,
        "dst": -4,
        "tzid": "America\/New_York"
      },
      "type": "Heliport"
    }
  ]
}

1.4 Lat/Lon

Returns the latest Station information for a single station closest to a parameter ©latitude/longitude.

Additional data elements are included in the response data to show the distance and direction from the requested latitude/longitude.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
latitude The decimal latitude required
longitude The decimal longitude required
type Filter the results by station type (A, H, G, or S):

  • A - Airport
  • H - Heliport
  • G - Gliderport
  • S - Seaplane Base
optional
Query Parameter Description
type Filter the results by station type (A, H, G, or S):

  • A - Airport
  • H - Heliport
  • G - Gliderport
  • S - Seaplane Base
optional
GET
/station/lat/{latitude}/lon/{longitude}
GET
/station/lat/{latitude}/lon/{longitude}?type={type}

Example request

$ curl 'https://api.checkwx.com/station/lat/51.4706/lon/-1.461941 \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 1,
  "data": [
    {
      "icao": "EGVI",
      "name": "RAF Greenham Common",
      "city": "Berkshire",
      "country": "GB",
      "elevation": {
        "feet": 400,
        "method": null
      },
      "latitude": {
        "decimal": 51.379,
        "degrees": "51° 22' 44\" N"
      },
      "longitude": {
        "decimal": -1.281,
        "degrees": "1° 16' 51\" W"
      },
      "radius": {
        "from": {
          "latitude": 51.4706,
          "longitude": -1.4619
        },
        "miles": 10.04,
        "meters": 16157.4,
        "direction": 129,
        "compass": "SE"
      },
      "status": "Closed",
      "timezone": {
        "gmt": 0,
        "dst": 1,
        "tzid": "Europe\/London"
      },
      "type": "Airport",
      "useage": "Military"
    }
  ]
}

1.5 Lat/Lon Radius

Returns the latest Station information for multiple stations within a radius of a parameter latitude/longitude.

Additional data elements are included in the response data to show the distance and direction from the requested latitude/longitude.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
latitude The decimal latitude required
longitude The decimal longitude required
radius The surrounding radius in miles from the parameter ICAO code required
Query Parameter Description
type Filter the results by station type (A, H, G, or S):

  • A - Airport
  • H - Heliport
  • G - Gliderport
  • S - Seaplane Base
optional
GET
/station/lat/{latitude}/lon/{longitude}/radius/{radius}
GET
/station/lat/{latitude}/lon/{longitude}/radius/{radius}?type={type}

Example request

$ curl 'https://api.checkwx.com/station/lat/51.4706/lon/-1.461941/radius/25 \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 1,
  "data": [
    {
      "icao": "EGVI",
      "name": "RAF Greenham Common",
      "city": "Berkshire",
      "country": "GB",
      "elevation": {
        "feet": 400,
        "method": null
      },
      "latitude": {
        "decimal": 51.379,
        "degrees": "51° 22' 44\" N"
      },
      "longitude": {
        "decimal": -1.281,
        "degrees": "1° 16' 51\" W"
      },
      "radius": {
        "from": {
          "latitude": 51.4706,
          "longitude": -1.4619
        },
        "miles": 10.04,
        "meters": 16157.4,
        "direction": 129,
        "compass": "SE"
      },
      "status": "Closed",
      "timezone": {
        "gmt": 0,
        "dst": 1,
        "tzid": "Europe\/London"
      },
      "type": "Airport",
      "useage": "Military"
    }
  ]
}

ICAO Invalid

In the event that an ICAO code is invalid, the following data message is returned.

Example response

{
  "results": 1,
  "data": [
    "K1234 Invalid Station ICAO"
  ]
}

METAR

METAR is a format for reporting weather information. A METAR weather report is predominantly used by pilots in fulfillment of a part of a pre-flight weather briefing, and by meteorologists, who use aggregated METAR information to assist in weather forecasting.

METARs typically come from airports or permanent weather observation stations. Reports are generated once an hour or half-hour, but if conditions change significantly, a report known as a special (SPECI) may be issued. Some METARs are encoded by automated airport weather stations located at airports, military bases, and other sites. Some locations still use augmented observations, which are recorded by digital sensors, encoded via software, and then reviewed by certified weather observers or forecasters prior to being transmitted. Observations may also be taken by trained observers or forecasters who manually observe and encode their observations prior to transmission.

  • Our raw METAR is the most common format in the world for the transmission of observational weather data. It is highly standardized through the International Civil Aviation Organization (ICAO), which allows it to be understood throughout most of the world.

  • Our decoded METAR decodes the raw METAR and creates keys and values for each part in a METAR. We also include additional information and measurement conversions for you.

METAR Raw

2.1 Single

Returns the latest METAR information in a raw format for a single ICAO code.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao A single ICAO code required
GET
/metar/{icao}

Example request

$ curl 'https://api.checkwx.com/metar/kpie' \
    -H 'X-API-Key: {key}'

Example response

{
    "results": 1,
    "data": [
        "KPIE 260853Z AUTO 02013G17KT 10SM CLR 17\/07 A2998 RMK AO2 SLP153 T01720072 57000"
    ]
}

2.2 Multiple

Returns the latest METAR information in a raw format for multiple ICAO codes.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao1 , icao2 , icao3 Multiple ICAO codes separated with commas.
Maximum of 25 ICAO codes per API request.
required
GET
/metar/{icao1},{icao2},{icao3}....

Example request

$ curl 'https://api.checkwx.com/metar/kpie,kspg' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 2,
  "data": [
    "KPIE 260853Z AUTO 02013G17KT 10SM CLR 17\/07 A2998 RMK AO2 SLP153 T01720072 57000",
    "KSPG 260853Z AUTO 05012KT 10SM CLR 18\/09 A2997 RMK AO2 SLP148 T01830094 53001"
  ]
}

2.3 Radius

Returns the latest METAR information in a raw format for additional METARS within a parameter radius of one ICAO code.

The results are sorted based on the distance from the requested ICAO code.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao A single ICAO code required
radius The surrounding radius in miles from the parameter ICAO code required
Query Parameter Description
include Includes the base airport in the results optional
GET
/metar/{icao}/radius/{radius}
GET
/metar/{icao}/radius/{radius}/?include=1

Example request

$ curl 'https://api.checkwx.com/metar/kpie/radius/25' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 7,
  "data": [
      "KPIE 291353Z 33021G30KT 10SM BKN029 18\/12 A2984 RMK AO2 PK WND 32030\/1344 SLP103 T01780117",
      "KCLW 291435Z AUTO 32020G26KT 10SM BKN029 16\/10 A2985 RMK AO2",
      "KTPA 291353Z 32016G25KT 10SM SCT025 BKN032 17\/11 A2983 RMK AO2 SLP102 T01720106",
      "KSPG 291353Z 33011G25KT 10SM BKN033 18\/12 A2981 RMK AO2 SLP094 T01780117",
      "KMCF 291423Z AUTO 35018G24KT 10SM BKN030 18\/13 A2984 RMK AO2 SLP108 VISNO RWY22 $",
      "KTPF 291435Z AUTO 34009G21KT 295V355 10SM BKN030 17\/11 A2984 RMK AO2",
      "KVDF 291435Z AUTO 31013G25KT 10SM BKN028 17\/10 A2984 RMK AO2"
  ]
}

2.4 Lat/Lon

Returns the latest METAR information in a raw format for a single station closest to a parameter latitude/longitude.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
latitude The decimal latitude required
longitude The decimal longitude required
GET
/metar/lat/{latitude}/lon/{longitude}

Example request

$ curl 'https://api.checkwx.com/metar/lat/51.4706/lon/-1.461941 \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 1,
  "data": [
    "EGUB 012350Z 05002KT 7000 BR FEW250 01\/01 Q1015 WHT"
  ]
}

METAR Decoded

The following table lists the fields which are returned by the METAR decoded service.

If a field is marked as Conditional Yes, the field will not be returned if data does not exist for that field. Therefore your code should check for the existence of the field in the returned JSON before attempting to use it.

Field Type Description Conditional
icao string ICAO airport code or station indicator
name string Station name
observed string METAR created date and time
raw_text string Raw METAR text string
barometer.hg decimal Barometer in inches of mercury Yes
barometer.kpa decimal Barometer in kilopascals Yes
barometer.mb decimal Barometer in millibars Yes
ceiling.code string Ceiling abbreviation code Yes
ceiling.text string Ceiling English text Yes
ceiling.feet_agl decimal Ceiling feet above ground level Yes
ceiling.meters_agl decimal Ceiling meters above ground level Yes
clouds array Array of cloud levels each with the following properties Yes
clouds.code string Ceiling abbreviation code Yes
clouds.text string Ceiling English text Yes
clouds.base_feet_agl decimal Ceiling feet above ground level Yes
clouds.base_meters_agl decimal Ceiling meters above ground level Yes
conditions array Array of conditions each with the following properties Yes
conditions.code string Condition abbreviation code Yes
conditions.text string Condition English text Yes
dewpoint.celsius integer Dewpoint in celsius Yes
dewpoint.fahrenheit integer Dewpoint in fahrenheit Yes
elevation.feet integer Elevation in feet Yes
elevation.meters integer Elevation in meters Yes
flight_category string Flight rules category 'VFR', 'MVFR', 'IFR', 'LIFR' Yes
humidity_percent integer Humidity percentage Yes
rain_in integer Rainfall in inches Yes
snow_in integer Snowfall in inches Yes
temperature.celsius integer Temperature in celsius Yes
temperature.fahrenheit integer Temperature in fahrenheit Yes
visibility.miles string Visibility in miles (Expressed as a string to support values like '1/2 mile') Yes
visibility.meters string Visibility in meters (Expressed as a string to support values like '> 9000') Yes
wind.degrees integer Wind direction in degrees Yes
wind.speed_kts integer Wind speed in knots Yes
wind.speed_mph integer Wind speed in miles per hour Yes
wind.speed_mps integer Wind speed in meters per second Yes
wind.gust_kts integer Wind gust speed in knots Yes
wind.gust_mph integer Wind gust speed in miles per hour Yes
wind.gust_mps integer Wind gust speed in meters per second Yes

3.1 Single

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao A single ICAO code required
GET
/metar/{icao}/decoded

Example request

$ curl 'https://api.checkwx.com/metar/kpie/decoded' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 1,
  "data": [
    {
      "icao": "KPIE",
      "name": "St Pete-Clearwater International",
      "observed": "29-10-2017 @ 13:53Z",
      "raw_text": "KPIE 291353Z 33021G30KT 10SM BKN029 18\/12 A2984 RMK AO2 PK WND 32030\/1344 SLP103 T01780117",
      "barometer": {
        "hg": 29.84,
        "kpa": 101.05,
        "mb": 1010.3
      },
      "ceiling": {
        "code": "BKN",
        "text": "Broken",
        "feet_agl": 2900,
        "meters_agl": 883.92,
      },
      "clouds": [
        {
          "code": "BKN",
          "text": "Broken",
          "base_feet_agl": 2900,
          "base_meters_agl": 883.92,
        }
      ],
      "dewpoint": {
        "celsius": 12,
        "fahrenheit": 54
      },
      "elevation": {
        "feet": 13,
        "meters": 4
      },
      "flight_category": "MVFR",
      "humidity_percent": 68,
      "temperature": {
        "celsius": 18,
        "fahrenheit": 64
      },
      "visibility": {
        "miles": "10",
        "meters": "16,093"
      },
      "wind": {
        "degrees": 330,
        "speed_kts": 20,
        "speed_mph": 23,
        "speed_mps": 10,
        "gust_kts": 29,
        "gust_mph": 33,
        "gust_mps": 15
      }
    }
  ]
}

3.2 Multiple

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao1 , icao2 , icao3 Multiple ICAO codes separated with commas.
Maximum of 25 ICAO codes per API request.
required
GET
/metar/{icao1},{icao2},{icao3}..../decoded

Example request

$ curl 'https://api.checkwx.com/metar/kpie,kspg/decoded' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 2,
  "data": [
    {
      "icao": "KPIE",
      "name": "St Pete-Clearwater International",
      "observed": "29-10-2017 @ 13:53Z",
      "raw_text": "KPIE 291353Z 33021G30KT 10SM BKN029 18\/12 A2984 RMK AO2 PK WND 32030\/1344 SLP103 T01780117",
      "barometer": {
        "hg": 29.84,
        "kpa": 101.05,
        "mb": 1010.3
      },
      "ceiling": {
        "code": "BKN",
        "text": "Broken",        
        "feet_agl": 2900,
        "meters_agl": 883.92
      },
      "clouds": [
        {
          "code": "BKN",
          "text": "Broken",
          "base_feet_agl": 2900,
          "base_meters_agl": 883.92
        }
      ],
      "dewpoint": {
        "celsius": 12,
        "fahrenheit": 54
      },
      "elevation": {
        "feet": 13,
        "meters": 4
      },
      "flight_category": "MVFR",
      "humidity_percent": 68,
      "temperature": {
        "celsius": 18,
        "fahrenheit": 64
      },
      "visibility": {
        "miles": "10",
        "meters": "16,093"
      },
      "wind": {
        "degrees": 330,
        "speed_kts": 21,
        "speed_mph": 24,
        "speed_mps": 11,
        "gust_kts": 30,
        "gust_mph": 35,
        "gust_mps": 15
      }
    },
    {
      "icao": "KSPG",
      "name": "Albert Whitted",
      "observed": "29-10-2017 @ 13:53Z",
      "raw_text": "KSPG 291353Z 33011G25KT 10SM BKN033 18\/12 A2981 RMK AO2 SLP094 T01780117",
      "barometer": {
        "hg": 29.81,
        "kpa": 100.95,
        "mb": 1009.4
      },
      "ceiling": {
        "code": "BKN",
        "text": "Broken",
        "feet_agl": 3300,
        "meters_agl": 1005.84
      },
      "clouds": [
        {
          "code": "BKN",
          "text": "Broken",
          "base_feet_agl": 3300,
          "base_meters_agl": 1005.84
        }
      ],
      "dewpoint": {
        "celsius": 12,
        "fahrenheit": 54
      },
      "elevation": {
        "feet": 7,
        "meters": 2
      },
      "flight_category": "VFR",
      "humidity_percent": 68,
      "temperature": {
        "celsius": 18,
        "fahrenheit": 64
      },
      "visibility": {
        "miles": "10",
        "meters": "16,093"
      },
      "wind": {
        "degrees": 330,
        "speed_kts": 11,
        "speed_mph": 13,
        "speed_mps": 6,
        "gust_kts": 25,
        "gust_mph": 29,
        "gust_mps": 13
      }
    }
  ]
}

3.3 Radius

Returns the latest METAR information in a decoded format for additional METARS within a parameter radius of one ICAO code.

The results are sorted based on the distance from the requested ICAO code.

Additional data elements are included in the response data to show the distance and direction of additional stations from the requested ICAO code.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao A single ICAO code required
radius The surrounding radius in miles from the parameter ICAO code required
Query Parameter Description
include Includes the base airport in the results optional
GET
/metar/{icao}/radius/{radius}/decoded
GET
/metar/{icao}/radius/{radius}/decoded/?include=1

Example request

$ curl 'https://api.checkwx.com/metar/kpie/radius/10/decoded' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 2,
  "data": [
    {
      "icao": "KPIE",
      "name": "St Pete-Clearwater International",
      "observed": "29-10-2017 @ 15:00Z",
      "raw_text": "KPIE 291500Z 33020G29KT 10SM BKN031 18\/11 A2985 RMK AO2 PK WND 32029\/1456 T01830106",
      "barometer": {
        "hg": 29.85,
        "kpa": 101.08,
        "mb": 1011
      },
      "ceiling": {
        "code": "BKN",
        "text": "Broken",
        "feet_agl": 3100,
        "meters_agl": 944.88
      },
      "clouds": [
        {
          "code": "BKN",
          "text": "Broken",
          "base_feet_agl": 3100,
          "base_meters_agl": 944.88
        }
      ],
      "dewpoint": {
        "celsius": 11,
        "fahrenheit": 52
      },
      "elevation": {
        "feet": 13,
        "meters": 4
      },
      "flight_category": "VFR",
      "humidity_percent": 64,
      "temperature": {
        "celsius": 18,
        "fahrenheit": 64
      },
      "visibility": {
        "miles": "10",
        "meters": "16,093"
      },
      "wind": {
        "degrees": 330,
        "speed_kts": 20,
        "speed_mph": 23,
        "speed_mps": 10,
        "gust_kts": 29,
        "gust_mph": 33,
        "gust_mps": 15
      }
    },
    {
      "icao": "KCLW",
      "name": "Clearwater Air Park",
      "observed": "29-10-2017 @ 14:55Z",
      "raw_text": "KCLW 291455Z AUTO 33018G24KT 10SM BKN029 16\/09 A2985 RMK AO2",
      "barometer": {
        "hg": 29.85,
        "kpa": 101.08,
        "mb": 1011
      },
      "ceiling": {
        "code": "BKN",
        "text": "Broken",
        "feet_agl": 2900,
        "meters_agl": 883.92
      },
      "clouds": [
        {
          "cloud_code": "BKN",
          "cloud_text": "Broken",
          "base_feet_agl": 2900,
          "base_meters_agl": 883.92
        }
      ],
      "dewpoint": {
        "celsius": 9,
        "fahrenheit": 48
      },
      "elevation": {
        "feet": 72,
        "meters": 22
      },
      "flight_category": "MVFR",
      "humidity_percent": 63,
      "radius": {
        "from": "KPIE",
        "miles": 6.4,
        "meters": 10256.5,
        "direction": "317",
        "compass": "NW"
      },
      "temperature": {
        "celsius": 16,
        "fahrenheit": 61
      },
      "visibility": {
        "miles": "10",
        "meters": "16,093"
      },
      "wind": {
        "degrees": 330,
        "speed_kts": 18,
        "speed_mph": 21,
        "speed_mps": 9,
        "gust_kts": 24,
        "gust_mph": 28,
        "gust_mps": 12
      }
    }
  ]
}

3.4 Lat/Lon

Returns the latest METAR information in a decoded format for a single station closest to a parameter latitude/longitude.

Additional data elements are included in the response data to show the distance and direction from the requested latitude/longitude.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
latitude The decimal latitude required
longitude The decimal longitude required
GET
/metar/lat/{latitude}/lon/{longitude}/decoded

Example request

$ curl 'https://api.checkwx.com/metar/lat/51.4706/lon/-1.461941/decoded \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 1,
  "data": [
    {
      "icao": "EGUB",
      "name": "RAF Benson",
      "observed": "01-11-2017 @ 23:50Z",
      "raw_text": "EGUB 012350Z 05002KT 7000 BR FEW250 01\/01 Q1015 WHT",
      "barometer": {
        "hg": 29.97,
        "kpa": 101.49,
        "mb": 1015
      },
      "clouds": [
        {
          "code": "FEW",
          "text": "Few",
          "base_feet_agl": 25000,
          "base_meters_agl": 7620
        }
      ],
      "conditions": [
        {
          "code": "BR",
          "text": "Mist"
        }
      ],
      "dewpoint": {
        "celsius": 1,
        "fahrenheit": 34
      },
      "elevation": {
        "feet": 207,
        "meters": 63
      },
      "flight_category": "MVFR",
      "humidity_percent": 100,
      "temperature": {
        "celsius": 1,
        "fahrenheit": 34
      },
      "visibility": {
        "miles": "41\/35",
        "meters": "7,001"
      },
      "wind": {
        "degrees": 50,
        "speed_kts": 2,
        "speed_mph": 2,
        "speed_mps": 1
      }
    }
  ]
}

METAR Unavailable

In the event that a METAR is currently unavailable for a parameter ICAO code, the following data message is returned.

Unfortunately we cannot list the exact reason a METAR is unavailable or provide a time when it will become available again.

Example response

{
  "results": 1,
  "data": [
    "KW44 METAR Currently Unavailable"
  ]
}

TAF

TAF is a format for reporting weather information. A TAF weather report is predominantly used by pilots in fulfillment of a part of a pre-flight weather briefing, and by meteorologists, who use aggregated TAF information to assist in weather forecasting.

TAFs typically come from airports or permanent weather observation stations. Reports are generated once an hour or half-hour, but if conditions change significantly, a report known as a special (SPECI) may be issued. Some TAFs are encoded by automated airport weather stations located at airports, military bases, and other sites. Some locations still use augmented observations, which are recorded by digital sensors, encoded via software, and then reviewed by certified weather observers or forecasters prior to being transmitted. Observations may also be taken by trained observers or forecasters who manually observe and encode their observations prior to transmission.

  • Our raw TAF is the most common format in the world for the transmission of observational weather data. It is highly standardized through the International Civil Aviation Organization (ICAO), which allows it to be understood throughout most of the world.

  • Our decoded TAF decodes the raw TAF and creates keys and values for each part in a TAF. We also include additional information and measurement conversions for you.

TAF Raw

4.1 Single

Returns the latest TAF information in a raw format for a single ICAO code.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao A single ICAO code required
GET
/taf/{icao}

Example request

$ curl 'https://api.checkwx.com/taf/kpie' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 1,
  "data": [
    "KPIE 292322Z 3000\/3024 32011G19KT P6SM SKC FM300300 01008KT P6SM FEW250 FM301600 35008KT P6SM SKC"
  ]
}

4.2 Multiple

Returns the latest TAF information in a raw format for multiple ICAO codes.

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao1 , icao2 , icao3 Multiple ICAO codes separated with commas.
Maximum of 25 ICAO codes per API request.
required
GET
/taf/{icao1},{icao2},{icao3}....

Example request

$ curl 'https://api.checkwx.com/taf/kpie,klal' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 2,
  "data": [
    "KPIE 292322Z 3000\/3024 32011G19KT P6SM SKC FM300300 01008KT P6SM FEW250 FM301600 35008KT P6SM SKC",
    "KLAL 292322Z 3000\/3024 32008G18KT P6SM SKC FM300200 36008KT P6SM SKC FM300500 01004KT P6SM SKC FM301600 34009KT P6SM SKC AMD NOT SKED 3002\/3011"
  ]
}

TAF Decoded

5.1 Single

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao A single ICAO code required
GET
/taf/{icao}/decoded

Example request

$ curl 'https://api.checkwx.com/taf/kpie/decoded' \
    -H 'X-API-Key: {key}'

Example response

{
  "results": 1,
  "data": [
    {
      "icao": "KPIE",
      "timestamp": {
        "issued": "29-10-2017 @ 23:22Z",
        "bulletin": "29-10-2017 @ 23:22Z",
        "valid_from": "30-10-2017 @ 00:00Z",
        "valid_to": "31-10-2017 @ 00:00Z"
      },
      "raw_text": "KPIE 292322Z 3000\/3024 32011G19KT P6SM SKC FM300300 01008KT P6SM FEW250 FM301600 35008KT P6SM SKC",
      "forecast": [
        {
          "timestamp": {
            "forecast_from": "30-10-2017 @ 00:00Z",
            "forecast_to": "30-10-2017 @ 03:00Z"
          },
          "clouds": [
            {
              "code": "SKC",
              "text": "Clear skies",
              "base_feet_agl": 0,
              "base_meters_agl": 0
            }
          ],
          "visibility": {
            "miles": "Greater than 6",
            "meters": "10,000+"
          },
          "wind": {
            "degrees": 320,
            "speed_kts": 11,
            "speed_mph": 13,
            "speed_mps": 6,
            "gust_kts": 19,
            "gust_mph": 22,
            "gust_mps": 10
          },
        },
        {
          "timestamp": {
            "forecast_from": "30-10-2017 @ 03:00Z",
            "forecast_to": "30-10-2017 @ 16:00Z"
          },
          "change_indicator": "From",
          "clouds": [
            {
              "code": "FEW",
              "text": "Few",
              "base_feet_agl": 25000,
              "base_meters_agl": 7620
            }
          ],
          "visibility": {
            "miles": "Greater than 6",
            "meters": "10,000+"
          },
          "wind": {
            "degrees": 10,
            "speed_kts": 8,
            "speed_mph": 9,
            "speed_mps": 4
          }
        },
        {
          "timestamp": {
            "forecast_from": "30-10-2017 @ 16:00Z",
            "forecast_to": "31-10-2017 @ 00:00Z"
          },
          "change_indicator": "From",
          "clouds": [
            {
              "code": "SKC",
              "text": "Clear skies",
              "base_feet_agl": 0,
              "base_meters_agl": 0
            }
          ],
          "visibility": {
            "miles": "Greater than 6",
            "meters": "10,000+"
          },
          "wind": {
            "degrees": 350,
            "speed_kts": 8,
            "speed_mph": 9,
            "speed_mps": 4
          }
        }
      ]
    }
  ]
}

5.2 Multiple

Header Parameter Description
X-API-Key Your unique API key required
Accept Accepted response data type:
application/json default
application/xml
optional
URL Parameter Description
icao1 , icao2 , icao3 Multiple ICAO codes separated with commas.
Maximum of 25 ICAO codes per API request.
required
GET
/taf/{icao1},{icao2},{icao3}..../decoded

Example request

$ curl 'https://api.checkwx.com/taf/kpie,klal/decoded'
    -H 'X-API-Key: {key}'

Example response

{
  "results": 2,
  "data": [
    {
      "icao": "KPIE",
      "timestamp": {
        "issued": "29-10-2017 @ 23:22Z",
        "bulletin": "29-10-2017 @ 23:22Z",
        "valid_from": "30-10-2017 @ 00:00Z",
        "valid_to": "31-10-2017 @ 00:00Z"
      },
      "raw_text": "KPIE 292322Z 3000\/3024 32011G19KT P6SM SKC FM300300 01008KT P6SM FEW250 FM301600 35008KT P6SM SKC",
      "forecast": [
        {
          "timestamp": {
            "forecast_from": "30-10-2017 @ 00:00Z",
            "forecast_to": "30-10-2017 @ 03:00Z"
          },
          "clouds": [
            {
              "code": "SKC",
              "text": "Clear skies",
              "base_feet_agl": 0,
              "base_meters_agl": 0
            }
          ],
          "visibility": {
            "miles": "Greater than 6",
            "meters": "10,000+"
          },
          "wind": {
            "degrees": 320,
            "speed_kts": 11,
            "speed_mph": 13,
            "speed_mps": 6,
            "gust_kts": 19,
            "gust_mph": 22,
            "gust_mps": 10
          },
        },
        {
          "timestamp": {
            "forecast_from": "30-10-2017 @ 03:00Z",
            "forecast_to": "30-10-2017 @ 16:00Z"
          },
          "change_indicator": "From",
          "clouds": [
            {
              "code": "FEW",
              "text": "Few",
              "base_feet_agl": 25000,
              "base_meters_agl": 7620
            }
          ],
          "visibility": {
            "miles": "Greater than 6",
            "meters": "10,000+"
          },
          "wind": {
            "degrees": 10,
            "speed_kts": 8,
            "speed_mph": 9,
            "speed_mps": 4
          }
        },
        {
          "timestamp": {
            "forecast_from": "30-10-2017 @ 16:00Z",
            "forecast_to": "31-10-2017 @ 00:00Z"
          },
          "change_indicator": "From",
          "clouds": [
            {
              "code": "SKC",
              "text": "Clear skies",
              "base_feet_agl": 0,
              "base_meters_agl": 0
            }
          ],
          "visibility": {
            "miles": "Greater than 6",
            "meters": "10,000+"
          },
          "wind": {
            "degrees": 350,
            "speed_kts": 8,
            "speed_mph": 9,
            "speed_mps": 4
          }
        }
      ]
    },
    {
      "icao": "KLAL",
      "timestamp": {
        "issued": "29-10-2017 @ 23:22Z",
        "bulletin": "29-10-2017 @ 23:22Z",
        "valid_from": "30-10-2017 @ 00:00Z",
        "valid_to": "31-10-2017 @ 00:00Z"
      },
      "raw_text": "KLAL 292322Z 3000\/3024 32008G18KT P6SM SKC FM300200 36008KT P6SM SKC FM300500 01004KT P6SM SKC FM301600 34009KT P6SM SKC AMD NOT SKED 3002\/3011",
      "forecast": [
        {
          "timestamp": {
            "forecast_from": "30-10-2017 @ 00:00Z",
            "forecast_to": "30-10-2017 @ 02:00Z"
          },
          "clouds": [
            {
              "code": "SKC",
              "text": "Clear skies",
              "base_feet_agl": 0,
              "base_meters_agl": 0
            }
          ],
          "visibility": {
            "miles": "Greater than 6",
            "meters": "10,000+"
          },
          "wind": {
            "degrees": 320,
            "speed_kts": 8,
            "speed_mph": 9,
            "speed_mps": 4,
            "gust_kts": 18,
            "gust_mph": 21,
            "gust_mps": 9
          },
        },
        {
          "timestamp": {
            "forecast_from": "30-10-2017 @ 02:00Z",
            "forecast_to": "30-10-2017 @ 05:00Z"
          },
          "change_indicator": "From",
          "clouds": [
            {
              "code": "SKC",
              "text": "Clear skies",
              "base_feet_agl": 0,
              "base_meters_agl": 0
            }
          ],
          "visibility": {
            "miles": "Greater than 6",
            "meters": "10,000+"
          },
          "wind": {
            "degrees": 360,
            "speed_kts": 8,
            "speed_mph": 9,
            "speed_mps": 4
          }
        },
        {
          "timestamp": {
            "forecast_from": "30-10-2017 @ 05:00Z",
            "forecast_to": "30-10-2017 @ 16:00Z"
          },
          "change_indicator": "From",
          "clouds": [
            {
              "code": "SKC",
              "text": "Clear skies",
              "base_feet_agl": 0,
              "base_meters_agl": 0
            }
          ],
          "visibility": {
            "miles": "Greater than 6",
            "meters": "10,000+"
          },
          "wind": {
            "degrees": 10,
            "speed_kts": 4,
            "speed_mph": 5,
            "speed_mps": 2
          }
        },
        {
          "timestamp": {
            "forecast_from": "30-10-2017 @ 16:00Z",
            "forecast_to": "31-10-2017 @ 00:00Z"
          },
          "change_indicator": "From",
          "clouds": [
            {
              "code": "SKC",
              "text": "Clear skies",
              "base_feet_agl": 0,
              "base_meters_agl": 0
            }
          ],
          "visibility": {
            "miles": "Greater than 6",
            "meters": "10,000+"
          },
          "wind": {
            "degrees": 340,
            "speed_kts": 9,
            "speed_mph": 10,
            "speed_mps": 5
          }
        }
      ]
    }
  ]
}

TAF Unavailable

In the event that a TAF is currently unavailable for a given ICAO code, the following data message is returned.

Unfortunately we cannot list the exact reason a TAF is unavailable or provide a time when it will become available again.

Example response

{
  "results": 1,
  "data": [
    "KW44 TAF Currently Unavailable"
  ]
}

Changelog

10/31/2017

10/25/2017

10/20/2017

Support

To start, we recommend reviewing the errors section in this guide and method-specific errors for the endpoint you’re trying to access. If you are receiving a 5xx error, that likely means there’s an error on our servers.

Limited API help is available via email apihelp@checkwx.com.

Show examples in: