REST API · v1 · Live

WeatherArb
Intelligence API

Real-time weather anomaly intelligence for 10,385+ cities across 120 countries. Z-Score climatological analysis against 25-year NASA POWER ERA5-Land baselines. HDD/CDD energy metrics, sector impact data, and space weather integration.

10,385
Cities
120+
Countries
25yr
Baseline
<200ms
Latency
Free
Tier
Base URL
https://api.weatherarb.com
🔑

Authentication

The Free tier requires no authentication. Simply call the endpoints directly. For Pro tier (higher rate limits and advanced endpoints), include your API key in the request header.

Free Tier — No Auth Required

cURL
curl "https://api.weatherarb.com/api/v1/pulse/milan"

Pro Tier — API Key Header

cURL
Python
JavaScript
curl -H "X-API-Key: your_key_here" \
     "https://api.weatherarb.com/api/v1/global/top?limit=100"
import requests

headers = {"X-API-Key": "your_key_here"}
r = requests.get(
    "https://api.weatherarb.com/api/v1/global/top",
    headers=headers, params={"limit": 100}
)
data = r.json()
print(data["count"], "anomalies detected")
const response = await fetch(
  "https://api.weatherarb.com/api/v1/global/top?limit=100",
  { headers: { "X-API-Key": "your_key_here" } }
);
const data = await response.json();
console.log(data.reports.length, "cities");

Pulse Endpoints

Real-time weather anomaly data for individual cities. Returns Z-Score, temperature, HDD/CDD, wind, humidity, and sector impact analysis.

GET /api/v1/pulse/{city_slug} FREE City anomaly data

Returns real-time weather anomaly data for a specific city. The city_slug is the URL-encoded city name (lowercase, hyphens). Z-Score is calculated against the 25-year NASA POWER ERA5-Land baseline for that exact location.

Path Parameters

ParameterTypeDescription
city_slugrequiredstringCity name slug (e.g. milan, new-york, sao-paulo)
cURL
Python
JavaScript
Go
curl "https://api.weatherarb.com/api/v1/pulse/milan"
import requests

r = requests.get("https://api.weatherarb.com/api/v1/pulse/milan")
d = r.json()

w = d["weather"]
print(f"Milan Z-Score: {w['z_score']:+.2f}σ")
print(f"Temperature: {w['temperature_c']}°C")
print(f"Anomaly: {w['anomaly_level']}")
const r = await fetch("https://api.weatherarb.com/api/v1/pulse/milan");
const { weather, signal } = await r.json();

console.log(`Z-Score: ${weather.z_score > 0 ? '+' : ''}${weather.z_score.toFixed(2)}σ`);
console.log(`Score: ${signal.score}/10`);
console.log(`Event: ${weather.anomaly_label}`);
package main

import (
    "encoding/json"
    "fmt"
    "net/http"
)

func main() {
    resp, _ := http.Get("https://api.weatherarb.com/api/v1/pulse/milan")
    var data map[string]interface{}
    json.NewDecoder(resp.Body).Decode(&data)
    weather := data["weather"].(map[string]interface{})
    fmt.Printf("Z-Score: %v\n", weather["z_score"])
}
200 OK Response
{
  "city": "milan",
  "location": "Milan",
  "country_code": "it",
  "lat": 45.46,
  "lon": 9.19,
  "weather": {
    "z_score": +2.14,           // Standard deviations from 25yr baseline
    "temperature_c": 28.4,      // Current temperature (°C)
    "humidity_pct": 62,          // Relative humidity (%)
    "wind_kmh": 14,              // Wind speed (km/h)
    "hdd": 0.0,                  // Heating degree days
    "cdd": 3.4,                  // Cooling degree days
    "hdd_delta": -2.1,           // HDD vs historical average
    "anomaly_level": "EXTREME",  // NORMAL|UNUSUAL|EXTREME|CRITICAL
    "anomaly_label": "Heat wave",
    "event_type": "heat_wave"
  },
  "signal": {
    "score": 7.8,               // 0-10 composite risk score
    "vertical": "heat_wave",
    "agri_impact": "high",
    "energy_impact": "high",
    "logistics_impact": "moderate"
  },
  "timestamp": "2026-05-06T18:00:00Z"
}
GET /api/v1/pulse/nearby FREE Nearest city by coordinates

Find the nearest monitored city to a given latitude/longitude and return its live anomaly data. Useful for geolocation-based applications.

ParameterTypeDescription
latrequiredfloatLatitude (-90 to 90)
lonrequiredfloatLongitude (-180 to 180)
curl "https://api.weatherarb.com/api/v1/pulse/nearby?lat=45.46&lon=9.19"
🌍

Intelligence Endpoints

Aggregate anomaly intelligence across regions, countries, and globally. Returns ranked lists of cities with active weather anomalies.

GET /api/v1/europe/top FREE Top European anomalies

Returns the top anomalies across all monitored cities, sorted by absolute Z-Score. Default limit is 50.

ParameterTypeDescription
limitoptionalintegerMax results (default: 50, max free: 100, max pro: 500)
min_scoreoptionalfloatMinimum score filter (0-10)
curl "https://api.weatherarb.com/api/v1/europe/top?limit=10&min_score=5"
GET /api/v1/global/top FREE Top global anomalies

Returns top anomalies globally across all 10,385 monitored cities. Includes heat waves, cold snaps, heavy rain events ranked by severity.

ParameterTypeDescription
limitoptionalintegerMax results (default: 50)
event_typeoptionalstringFilter: heat_wave, cold_snap, heavy_rain, drought
cURL
Python
curl "https://api.weatherarb.com/api/v1/global/top?limit=20&event_type=heat_wave"
import requests

params = {"limit": 20, "event_type": "heat_wave"}
r = requests.get("https://api.weatherarb.com/api/v1/global/top", params=params)
data = r.json()

for city in data["reports"]:
    z = city["z_score"]
    print(f"{city['location']:20} Z={z:+.2f}σ  Score={city['score']:.1f}")
GET /api/v1/country/{country_code} FREE Country anomalies

Returns all monitored cities and their anomaly data for a specific country (ISO 3166-1 alpha-2 code).

ParameterTypeDescription
country_coderequiredstringISO country code: it, us, de, fr, in...
curl "https://api.weatherarb.com/api/v1/country/it"
curl "https://api.weatherarb.com/api/v1/country/us"
curl "https://api.weatherarb.com/api/v1/country/in"
GET /api/v1/critical FREE Critical anomalies only (|Z|≥3σ)

Returns only cities with critical anomalies (absolute Z-Score ≥ 3σ). These represent statistically extreme weather events occurring less than 0.3% of the time historically.

curl "https://api.weatherarb.com/api/v1/critical"
GET /api/v1/leaderboard FREE Anomaly leaderboard

Top anomalies ranked by composite score (0-10). Score combines Z-Score magnitude, HDD/CDD impact, wind, humidity, and duration.

curl "https://api.weatherarb.com/api/v1/leaderboard?limit=20"
📊

Analytics Endpoints

System statistics, grid stress analysis, and cache management.

GET /api/v1/stats FREE Platform statistics

Returns platform-wide statistics: total nodes, cached nodes, critical count, average Z-Score, and last update timestamp.

cURL
Response
curl "https://api.weatherarb.com/api/v1/stats"
{
  "total_nodes": 10385,
  "cached_nodes": 500,
  "critical_count": 27,
  "avg_z_score": 1.24,
  "countries": 120,
  "last_updated": "2026-05-06T18:00:00Z",
  "cache_age_seconds": 3240
}
GET /api/v1/grid-stress PRO Energy grid stress index

Returns energy grid stress scores per country, space weather data (Kp index, solar flare class), and risk assessments for critical infrastructure.

curl -H "X-API-Key: your_key" \
     "https://api.weatherarb.com/api/v1/grid-stress"
POST /pulse/refresh FREE Trigger cache refresh

Triggers a background refresh of all weather data from Open-Meteo. Returns immediately; data available after ~30 seconds.

curl -X POST "https://api.weatherarb.com/pulse/refresh"
# Response:
{
  "status": "refresh_started",
  "province_count": 10385,
  "message": "Data available in ~30 seconds"
}
🗂️

Data Model

Complete reference for all fields returned by the API.

Weather Object

z_score
float
Standard deviations from 25-year NASA POWER baseline. |Z|≥2 = extreme, |Z|≥3 = critical
temperature_c
float
Current air temperature in Celsius
humidity_pct
integer
Relative humidity percentage (0-100)
wind_kmh
float
Wind speed in km/h at 10m height
hdd
float
Heating Degree Days (base 18°C, EN ISO 15927)
cdd
float
Cooling Degree Days (base 18°C)
hdd_delta
float
HDD deviation vs 25-year historical average
anomaly_level
string
NORMAL · UNUSUAL · EXTREME · CRITICAL
anomaly_label
string
Human-readable event: "Heat wave", "Cold snap", "Heavy rain"
event_type
string
Machine-readable: heat_wave · cold_snap · heavy_rain · drought · normal

Signal Object

score
float 0-10
Composite risk score combining all anomaly metrics
agri_impact
string
Agricultural impact: low · moderate · high · critical
energy_impact
string
Energy grid impact level
logistics_impact
string
Transportation/logistics risk level
🧪

Live Playground

Test the API directly from your browser. No authentication required.

City Pulse — /api/v1/pulse/{city}
https://api.weatherarb.com/api/v1/pulse/milan
Top Anomalies — /api/v1/europe/top
https://api.weatherarb.com/api/v1/europe/top?limit=5
Nearest City — /api/v1/pulse/nearby
https://api.weatherarb.com/api/v1/pulse/nearby?lat=45.46&lon=9.19

Rate Limits

Rate limits are applied per IP address on the free tier and per API key on paid plans.

Free
60
requests / hour
Starter
1,000
requests / hour
Pro
10,000
requests / hour

Rate limit headers are included in every response: X-RateLimit-Remaining, X-RateLimit-Reset.

⚠️

Error Codes

All errors return JSON with error and message fields.

200
OK
Request succeeded. Data returned in response body.
404
City Not Found
The requested city slug does not exist in our database. Check spelling or try a nearby city.
429
Rate Limit Exceeded
Too many requests. Wait for the reset window or upgrade to a paid plan.
500
Server Error
Internal server error. Weather data may be refreshing. Retry after 30 seconds.
503
Cache Empty
Weather cache not yet populated. POST to /pulse/refresh and retry after 30 seconds.
💎

Pricing

Start free, scale as you grow. No credit card required for the free tier.

Free
€0/month
Perfect for personal projects and testing
  • 60 requests / hour
  • All pulse endpoints
  • Top 100 anomalies
  • JSON responses
  • API key required
  • Grid stress data
  • Historical data
  • Webhooks
Get Started Free
Pro
€49/month
For businesses and production applications
  • 10,000 requests / hour
  • All endpoints
  • Full 10,385 city database
  • Grid stress & space weather
  • Sector impact analytics
  • Priority support
  • Historical time series
  • Custom baselines
Start Pro Trial
Enterprise
Custom
For large-scale weather intelligence applications
  • Unlimited requests
  • Custom city additions
  • Historical time series
  • Custom baselines
  • Dedicated infrastructure
  • SLA guarantee
  • White-label option
  • Custom integrations
Contact Sales