Skip to content

Observations

Returns METAR and SPECI weather observations from 20 NWS stations across the US. Data includes temperature, dewpoint, wind, pressure, visibility, sky cover, and raw METAR text.

GET /api/v1/observations

NameTypeRequiredDescription
stationstringNoStation code (e.g., NYC, LAX, ORD)
fromstringNoStart time (RFC3339). Default: 24h ago
tostringNoEnd time (RFC3339). Default: now
resolutionstringNohourly (default) or 1min (1-minute ASOS OMO data)
typestringNoFilter by type: METAR or SPECI
unitsstringNoraw (default), metric, or imperial
tzstringNoUTC (default), station, or IANA name
formatstringNoOutput format: json (default), csv, parquet, ndjson
columnsstringNoComma-separated column names to include (e.g., close,volume)
limitintegerNoMax results (default 1000)
offsetintegerNoPagination offset
FieldRawMetricImperial
Temperature°F°C°F
Wind speedknotsm/smph
Pressure (altimeter)inHghPainHg
Visibilitymileskmmiles
Precipitationinchesmminches
Snow depthinchesmminches
Terminal window
curl "https://api.mostlyright.xyz/api/v1/observations?station=NYC&units=metric&limit=2"
from therminal.weather import WeatherHistory
weather = WeatherHistory()
obs = weather.observations(station="NYC", units="metric", limit=2, as_dataframe=True)
[
{
"station_code": "NYC",
"observed_at": "2026-03-20T15:51:00Z",
"observation_type": "METAR",
"source": "awc",
"temp_f": 10.61,
"dewpoint_f": 0,
"wind_speed_kt": 2,
"altimeter_inhg": 1017.09,
"visibility_miles": 16.09,
"sky_cover_1": "CLR",
"raw_metar": "METAR KNYC 201551Z AUTO VRB04KT 10SM CLR 11/00 A3007 RMK AO2 SLP173 ..."
}
]

Add resolution=1min to get 1-minute ASOS observations from NCEI. Available for 19 of 20 stations (NYC/KNYC excluded — Central Park is not an airport ASOS site). Coverage: 2000–2026, ~166M records.

Important differences from hourly:

  • ?units= is rejected with HTTP 400 — temperatures are always integer °C
  • ?type=METAR|SPECI is silently ignored (OMO data is not METAR/SPECI)
  • ?format=csv|parquet and ?columns= work normally
Terminal window
curl "https://api.mostlyright.xyz/api/v1/observations?station=LAX&resolution=1min&limit=2"
from therminal.weather import WeatherHistory
weather = WeatherHistory()
obs = weather.observations(station="LAX", resolution="1min", limit=2, as_dataframe=True)
from therminal.weather import WeatherLive
live = WeatherLive()
current = live.current("NYC") # Real-time from AWC, same Observation schema
[
{
"station_code": "LAX",
"observed_at": "2026-03-20T15:51:00Z",
"temp_c": 18,
"dewpoint_c": 12,
"pressure1_inhg": 29.92,
"pressure2_inhg": 29.91,
"pressure3_inhg": 29.90,
"precip_type": "",
"precip_in": 0.00
}
]
GET /api/v1/observations
Click "Send →" to try it live

Live observations from AWC (5-second polling). Historical from IEM and NOAA ISD. 1-minute ASOS data from NCEI (DSI-6406). See Data Sources for full details.