wunderground APIwunderground.com ↗
Access real-time PWS observations, 7-day forecasts, and airport historical data from Weather Underground. 10 endpoints covering stations worldwide.
What is the wunderground API?
The Weather Underground API exposes 10 endpoints covering current conditions from personal weather stations, multi-day forecasts, and historical airport observations dating back across configurable date ranges. The get_current_weather endpoint returns live readings — temperature, humidity, wind, UV index, barometric pressure, and precipitation — for any PWS station ID. The search endpoint lets you resolve location names to PWS IDs and ICAO codes used throughout the API.
curl -X GET 'https://api.parse.bot/scraper/4645f09c-8fa2-4177-b560-e0c577209ea0/get_current_weather?units=m&station_id=ILONDO440' \ -H 'X-API-Key: $PARSE_API_KEY'
Get current weather conditions for a PWS station. Returns the most recent observation including temperature, humidity, wind speed/direction, solar radiation, pressure, precipitation, and UV index. The station_id should be a PWS ID (e.g. ILONDO440) obtainable from the search endpoint's pwsId field.
| Param | Type | Description |
|---|---|---|
| units | string | Unit system: 'm' for metric, 'e' for english/imperial. |
| station_idrequired | string | PWS Station ID (e.g. ILONDO440). Obtain from search endpoint's pwsId field. |
{
"type": "object",
"fields": {
"uv": "number or null, UV index",
"lat": "number, station latitude",
"lon": "number, station longitude",
"temp": "number, temperature in selected units",
"time": "string, local observation time",
"humidity": "integer, relative humidity percentage",
"pressure": "number, barometric pressure",
"wind_dir": "string, cardinal wind direction",
"station_id": "string, the PWS station identifier",
"wind_speed": "number, wind speed in selected units",
"precip_rate": "number, precipitation rate",
"precip_total": "number, total precipitation",
"solar_radiation": "number or null, solar radiation in W/m²"
},
"sample": {
"data": {
"uv": 6,
"lat": 51.511337,
"lon": -0.127,
"temp": 13,
"time": "2026-06-10 10:27:28",
"humidity": 56,
"pressure": 1015.34,
"wind_dir": "WNW",
"station_id": "ILONDO440",
"wind_speed": 4,
"precip_rate": 0,
"precip_total": 0,
"solar_radiation": 624.2
},
"status": "success"
}
}About the wunderground API
Station Search and Current Conditions
Start with the search endpoint, which accepts a plain-text query (city name, airport name, or keyword) and returns parallel arrays of matching locations including icaoCode, pwsId, latitude, longitude, countryCode, and placeId. Feed a pwsId into get_current_weather to retrieve the most recent observation: temp, humidity, wind_speed, wind_dir, pressure, uv, and station_id, with an optional units parameter accepting 'm' (metric) or 'e' (imperial). The search_nearby_stations endpoint extends discovery by accepting lat/lon coordinates or existing station IDs and returning all stations within a configurable radius_km, optionally filtered to station_type: 'official'.
Forecasts and PWS Hourly History
The get_forecast endpoint takes lat and lon and returns two forecast objects: a daily object covering 7 days (with calendarDayTemperatureMax, calendarDayTemperatureMin, dayOfWeek, narrative, and daypart breakdowns) and an hourly object covering 48 hours (with temperature, precipChance, windSpeed, windDirectionCardinal, and wxPhraseLong). For PWS stations specifically, get_pws_hourly_history returns the last 7 days of hourly observations including solarRadiationHigh, humidityAvg, winddirAvg, dewpoint, and precipitation totals, with metric sub-objects per observation.
Airport Historical Data
Three endpoints target airport stations by ICAO code. get_historical_airport accepts a start_date and end_date in YYYYMMDD format and returns enriched hourly observations — each with observed_at_utc, observed_at_local, timezone_name, utc_offset, temp, and temp_unit — plus a daily_summary, response_metadata (including row_count and missing_hour_count), and a data_source_note. get_monthly_observations is a convenience wrapper that queries an entire calendar month by year and month integers, returning the same format. get_historical_airport_daily_maxima narrows the output to compact per-day records with max_temp_c, max_observed_at_utc, and observation_count, grouped by local calendar date using an IANA timezone_name parameter to handle DST transitions correctly.
Temperature Series and Batch Polling
get_historical_airport_temperature_series targets year-scale analysis: it accepts up to 366 days, deduplicates observations by valid_time_gmt, and returns the full intraday observation path alongside per-day daily_maxima and a request_metadata.complete boolean indicating whether the series has gaps. For multi-station monitoring, get_airport_temperature_updates_batch accepts a JSON array of station objects and since_utc / through_utc ISO-8601 bounds, returning only new rows since the last poll. The response includes a next_cursor_utc field equal to retrieved_at, enabling incremental polling without overlap or duplication.
The wunderground API is a managed, monitored endpoint for wunderground.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when wunderground.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official wunderground.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor hyperlocal conditions from a specific personal weather station using
get_current_weatherwith a PWS ID - Build a 7-day forecast widget by feeding
get_forecastlat/lon coordinates and rendering thedaypartnarrative breakdowns - Audit historical airport temperature records for a date range using
get_historical_airportand themissing_hour_countfield - Calculate daily temperature maxima for climate or energy settlement analysis with
get_historical_airport_daily_maximaand IANA timezone grouping - Discover all PWS and official stations within a radius of a project site using
search_nearby_stationswith aradius_kmfilter - Incrementally ingest live airport temperature data across multiple global stations using
get_airport_temperature_updates_batchwith cursor-based polling - Compile full monthly observation archives for an airport station by year and month via
get_monthly_observations
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Weather Underground have an official developer API?+
What does the `search` endpoint actually return, and how do I use its output?+
search endpoint returns a location object containing parallel arrays — every index corresponds to one matching location. Key fields include icaoCode (for airport endpoints), pwsId (for PWS endpoints), latitude, longitude, countryCode, and type. Use the icaoCode value as the station_id input to get_historical_airport, and the pwsId as station_id for get_current_weather and get_pws_hourly_history.How far back does the historical airport data go, and are there data quality caveats?+
get_historical_airport and related endpoints accept arbitrary start and end dates in YYYYMMDD format, but actual data availability depends on the station's archive depth. All airport history responses include a data_source_note field marked UNVERIFIED_TWC_AIRPORT_HISTORY_PROXY, and the response_metadata object exposes missing_hour_count and a warnings array so you can detect gaps before relying on a series for analysis.Does the API return weather alerts or severe weather warnings?+
Is PWS historical data available beyond 7 days?+
get_pws_hourly_history returns the last 7 days of hourly observations for a given PWS station ID. Longer PWS archives are not covered by the current endpoints. You can fork this API on Parse and revise it to add extended PWS history if that data becomes accessible.