Weather Underground Forecast API
Weather forecasts based on PWS location
Weather forecasts based on PWS location
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/wunderground-forecast-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Weather Underground PWS Forecast API
description: 'REST API for Personal Weather Station (PWS) data provided by Weather Underground (hosted at api.weather.com). Provides current conditions, daily summaries, hourly and daily historical records, 5-day forecasts, and station location lookup. Access requires a free API key issued to registered PWS contributors.
'
version: 2.0.0
contact:
url: https://www.wunderground.com/member/api-keys
termsOfService: https://www.wunderground.com/member/api-keys
x-api-evangelist-ratings:
design: 7
documentation: 5
authentication: 7
openapi: 1
servers:
- url: https://api.weather.com
description: Weather Underground / The Weather Company API server
security:
- apiKey: []
tags:
- name: Forecast
description: Weather forecasts based on PWS location
paths:
/v3/wx/forecast/daily/5day:
get:
operationId: get5DayForecast
summary: Get 5-day daily weather forecast
description: 'Returns a 5-day daily weather forecast for a location specified by geocode (latitude and longitude). Typically used in conjunction with PWS station coordinates obtained from the observations endpoint.
'
tags:
- Forecast
parameters:
- name: geocode
in: query
required: true
description: 'Latitude and longitude as a comma-separated pair (e.g., 37.774,-122.419)
'
schema:
type: string
example: 37.774,-122.419
- $ref: '#/components/parameters/format'
- $ref: '#/components/parameters/units'
- name: language
in: query
required: false
description: 'Language code for forecast text (e.g., en-US, fr-FR)
'
schema:
type: string
default: en-US
example: en-US
responses:
'200':
description: Successful 5-day forecast response
content:
application/json:
schema:
$ref: '#/components/schemas/ForecastResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
schemas:
ForecastResponse:
type: object
description: 5-day daily weather forecast response
properties:
calendarDayTemperatureMax:
type: array
items:
type:
- integer
- 'null'
description: Maximum calendar day temperatures for each day
example:
- 62
- 58
- 65
- 60
- 55
calendarDayTemperatureMin:
type: array
items:
type:
- integer
- 'null'
description: Minimum calendar day temperatures for each day
example:
- 48
- 45
- 50
- 47
- 42
dayOfWeek:
type: array
items:
type: string
description: Day of week names for each forecast day
example:
- Monday
- Tuesday
- Wednesday
- Thursday
- Friday
expirationTimeUtc:
type: array
items:
type: integer
description: Unix timestamps when each day's forecast expires
moonPhase:
type: array
items:
type: string
description: Moon phase description for each day
example:
- Waxing Gibbous
moonriseTimeLocal:
type: array
items:
type:
- string
- 'null'
description: Local moonrise time for each day
moonsetTimeLocal:
type: array
items:
type:
- string
- 'null'
description: Local moonset time for each day
narrative:
type: array
items:
type: string
description: Overall narrative forecast text for each day
example:
- Mostly cloudy. Highs in the low 60s.
qpf:
type: array
items:
type:
- number
- 'null'
description: Quantitative precipitation forecast for each day
example:
- 0.1
- 0.0
- 0.25
- 0.05
- 0.0
qpfSnow:
type: array
items:
type:
- number
- 'null'
description: Quantitative snow precipitation forecast for each day
example:
- 0.0
- 0.0
- 0.0
- 0.0
- 0.0
sunriseTimeLocal:
type: array
items:
type:
- string
- 'null'
description: Local sunrise time for each day
example:
- 2024-01-15T07:23:00-0800
sunsetTimeLocal:
type: array
items:
type:
- string
- 'null'
description: Local sunset time for each day
example:
- 2024-01-15T17:12:00-0800
temperatureMax:
type: array
items:
type:
- integer
- 'null'
description: Maximum temperature for each forecast day
example:
- 62
- 58
- 65
- 60
- 55
temperatureMin:
type: array
items:
type:
- integer
- 'null'
description: Minimum temperature for each forecast day
example:
- 48
- 45
- 50
- 47
- 42
validTimeLocal:
type: array
items:
type: string
description: Local valid time for each forecast day
example:
- 2024-01-15T07:00:00-0800
validTimeUtc:
type: array
items:
type: integer
description: Unix timestamps for valid time of each forecast day
example:
- 1705327200
daypart:
type: array
items:
$ref: '#/components/schemas/ForecastDaypart'
description: Detailed forecast data for each day part (day/night pairs)
ErrorResponse:
type: object
description: Error response from the API
properties:
errors:
type: array
items:
type: object
properties:
error:
type: object
properties:
code:
type: string
description: Error code
example: NOT-AUTHORIZED
message:
type: string
description: Human-readable error message
example: Not Authorized
ForecastDaypart:
type: object
description: Forecast data for a specific day part (day or night)
properties:
cloudCover:
type: array
items:
type:
- integer
- 'null'
description: Cloud cover percentage for each day part
example:
- 40
- 20
- 55
- 30
iconCode:
type: array
items:
type:
- integer
- 'null'
description: Weather icon code for each day part
example:
- 28
- 31
- 26
- 33
iconCodeExtend:
type: array
items:
type:
- integer
- 'null'
description: Extended icon code for each day part
narrative:
type: array
items:
type:
- string
- 'null'
description: Text narrative forecast for each day part
example:
- Mostly cloudy. High 62F.
- Clear. Low 48F.
precipChance:
type: array
items:
type:
- integer
- 'null'
description: Probability of precipitation percentage for each day part
example:
- 20
- 10
- 40
- 15
precipType:
type: array
items:
type:
- string
- 'null'
description: Type of precipitation expected for each day part
example:
- rain
- none
temperature:
type: array
items:
type:
- integer
- 'null'
description: Temperature for each day part
example:
- 62
- 48
- 58
- 45
windDirection:
type: array
items:
type:
- integer
- 'null'
description: Wind direction in degrees for each day part
example:
- 270
- 250
windDirectionCardinal:
type: array
items:
type:
- string
- 'null'
description: Cardinal wind direction for each day part
example:
- W
- WSW
windPhrase:
type: array
items:
type:
- string
- 'null'
description: Text description of wind conditions for each day part
example:
- Winds W at 10 to 15 mph.
windSpeed:
type: array
items:
type:
- integer
- 'null'
description: Wind speed for each day part
example:
- 12
- 8
responses:
NotFound:
description: 'The requested station ID was not found or has no data for the specified date range.
'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: 'Authentication failed. The API key is missing, invalid, or not authorized for the requested station or endpoint.
'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
parameters:
format:
name: format
in: query
required: false
description: Response format. Only JSON is currently supported.
schema:
type: string
enum:
- json
default: json
units:
name: units
in: query
required: false
description: 'Unit system for measurement values. e = Imperial (English), m = Metric, s = SI (metric with Pa pressure), h = Hybrid (UK)
'
schema:
type: string
enum:
- e
- m
- s
- h
default: m
example: e
securitySchemes:
apiKey:
type: apiKey
in: query
name: apiKey
description: 'API key issued to registered PWS contributors via https://www.wunderground.com/member/api-keys
'