Public API & RSS feed
Read your station's current conditions as JSON, or subscribe to it as an RSS feed.
Your site publishes machine-readable copies of itself alongside the page: a small JSON API, a Weather Underground compatible endpoint and an RSS feed. All of them serve exactly what your public page already shows to any visitor, and nothing about your account, your credentials or your archive, so they are on by default.
If you want your weather to appear on another page rather than be read by a program, the embeddable widget and badge are ready-made and need no code.
The JSON API
GET https://pro-weather.com/api/v1/<your-subdomain>/currentFor example, https://pro-weather.com/api/v1/ardooie/current.
The response is versioned, flat, and carries both unit systems, so whatever you are building never has to know which units you picked:
{
"version": 1,
"station": {
"subdomain": "ardooie",
"name": "Ardooie",
"title": "Ardooie Weather",
"latitude": 50.9925,
"longitude": 3.2003,
"elevationMeters": 25,
"timezone": "Europe/Brussels",
"url": "https://ardooie.pro-weather.com"
},
"observation": {
"time": 1785000000,
"iso": "2026-08-03T14:00:00.000Z",
"temperature": { "celsius": 22.5, "fahrenheit": 72.5 },
"feelsLike": { "celsius": 22.5, "fahrenheit": 72.5 },
"dewPoint": { "celsius": 15.5, "fahrenheit": 59.9 },
"humidity": 64,
"pressure": { "hpa": 1017.1, "inHg": 30.03, "trend": 0 },
"wind": {
"speed": { "kmh": 12.9, "mph": 8, "ms": 3.6 },
"direction": { "degrees": 225, "cardinal": "SW" }
},
"windGust": { "kmh": 19.3, "mph": 12, "ms": 5.4 },
"rain": {
"today": { "mm": 5.2, "inches": 0.2 },
"rate": { "mmPerHour": 1.2, "inchesPerHour": 0.05 }
},
"solar": { "wm2": 432.5 },
"uv": { "index": 3 },
"airQuality": null
}
}Anything your station does not measure comes back as null rather than being
omitted, so the shape is stable. That includes wind.direction, which is
null when the station reports a wind speed but no bearing - read it as
"unknown", never as due north.
Using it
- CORS is open, so a browser dashboard can fetch it directly.
- No key is needed. The data is already public on your page.
- Cached for about 2.5 minutes, half the refresh interval; polling faster than
that gets you the same answer. Every reading carries its own
time, so a cached response is never wrong, only slightly older than the label suggests. - Rate limited per client to 120 requests every 5 minutes, which is well beyond anything a dashboard needs and a wall for a scraper.
Status codes
| Code | Meaning |
|---|---|
200 | Here is the current observation. |
403 | The owner turned the public API off. |
404 | No such station, the site is not published, or there is no current reading. |
429 | Too many requests from your address. |
Weather Underground compatibility
Software that supports the Weather Underground PWS response format and lets you set a custom API server can use this endpoint:
GET https://pro-weather.com/v2/pws/observations/current?stationId=<your-subdomain>&units=eFor example,
https://pro-weather.com/v2/pws/observations/current?stationId=ardooie&units=e.
It returns the same public current reading in the WU observations array and
unit-keyed measurement format. The supported unit values are e (imperial),
m (metric), h (UK hybrid) and s (metric SI). Add
numericPrecision=decimal for decimal temperature and wind values.
No API key is required. An apiKey query parameter is accepted and ignored so
software that always adds one does not need special handling. The same API
switch, cache and rate limit as the JSON API above apply. Apps that hard-code
the Weather Underground server cannot be redirected to this endpoint; the app
must offer a custom server or base URL setting.
The RSS feed
https://<your-subdomain>.pro-weather.com/feed.xmlIt also lives at https://pro-weather.com/api/v1/<your-subdomain>/feed.xml, and
on your custom domain if you have one. Your page links to it in its <head>, so
a reader that supports autodiscovery finds it from the site address alone.
Four items, following the same shape the weewx Seasons skin publishes:
- Current conditions: temperature, humidity, dew point, pressure, wind, rain, solar and UV.
- Daily summary: today's high, low, mean, rainfall and peak gust.
- Monthly summary: the same, for the calendar month so far.
- Yearly summary: the same, for the calendar year so far.
Why it is not one item per reading
Each item keeps a stable id per period: the current-conditions item is keyed to the hour, the summaries to their day, month and year. A feed that minted a new id every five minutes would light up every subscriber's unread count 288 times a day, which is how a station gets unsubscribed from.
A summary for AI assistants
A published site also answers at /llms.txt with a short plain-text
description of the station (its title and tagline, the station's name,
coordinates, elevation and time zone, and the site language) for AI assistants
and their crawlers, which rarely run JavaScript. It follows the search-engine
switch: a site that discourages indexing serves none.
Turning them off
The API, the Weather Underground endpoint and the feed are controlled by one
switch, because they are the same promise: this station is readable by
machines. Under Panels → Public data, turn off Public data API and RSS
feed. The API then answers 403, the feed disappears, and the autodiscovery
link is removed from your page. Your site itself is unaffected.
Next steps
- Publish to weather networks: the outbound direction
- Embed your weather elsewhere
- Custom domain
Add Google Analytics
Measure your visitors with Google Analytics 4: paste a GA4 measurement ID once and Pro Weather loads the tag on your public site for you. No code needed.
Embed your weather elsewhere
Put your live conditions on a club page, a school website, a blog sidebar or a forum signature, with a copy-paste snippet.
