WeatherArb Public API
Free, open, no authentication required. Real-time weather anomaly data for 65 European cities, computed using Z-Score analysis against ERA5-Land 2000–2024 seasonal baselines.
# Quick start — no setup needed curl https://api.weatherarb.com/api/v1/pulse/vicenza # Response { "province": "Vicenza", "weather": { "z_score": -0.53, "anomaly_level": "NORMAL", "event_type": "Clear" }, "signal": { "score": 4.9 } }
Authentication
No API key required for the free tier. All endpoints are publicly accessible. Simply make HTTP requests directly.
Rate Limits
Fair use limits apply to prevent abuse. The free tier is sufficient for most applications.
Need higher limits? Contact us for B2B access.
GET /api/v1/pulse/{city}
Returns full weather anomaly data for a specific city.
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| city | string | required | City name (case-insensitive). E.g. vicenza, münchen, paris |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| force_refresh | boolean | optional | Force cache refresh. Default: false |
Example Request
curl https://api.weatherarb.com/api/v1/pulse/hamburg
Playground
🔌 Try it live
GET /api/v1/europe/top
Returns the top anomaly signals across all monitored European cities, sorted by Z-Score magnitude.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| limit | integer | optional | Number of results. Default: 10. Max: 65 |
Playground
🔌 Try it live
GET /api/v1/pulse/nearby
Finds the closest monitored city to given coordinates and returns its anomaly data. Useful for browser geolocation.
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| lat | float | required | Latitude (decimal degrees) |
| lon | float | required | Longitude (decimal degrees) |
| radius_km | float | optional | Search radius. Default: 100 |
Playground
🔌 Try it live — uses your browser location
GET /api/v1/widget/{city}
Lightweight endpoint for embedded widgets. Returns minimal JSON for fast rendering.
# Embed on your website <iframe src="https://weatherarb.com/widget.html?p=Milano" width="260" height="180" frameborder="0"></iframe> # Or fetch data directly curl https://api.weatherarb.com/api/v1/widget/milano # → {"p":"Milano","z":-0.12,"a":"NORMAL","s":5.1,"t":"2026-04-10"}
POST /api/newsletter/subscribe
Subscribe an email address to the weekly anomaly digest.
| Parameter | Type | Required | Description |
|---|---|---|---|
| string | required | Email address | |
| provincia | string | optional | City to monitor. Empty = all Europe |
curl -X POST \
"https://api.weatherarb.com/api/newsletter/subscribe?email=you@example.com&provincia=Milano"
Response Schema
Full response structure for the /pulse/{city} endpoint.
"api_version": string // "v1"
"province": string // City name
"region": string // Region/state
"country": string // "IT" | "DE" | "ES" | "FR"
"timestamp": string // ISO 8601
"weather": {
"event_type": string // "Heat_Wave" | "Heavy_Rain" | "Clear" ...
"anomaly_level": string // "NORMAL" | "UNUSUAL" | "EXTREME" | "CRITICAL"
"z_score": float // Statistical deviation from ERA5 baseline
"temperature_c": float // Current temperature in Celsius
"historical_avg_c": float // ERA5 seasonal average
"severity": float // 0.0 – 1.0
},
"signal": {
"score": float // 0.0 – 10.0 composite signal
"confidence": float // 0.0 – 1.0
"actionable": boolean
},
"attribution": string // "WeatherArb.com · ERA5-Land ECMWF + OpenWeatherMap"
}
Anomaly Levels
Classification based on absolute Z-Score value.
City List
All 65 monitored cities. Use the lowercase name in API calls.