openapi: 3.0.3
info:
title: Weather Underground PWS Forecast Location 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: Location
description: PWS station location lookup
paths:
/v3/location/near:
get:
operationId: getNearbyPWSLocations
summary: Find nearest active PWS stations
description: 'Returns a list of nearest active Personal Weather Stations for a given geographic coordinate. Useful for discovering available station IDs before querying observation data.
'
tags:
- Location
parameters:
- name: geocode
in: query
required: true
description: Latitude and longitude as a comma-separated pair
schema:
type: string
example: 37.774,-122.419
- name: product
in: query
required: true
description: Product type to search for (use "pws" for Personal Weather Stations)
schema:
type: string
enum:
- pws
example: pws
- $ref: '#/components/parameters/format'
responses:
'200':
description: Successful nearby PWS locations response
content:
application/json:
schema:
$ref: '#/components/schemas/LocationNearResponse'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
components:
parameters:
format:
name: format
in: query
required: false
description: Response format. Only JSON is currently supported.
schema:
type: string
enum:
- json
default: json
schemas:
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
LocationNearResponse:
type: object
description: Response containing nearby PWS station locations
properties:
location:
type: object
description: Location search result container
properties:
stationIdentifier:
type: array
items:
type: string
description: List of nearby PWS station identifiers
example:
- KCASARAT1
- KCAFREMO12
latitude:
type: array
items:
type: number
description: Latitude of each nearby station
example:
- 37.774
- 37.78
longitude:
type: array
items:
type: number
description: Longitude of each nearby station
example:
- -122.419
- -122.425
distanceKm:
type: array
items:
type: number
description: Distance to each station in kilometers
example:
- 0.5
- 1.2
distanceMi:
type: array
items:
type: number
description: Distance to each station in miles
example:
- 0.31
- 0.75
responses:
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'
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'
securitySchemes:
apiKey:
type: apiKey
in: query
name: apiKey
description: 'API key issued to registered PWS contributors via https://www.wunderground.com/member/api-keys
'