Introduction

The CheckWX Aviation Weather API allows for programmatic access to CheckWX.com's data and endpoints. 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 access the API.

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 API, 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 endpoint.

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.meters integer Elevation in meters 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.position 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 signed integer Timezone offset subtracted or added to GMT time
timezone.dst signed 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: api key'

Example response

{
  "results": 1,
    "data": [
        {
            "icao": "KRDU",
            "name": "Raleigh-Durham International",
            "activated": "04\/1943",
            "city": "Raleigh\/Durham",
            "country": "US",
            "elevation": {
                "feet": 435,
                "meters": 132.588,
                "method": "Surveyed"
            },
            "iata": "RDU",
            "latitude": {
                "decimal": 35.877639,
                "degrees": "35° 52' 39\" N"
            },
            "longitude": {
                "decimal": -78.787472,
                "degrees": "78° 47' 14\" W"
            },
            "magnetic_variation": {
                "position": "09W",
                "year": 2020
            },
            "sectional": "CHARLOTTE",
            "state": "NC",
            "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: api 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: api 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: api 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: api 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.6 Timestamp

Returns the latest Station timestamp information for a single or multiple ICAO code(s).

  • The timezone ID and offsets to GMT/DST
  • The current time in both station local timezone and UTC formats.
  • The sunrise/sunset times in both station local timezome and UTC formats.
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 A Single or Multiple ICAO code(s) separated with commas.
Maximum of 25 ICAO codes per API request.
required

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

Field Type Description Conditional
icao string ICAO airport code or station indicator
name string Station name
timezone.gmt signed integer Timezone offset subtracted or added to GMT time
timezone.dst signed integer Timezone offset subtracted or added to GMT time including DST
timezone.tzid string Timezone text string
timestamp.local.date string Date local YYYY-MM-DD
timestamp.local.time string Time local HH:MM
timestamp.utc.date string Date local YYYY-MM-DD
timestamp.utc.time string Time local HH:MM
suntimes.local.sun_rise string Sunrise local HH:MM
suntimes.local.sun_set string Sunset local HH:MM
suntimes.local.civil_dawn string Civil dawn local HH:MM
suntimes.local.civil_dusk string Civil dusk local HH:MM
suntimes.utc.sun_rise string Sunrise GMT HH:MM
suntimes.utc.sun_set string Sunset GMT HH:MM
suntimes.utc.civil_dawn string Civil dawn GMT HH:MM
suntimes.utc.civil_dusk string Civil dusk GMT HH:MM
GET
/station/{icao1},{icao2},{icao3}/timestamp

Example request

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

Example response

{
  "results": 1,
    "data": [
        {
            "icao": "KRDU",
            "name": "Raleigh-Durham International",
            "timezone": {
                "gmt": -5,
                "dst": -4,
                "tzid": "America\/New_York"
            },
            "timestamp": {
                "local": {
                    "date": "2018-08-21",
                    "time": "11:41"
                },
                "utc": {
                    "date": "2018-08-21",
                    "time": "15:41"
                }
            },
            "suntimes": {
                "local": {
                    "sun_rise": "06:42",
                    "sun_set": "19:53",
                    "civil_dawn": "06:11",
                    "civil_dusk": "20:24"
                },
                "utc": {
                    "sun_rise": "10:42",
                    "sun_set": "23:53",
                    "civil_dawn": "10:11",
                    "civil_dusk": "00:24"
                }
            }
        }
    ]
}

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: api 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: api 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: api 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: api key'

Example response

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

METAR Decoded

METAR Fields

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

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: api 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: api 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: api 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: api 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: api 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: api 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

TAF Fields

The following table lists the fields which are returned by the TAF decoded endpoint.

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.

  • The TAF field table is currently being updated...Please try again later.

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: api 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: api 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"
  ]
}

.NET Wrapper

Nathanael Nordentoft has written a public .NET/C# wrapper which can be used to interact with the CheckWX API.

The wrapper is written to give users three ways of communicating with the API.

  1. The RAW JSON services which will deliver the raw JSON response and HTTP status code from the API.
  2. The RAW XML services which will deliver the raw XML response and HTTP status code from the API.
  3. The .NET object services which will deserialize and deliver domain objects from the delivered JSON

Changelog

8/21/2018

8/19/2018

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: