# pilotwx > Current aviation weather (METAR observations and TAF forecasts) for any airport, in plain text or JSON at predictable URLs. Data is fetched live from the AviationWeather.gov Data API (NOAA/NWS Aviation Weather Center) and cached for at most 2 minutes. Not for navigation: data may be delayed or incomplete, and pilots must get an official briefing (1800wxbrief.com) before flight. ## How to request weather Put one or more airport IDs in the path, separated by commas. ICAO IDs (KEZF, PANC, EGLL) and US FAA 3-character IDs (EZF, ANC, 1L8) both work. Up to 20 airports per request. Non-canonical addresses (lowercase, FAA IDs, spaces) redirect to the canonical one. - [Plain text, best for reading](https://pilotwx.opsfloor.org/KEZF,KDCA.txt): `https://pilotwx.opsfloor.org/{IDS}.txt` - [JSON, best for parsing](https://pilotwx.opsfloor.org/KEZF,KDCA.json): `https://pilotwx.opsfloor.org/{IDS}.json` - [HTML page for people](https://pilotwx.opsfloor.org/KEZF,KDCA): `https://pilotwx.opsfloor.org/{IDS}` - [Airport directory](https://pilotwx.opsfloor.org/airports): links to every station, grouped by the first two letters of the ICAO ID (`/airports/{XX}`) ## If you cannot open an address you built Some browsing tools only open addresses the user typed or links found on pages already opened. In that case, follow links from the home page instead of building a URL: 1. Open https://pilotwx.opsfloor.org/ (or the directory at https://pilotwx.opsfloor.org/airports). 2. Follow the link for the first two letters of the airport's ICAO ID, for example "KN" for KNKX. US airports start with K, Alaska PA, Hawaii PH, Canada C. 3. Follow the airport's link (the HTML page) or its "text" link. Repeat for each airport the user asked about. ## What each response contains For each airport: the raw METAR exactly as issued, its observation time, its age in minutes, the flight category (VFR, MVFR, IFR, LIFR), and a decoded summary (wind, visibility, weather, clouds, ceiling, temperature and dewpoint, altimeter). Then the raw TAF with its issue time and valid period. The response also gives the time it was fetched. ## Rules for reporting this data - Always quote the raw METAR and TAF, and state the observation or issue time in UTC (Z). - Check the age. A METAR marked STALE (older than 90 minutes) or a TAF marked EXPIRED is not current; say so. - `unknown-station` means no weather station has that ID. `no-recent-reports` means the station exists but has no current report. Do not guess weather for either. - Many small airports have a METAR but no TAF. Say that no TAF exists rather than substituting another airport's forecast unless the user asks. - Wind directions are true, not magnetic. Cloud bases and ceilings are feet above ground level. ## JSON fields `fetchedAt` (ISO 8601 UTC), `disclaimer`, and `stations[]`, each with `id`, `name`, `status` (`ok`, `no-recent-reports`, `unknown-station`), `metar` (`raw`, `type`, `observedAt`, `ageMinutes`, `stale`, `flightCategory`, `wind{directionDeg, variable, speedKt, gustKt}`, `visibilitySm`, `weather`, `clouds[{cover, baseFt}]`, `ceilingFt`, `temperatureC`, `dewpointC`, `altimeterInHg`, `altimeterHpa`) and `taf` (`raw`, `issuedAt`, `validFrom`, `validTo`, `expired`). Missing values are `null`. `visibilitySm` is a number or a string such as `"10+"`. ## Not yet available NOTAMs, PIREPs, SIGMETs and G-AIRMETs, winds aloft, and route briefings. Do not claim this site has them.