Catalog / Aviation Weather Center

Aviation Weather Center API

aviationweather.gov

Read-only live METAR observations from AviationWeather.gov by one or more ICAO station identifiers. The API provides latest observations and recent source history with raw reports, structured weather fields, explicit units and UTC timestamp meanings; valid stations without reports, invalid station identifiers, and upstream failures are distinguished.

  • weather
  • aviation
  • METAR
  • observations
  • ICAO
2 endpointsDocs updated

Endpoint health

Loading verification…

Connect your agent

Connect through MCP so your agent can find this API, read its docs, and call its endpoints.

Setup guide

Add the server from your terminal.

Claude Code · terminal
claude mcp add --transport http agent-data https://agent-data.motie.dev/mcp

In Claude Code, run /mcp, select agent-data, then Authenticate. Sign in to your agent-data account in the browser.

Then ask your agent to use the Aviation Weather Center API for your task.

Call it over HTTP

Get an API key

Sign up free, generate an API key, and set it as AGENT_DATA_API_KEY in your environment. Your first 100 calls each month are free.

Fetches the current/latest METAR observation for each valid requested station. A valid station with no current report appears in missing_observations; an identifier absent from source station metadata appears in invalid_stations.

Comma-separated ICAO station identifiers, one to 20 values.

View call pricing
cURL · Metars latest
curl --request GET --get 'https://api.agent-data.dev/aviationweather-gov/v1/metars/latest' \
  --header "Authorization: Bearer $AGENT_DATA_API_KEY" \
  --data-urlencode 'ids=KJFK'

Endpoints

Inputs and response fields for every endpoint in this API.

GETMetars latest/v1/metars/latest

Fetches the current/latest METAR observation for each valid requested station. A valid station with no current report appears in missing_observations; an identifier absent from source station metadata appears in invalid_stations.

Input

idsRequiredQuery · string

Comma-separated ICAO station identifiers, one to 20 values.

Example: KJFK

Response

dataobject[]
data[].windobject
data[].wind.gust_knots?integer | null
data[].wind.speed_knots?integer | null
data[].wind.direction_degrees?integer | null
data[].clouds?object[]
data[].clouds[].coverstring
data[].clouds[].base_feet?integer | null
data[].stationobject
data[].station.namestring
data[].station.state?string | null
data[].station.country?string | null
data[].station.iata_id?string | null
data[].station.icao_idstring
data[].station.elevation_m?number | null
data[].station.latitude_deg?number | null
data[].station.longitude_deg?number | null
data[].raw_metarstring
data[].metar_typestring
data[].visibility?string | null
data[].dew_point_c?number | null
data[].report_time?string (date-time) | null
data[].altimeter_hpa?number | null
data[].received_time?string (date-time) | null
data[].temperature_c?number | null
data[].flight_category?string | null
data[].observation_timestring (date-time)
data[].sea_level_pressure_hpa?number | null
data[].observation_epoch_secondsinteger
hoursinteger | null
sourceobject
source.namestring
source.endpointstring
source.freshnessstring
source.retrieved_atstring (date-time)
requested_idsstring[]
invalid_stationsstring[]
missing_observationsstring[]
units_and_timestampsobject
units_and_timestamps.windstring
units_and_timestamps.cloudsstring
units_and_timestamps.pressurestring
units_and_timestamps.elevationstring
units_and_timestamps.timestampsstring
units_and_timestamps.visibilitystring
units_and_timestamps.temperaturestring

Fields marked ? are optional.

GETMetars history/v1/metars/history

Fetches all source METAR reports available within the requested 1–24 hour window. The source controls the actual available history; this API does not fabricate gaps or paginate beyond that source window.

Input

idsRequiredQuery · string

Comma-separated ICAO station identifiers, one to 20 values.

Example: KJFK

hoursOptionalQuery · integer, min: 1, max: 24, default: 6

Recent history window in hours, bounded to 1 through 24.

Example: 6

Response

dataobject[]
data[].windobject
data[].wind.gust_knots?integer | null
data[].wind.speed_knots?integer | null
data[].wind.direction_degrees?integer | null
data[].clouds?object[]
data[].clouds[].coverstring
data[].clouds[].base_feet?integer | null
data[].stationobject
data[].station.namestring
data[].station.state?string | null
data[].station.country?string | null
data[].station.iata_id?string | null
data[].station.icao_idstring
data[].station.elevation_m?number | null
data[].station.latitude_deg?number | null
data[].station.longitude_deg?number | null
data[].raw_metarstring
data[].metar_typestring
data[].visibility?string | null
data[].dew_point_c?number | null
data[].report_time?string (date-time) | null
data[].altimeter_hpa?number | null
data[].received_time?string (date-time) | null
data[].temperature_c?number | null
data[].flight_category?string | null
data[].observation_timestring (date-time)
data[].sea_level_pressure_hpa?number | null
data[].observation_epoch_secondsinteger
hoursinteger | null
sourceobject
source.namestring
source.endpointstring
source.freshnessstring
source.retrieved_atstring (date-time)
requested_idsstring[]
invalid_stationsstring[]
missing_observationsstring[]
units_and_timestampsobject
units_and_timestamps.windstring
units_and_timestamps.cloudsstring
units_and_timestamps.pressurestring
units_and_timestamps.elevationstring
units_and_timestamps.timestampsstring
units_and_timestamps.visibilitystring
units_and_timestamps.temperaturestring

Fields marked ? are optional.

Don’t see the endpoint you need?

Ask agent-data to add an endpoint or return more fields. Extensions are free and keep existing endpoints working.