The weather API for everything you build

Global weather, marine, rain forecast and air quality — accurate everywhere, from the world's leading meteorological models.

Try it now
// Current weather anywhere on Earth
const res = await fetch(
  'https://skiesatlas.com/api/v1/weather?lat=48.85&lon=2.35',
  { headers: { 'X-API-Key': 'YOUR_KEY' } }
);
const { temperature_c, wind_speed_kmh } = await res.json();
// { temperature_c: 24.1, wind_speed_kmh: 5.9, condition: "clear" }
31
REST endpoints
4
Weather models
Global
Land, sea & sky
<200ms
Median response

Smart model routing

High-resolution local models (ICON-D2 2 km, HRRR 3 km) when available, ECMWF IFS 9 km worldwide. Automatic, transparent.

Rain nowcast

Minute-by-minute precipitation for the coming hours — will-it-rain answers for outdoor apps.

Marine & tides

Waves, swell, sea state, sea-surface temperature, plus tide times powered by TidesAtlas.

Built for AI agents

Native MCP server — plug live weather into Claude, Cursor and any MCP-compatible agent.

One API for every weather need

From sailing apps to solar forecasting, SkiesAtlas ships the data developers actually use.

Marine & sailing

Waves, swell, wind and tides for navigation, regattas and coastal apps.

Agriculture

Rain, soil-relevant conditions, frost and heat alerts for smart farming.

Solar & energy

Solar radiation and cloud cover for PV yield and grid forecasting.

Outdoor apps

Rain nowcast, UV index and conditions for running, cycling and travel.

Aviation & drones

Wind, gusts, visibility and cloud base for flight and drone planning.

Research

Direct model output (ECMWF, ICON, GFS) for reproducible science.

New · Weather maps

The whole sky on one map

Temperature, wind, precipitation, clouds and pressure — rendered from our own ECMWF-AIFS & GFS models, animatable across the forecast, plus live radar. Standard slippy-map tiles you can drop onto Leaflet or Mapbox.

Open the interactive map →
🌡️ Temp 💨 Wind 🌧️ Rain ☁️ Cloud 🔵 Pressure 📡 Radar

API reference

Simple, predictable REST endpoints. Authenticate with an X-API-Key header — pass lat/lon or a port slug.

Weather Pack
GET/api/v1/weatherCurrent + hourly forecast

Temperature, wind (speed, direction & gusts), humidity, pressure, cloud cover, condition and UV index — plus derived dew point, humidex, heat index and wind chill. Routed to the best available model for your coordinates (ICON-D2, ICON-EU, HRRR or ECMWF IFS).

ParamTypeDescription
lat / lonfloatCoordinates. Required (or use port).
daysintForecast horizon, 1-7 (default: 3).
hourlyboolSet to 1 to include the hourly series.
unitsstringmetric (default) or imperial. Works on all endpoints: °C→°F, km/h→mph, mm→in, m→ft (field suffixes change to _f/_mph/_in/_ft).

Example response

{ "lat": 48.85, "lon": 2.35, "model": "ICON-EU (7km)", "current": { "temperature_c": 24.1, "humidity_pct": 34, "wind_speed_kmh": 5.9, "wind_direction_deg": 215, "wind_gust_kmh": 14.2, "pressure_hpa": 1017, "cloud_cover_pct": 12, "condition": "clear", "uv_index": 2.7 } }
GET/api/v1/forecastUp to 14-day forecast

Multi-day forecast up to 14 days — 3-hourly series (temperature, wind, precipitation, cloud, pressure, humidity) plus daily aggregates (min/max, precip total, max wind) with a per-day confidence (high ≤7d, medium ≤10d, low = trend for days 11-14). Multi-model: ECMWF-AIFS global backbone (world's best AI model), refined by ICON-EU 7km (Europe) & HRRR 3km (US) near-term; NOAA GFS fills the 3-hourly gaps and the 11-14 day tail — the best model for each location & lead time, from our own store.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
daysint1-14 (default: 7).
unitsstringmetric (default) or imperial.

Example response

{ "models_used": ["ECMWF-AIFS", "ICON-EU", "GFS"], "run": "2026081600z", "days": 14, "daily": [ { "date": "2026-08-16", "temp_min_c": 17.8, "temp_max_c": 27.1, "precip_sum_mm": 0, "wind_max_kmh": 19.4, "confidence": "high" }, ... ], "hourly": [ { "time": "2026-08-13T00:00:00+00:00", "temperature_c": 18.2, "wind_speed_kmh": 12.1, "precipitation_mm": 0, ... }, ... ] }
GET/api/v1/outlook16-day ensemble trend

Probabilistic 16-day outlook from the NOAA GEFS ensemble (31 members): daily temperature trend with an uncertainty band (temp_low/mean/temp_high), a per-day confidence level and precipitation. A trend, not a precise forecast.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
unitsstringmetric (default) or imperial.
{ "model": "NOAA GEFS ensemble", "daily": [ { "date": "2026-08-27", "temp_low_c": 16.6, "temp_mean_c": 19.5, "temp_high_c": 22.4, "uncertainty_c": 2.9, "confidence": "medium" }, ... ] }
GET/api/v1/severeStorm / convective

Convective / storm parameters: CAPE, CIN, 0-3 km helicity, visibility, cloud ceiling, plus model-derived storm risk, lightning probability and hail risk.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
{ "cape_jkg": 987, "cin_jkg": -57, "helicity_0_3km": 17, "visibility_m": 24135, "cloud_ceiling_m": 10775, "storm_risk": "moderate", "lightning_probability_pct": 35, "hail_risk": "low" }
GET/api/v1/aviationMETAR + TAF, flight category

Live METAR observation and TAF forecast from the nearest airport, with computed flight category (VFR / MVFR / IFR / LIFR), a decoded observation and the raw METAR/TAF strings. Powered by aviationweather.gov (NOAA, public domain).

ParamTypeDescription
lat / lonfloatCoordinates. Required.
{ "station": "LFPG", "flight_category": "VFR", "metar": { "wind_kmh": 18, "visibility_m": 9999, "temperature_c": 21 }, "raw_metar": "LFPG 131330Z 27010KT 9999 FEW040 21/12 Q1017", "raw_taf": "TAF LFPG 131100Z ..." }
GET/api/v1/soundingVertical atmospheric profile

Model sounding on GFS pressure levels (1000 → 200 hPa): temperature, wind, humidity and geopotential height at each level, plus bulk wind shear and a low-level inversion flag. For aviation, gliding, ballooning and convective analysis.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
{ "levels": [ { "pressure_hpa": 850, "temperature_c": 14.2, "wind_speed_kmh": 31, "height_m": 1487 }, ... ], "bulk_wind_shear_kmh": 32.8, "low_level_inversion": false }
GET/api/v1/solarSolar irradiance + PV yield

Downward solar radiation (GHI, W/m²) hour by hour, plus an estimated PV yield per kWp and daily energy total — for solar / photovoltaic production forecasting. From NOAA GFS.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
{ "hourly": [ { "time": "2026-08-13T12:00", "solar_radiation_wm2": 582, "pv_estimate_kwh_per_kwp": 0.466 }, ... ], "daily": [ { "date": "2026-08-13", "pv_energy_kwh_per_kwp": 5.57 }, ... ] }
GET/api/v1/agricultureSoil & agronomy

Soil temperature & moisture at three depths (0-10, 10-40, 40-100 cm) from the GFS land model, plus ground-frost risk, growing degree-days (base 10) and a crop-spraying window for the next 48 h. For agriculture, irrigation and vineyard apps.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
{ "soil": { "0_10cm": { "soil_temperature_c": 19.5, "soil_moisture_m3m3": 0.07 }, ... }, "ground_frost_risk": false, "growing_degree_days": [ { "date": "2026-08-13", "gdd_base10": 20.6 } ], "spraying_window_next48h_pct": 88 }
GET/api/v1/probabilitiesAI ensemble probabilitiesPRO

Probabilistic forecast from the ECMWF AIFS-ENS 50-member AI ensemble: temperature percentiles (p10 / median / p90) with an uncertainty band, and precipitation probabilities (chance of >0.1 / >1 / >5 mm) per lead time. Sell confidence, not just a single number.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
daysint1–7 (12-hourly steps).
{ "model": "ECMWF AIFS-ENS (50-member AI ensemble)", "steps": [ { "lead_h": 42, "temp_p10_c": 23.0, "temp_median_c": 24.2, "temp_p90_c": 25.4, "temp_uncertainty_c": 2.4, "precip_probability_pct": 30 } ] }
GET/api/v1/accuracyVerified accuracy scoresPRO

Our verified forecast accuracy, published: MAE, RMSE and bias for each model (ECMWF-AIFS, GFS, ICON-EU and the blend) at each lead time, scored continuously against real METAR observations at dozens of global stations. Transparency most weather APIs won't give you.

ParamTypeDescription
paramstringtemperature (default), wind, pressure.
regionstringglobal (default) or a region (europe, asia…).
{ "param": "temperature", "stations": 38, "models": { "ECMWF-AIFS": { "leads": { "24": { "mae": 1.4, "rmse": 1.9, "bias": -0.1 } } }, … } }
GET/api/v1/map/{layer}/{z}/{x}/{y}.pngWeather map tilesPRO

Slippy-map raster tiles rendered from our own models (ECMWF-AIFS & GFS) — drop them straight onto Leaflet, Mapbox GL or MapLibre. Five layers, animatable across the forecast with ?step= (hours ahead). This is the "see everything" map. Open the live interactive map →

ParamTypeDescription
layerpathtemperature, wind, precipitation, clouds, pressure.
z/x/ypathStandard slippy-map tile coordinates.
stepqueryForecast hours ahead (0 = now, up to 240).
api_keyqueryYour key (tiles don't consume request credits).
// Leaflet L.tileLayer("https://skiesatlas.com/api/v1/map/temperature/{z}/{x}/{y}.png?api_key=KEY&step=0").addTo(map);
GET/api/v1/lightningReal-time lightningLIVE

Real-time lightning strikes near a location from the NOAA GOES-19/18 Geostationary Lightning Mapper (updated every ~2 minutes): strike count in radius, activity level, the nearest strike (distance & minutes-ago), a storm_overhead flag and the recent strike list. Public-domain data. Coverage: the Americas, Atlantic & Pacific (GOES field of view).

ParamTypeDescription
lat / lonfloatCoordinates. Required.
radiusfloatSearch radius in km (default 50, max 500).
windowintLook-back window in minutes (default 15, max 20).
{ "strike_count": 239, "activity": "extreme", "storm_overhead": true, "nearest_strike": { "distance_km": 3.4, "minutes_ago": 2.7 }, "data_age_minutes": 2 }
GET/api/v1/nowcastMinute precipitation nowcast

Hyperlocal 0–60 minute rain nowcast: live radar intensity right now at the point, plus rain approaching from upwind with a minutes-to-arrival ETA — radar truth advected by the model wind field. The "will it rain in the next 20 minutes?" answer.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
{ "raining_now": false, "intensity_now": "none", "approaching": true, "minutes_to_rain": 18, "approaching_intensity": "moderate", "summary": "Moderate rain approaching, starting in about 18 min" }
GET/api/v1/summaryDaily summary + weather codes

A human-readable daily summary plus a standardised WMO-like weather code and icon name for each day — everything a consumer app UI needs to render a forecast card without post-processing.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
daysint1–15 (default 5).
{ "today": "Clear sky, 22–38°C", "days": [ { "date": "2026-08-16", "weather_code": 61, "condition": "Light rain", "icon": "rain", "summary": "Light rain, 20–29°C, 1 mm precipitation" } ] }
GET/api/v1/space-weatherSpace weather & aurora

The whole sky, literally: planetary Kp index (now + 3-day forecast), geomagnetic storm level (G1–G5) and active NOAA alerts, plus — with lat/lon — the aurora visibility probability at that location from the OVATION model. From NOAA SWPC (public domain).

ParamTypeDescription
lat / lonfloatOptional. Returns aurora probability at this point.
{ "kp_index": { "value": 1.33, "storm_level": "quiet" }, "max_forecast_kp": 4.0, "aurora": { "probability_pct": 1, "visibility": "unlikely" } }
GET/api/v1/cyclonesActive tropical cyclones

Live tropical cyclones from the NOAA National Hurricane Center: name, category (Saffir-Simpson), position, maximum sustained wind, central pressure and movement, plus links to the official forecast track & cone. Pass optional lat/lon to sort by distance and get the nearest storm. Atlantic & Eastern Pacific basins.

ParamTypeDescription
lat / lonfloatOptional. Sorts storms by distance from this point.
{ "count": 3, "active_storms": [ { "name": "Cristobal", "category": "Category 1", "max_sustained_wind_kmh": 120, "pressure_hpa": 982, "position": { "lat": 25.4, "lon": -71.2 }, "movement": { "direction_deg": 315, "speed_kmh": 22 } } ] }
POST/api/v1/batchMulti-point (bulk) weather

Current weather for many locations in a single call (up to 50). Ideal for fleets, store networks, sensor grids and dashboards — one round-trip instead of 50. Each result carries your optional id and a cached flag.

Field (JSON body)TypeDescription
pointsarray[{lat, lon, id?}, …] — 1 to 50 locations. Required.
// POST body { "points": [ { "lat": 48.85, "lon": 2.35, "id": "paris" }, { "lat": 43.7, "lon": 7.26, "id": "nice" } ] } // → { "count": 2, "results": [ { "id": "paris", "weather": { "temperature_c": 32.6 } }, … ] }
POST/api/v1/routeRoute weather (along a trip)

Weather along a journey: POST a list of waypoints with a speed (or explicit ETAs) and get the forecast valid at each point's estimated time of arrival, plus a trip summary (max gust, worst-gust location, total precipitation, distance). For logistics, road-trips, sailing and delivery routing.

Field (JSON body)TypeDescription
waypointsarray[[lat,lon], …] in order (2–100 points).
speed_kmhfloatTravel speed to compute ETAs (default 60).
start_timestringISO departure time (default now).
pointsarrayAlternative: [{lat,lon,eta}] with explicit ETAs.
// POST body → weather at each ETA { "waypoints": [[48.39,-4.49],[47.22,-1.55],[46.16,-1.15]], "speed_kmh": 60 } // → { "distance_km": 376.9, "summary": { "max_wind_gust_kmh": 30.4 }, "legs": [ … ] }
POST/api/v1/alertsWeather alerts platform

Create weather alert rules that we evaluate every hour against the forecast horizon and deliver to webhook, Slack, Microsoft Teams, email or mobile push when the condition is met. Manage with GET /api/v1/alerts (list) and DELETE /api/v1/alerts?id=…. Configurable cooldown_hours prevents alert storms.

Field (JSON body)TypeDescription
namestringAlert label. Required.
lat / lonfloatLocation. Required.
metricstringtemperature_c, wind_speed_kmh, wind_gust_kmh, precipitation_mm, fire_danger, ice_risk
operatorstringgt, lt, gte, lte, eq.
thresholdstringNumeric value, or a label (high, extreme…) for categorical metrics.
horizon_hoursintHow far ahead to watch (1–240, default 24).
channelstringwebhook, slack, teams, email, push.
targetstringWebhook/Slack/Teams URL, email address, or Expo push token.
// POST body { "name": "Storm wind Brest", "lat": 48.4, "lon": -4.5, "metric": "wind_gust_kmh", "operator": "gt", "threshold": "90", "horizon_hours": 48, "channel": "slack", "target": "https://hooks.slack.com/…" }
GET/api/v1/indicesBusiness / sector indices

Ready-to-use sector indices derived from the forecast: energy heating & cooling degree-days (base 18°C), wind-power capacity factor from an 80 m generic turbine curve, Hot-Dry-Windy fire danger, and road ice risk. For utilities, renewables, insurance and highway operations.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
{ "energy_degree_days": [ { "date": "2026-08-13", "hdd_c": 0, "cdd_c": 9.1 } ], "wind_power": [ { "date": "2026-08-13", "capacity_factor_pct": 4 } ], "fire_weather": [ { "date": "2026-08-13", "fire_danger": "extreme" } ], "road_risk": [ { "date": "2026-08-13", "ice_risk": "none" } ] }
GET/api/v1/conditionsEverything at once

A single call that merges weather, marine, precipitation and air quality for a location — perfect for dashboards.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
{ "weather": { "temperature_c": 18.4, ... }, "marine": { "wave_height_m": 0.4, ... }, "rain": { "will_rain": false }, "air_quality": { "air_quality_index": 2 } }
GET/api/v1/astronomySun & moon data

Sunrise, sunset, dawn, dusk and day length, plus moon phase, illumination, moon age, moonrise and moonset. Computed in-house from astronomical algorithms — no external calls, instant.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
dateYYYY-MM-DDStart date, UTC (default: today).
daysint1-7 (default: 1).

Example response

{ "lat": 48.39, "lon": -4.49, "timezone": "UTC", "days": 1, "data": [ { "date": "2026-03-27", "sun": { "sunrise": "06:06", "sunset": "18:41", "dawn": "05:35", "dusk": "19:12", "day_length": "12:35" }, "moon": { "phase": "first_quarter", "illumination_pct": 66.8, "age_days": 9, "moonrise": "13:45", "moonset": "03:12" } } ] }
Historical
GET/api/v1/historyPast weather (reanalysis)

Daily historical weather — temperature (min/max), precipitation and wind — for any past date back to 1940. Powered by the ERA5 reanalysis (ECMWF), the reference dataset for past weather.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
dateYYYY-MM-DDPast start date. Required.
daysint1-31 (default: 7).
Source: ERA5 reanalysis (ECMWF / Copernicus Climate Change Service) — ingested directly from the public ERA5 archive, not a third-party proxy. Available up to ~7 days before today.

Example response

{ "lat": 48.39, "lon": -4.49, "start": "2025-06-01", "end": "2025-06-07", "days": 7, "source": "ERA5 reanalysis — ECMWF / Copernicus C3S", "daily": [ { "date": "2025-06-01", "temp_max_c": 17.2, "temp_min_c": 11.4, "precip_mm": 1.3, "wind_max_kmh": 24.1, "wind_gust_kmh": 41.0 }, ... ] }
Marine Pack
GET/api/v1/marineWaves, swell & sea temperature

Wave height, swell, wind-wave, sea state and sea-surface temperature from NOAA WaveWatch III and MUR SST.

ParamTypeDescription
lat / lonfloatOcean coordinates. Required.
daysint1-7 (default: 3).
{ "wave_height_m": 0.4, "swell_height_m": 0.05, "sea_state": "calm_rippled", "sst_c": 21.3 }
Precipitation & Winter
GET/api/v1/rainPrecipitation nowcast

Hour-by-hour precipitation for the coming hours, with a simple will_rain flag.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
hoursintHorizon in hours, 1-12 (default: 6).

Example response

[ { "until": "12:00", "precip_mm": 2.1, "will_rain": true }, { "until": "13:00", "precip_mm": 0.0, "will_rain": false } ]
GET/api/v1/snowSnowfall, depth & freezing

Snowfall, snow depth, freezing level, thunderstorm potential and solar radiation — for mountain and winter apps.

ParamTypeDescription
lat / lonfloatCoordinates. Required.
daysint1-7 (default: 3).

Example response

{ "snowfall_mm": 3.1, "snow_depth_cm": 180, "freezing": true, "solar_radiation_wm2": 210 }
GET/api/v1/radarLive rain radar + satellite

Live precipitation radar + IR satellite tile URLs — past frames and nowcast (future) frames for animated maps. Standard {z}/{x}/{y} slippy tiles (Leaflet, Mapbox GL…). Powered by RainViewer.

ParamTypeDescription
lat / lonfloatCoordinates (map centre). Required.
{ "radar": { "past": [ { "time": "2026-08-13T14:30:00Z", "tile_url": "https://tilecache.rainviewer.com/.../{z}/{x}/{y}/1/1_1.png" }, ... ], "nowcast": [ ... ] }, "satellite": { "infrared": [ ... ] } }
Air & Environment
GET/api/v1/air-qualityPM2.5, ozone, NO2 & AQI

Particulate matter, ozone, NO₂, SO₂ and a computed air-quality index, from Copernicus CAMS.

ParamTypeDescription
lat / lonfloatCoordinates. Required.

Example response

{ "pm2p5": 5.3, "pm10": 9.9, "o3": 73, "no2": 12, "air_quality_index": 2 }
GET/api/v1/pollenPollen forecast (Europe)

European pollen forecast (CAMS) for 6 species — alder, birch, grass, mugwort, olive, ragweed — with concentration (grains/m³) and a risk level per species + overall. Europe only.

{ "pollen": { "grass": { "grains_m3": 5, "label": "Faible" }, "mugwort": { "grains_m3": 14.4, "label": "Modéré" }, ... }, "overall_label": "Modéré", "dominant": "mugwort" }
GET/api/v1/aerosolsDust, smoke & AOD

Worldwide Saharan dust, wildfire smoke and total aerosol optical depth (CAMS global) — optical depth values + a risk level for dust and smoke.

{ "aerosol_optical_depth": 0.266, "dust_aod": 0.042, "dust_label": "Négligeable", "smoke_aod": 0.03, "smoke_label": "Négligeable" }
Tides Pack
GET/api/v1/tidesTide times & heights

High/low tide times and heights for 17,000+ ports, powered by TidesAtlas. Pass a port slug or coordinates.

ParamTypeDescription
portstringPort slug, e.g. san-francisco.
daysint1-14 (default: 1).
{ "extremes": [ { "datetime": "2026-03-27T05:12:00-07:00", "height_m": 1.82, "type": "high" }, { "datetime": "2026-03-27T11:44:00-07:00", "height_m": 0.31, "type": "low" } ] }

Try it live

Paste your API key, choose an endpoint and hit Send — real responses, right here.

// The JSON response will appear here

No key yet? Get one free — 500 requests/day, no card.

Quick start in your language

Grab an API key, then call the API with cURL, JavaScript, Python — or plug it straight into an AI agent via MCP.

cURL
JavaScript
Python
MCP (AI agents)
# Current weather in Paris curl -H "X-API-Key: YOUR_KEY" \ "https://skiesatlas.com/api/v1/weather?lat=48.85&lon=2.35"
const res = await fetch('https://skiesatlas.com/api/v1/weather?lat=48.85&lon=2.35', { headers: { 'X-API-Key': 'YOUR_KEY' } }); const data = await res.json();
import requests r = requests.get( "https://skiesatlas.com/api/v1/weather", params={"lat": 48.85, "lon": 2.35}, headers={"X-API-Key": "YOUR_KEY"}) print(r.json())

Add SkiesAtlas to Claude Desktop, Cursor or any MCP client — your agent gets live weather tools:

{ "mcpServers": { "skiesatlas": { "url": "https://skiesatlas.com/mcp", "headers": { "X-API-Key": "YOUR_KEY" } } } }

A real forecasting engine — not a proxy

SkiesAtlas doesn't just forward third-party data. We ingest raw numerical weather model output, decode it, pick the best model for every coordinate, and merge it into one clean, consistent API — delivered in under 200 ms.

1 · Ingest

We pull raw GRIB output straight from the world's leading weather centres, on every model run.

2 · Route

For each coordinate we select the highest-resolution model available — 2 km ICON-D2, 3 km HRRR, or 9 km ECMWF worldwide. Automatic and transparent.

3 · Unify

Six different model formats become one predictable JSON schema — the same field names everywhere, metric units and ISO timestamps.

4 · Serve

Aggressive per-run caching delivers responses in under 200 ms, with automatic stale-fallback so your app never goes dark.

Data sources & licenses

Under the hood we decode and blend these official, openly-licensed weather and ocean models into one API.

ECMWF AIFS & IFS

The world's best global model — AIFS (ECMWF's AI system) is our worldwide backbone.

CC-BY 4.0

DWD ICON

ICON-D2 (2 km) & ICON-EU (7 km) high-resolution Europe.

DWD Open Data · GeoNutzV

NOAA GFS, GEFS & HRRR

Global GFS + GEFS ensemble + 3 km HRRR rapid refresh over the US.

Public domain (US Gov)

ECMWF AIFS-ENS

50-member AI ensemble for the /probabilities endpoint.

CC-BY 4.0

NOAA GOES GLM

Geostationary Lightning Mapper — real-time lightning (/lightning).

Public domain

NOAA WaveWatch III

Global wave & swell model for the marine endpoint.

Public domain

Copernicus CAMS

Global air quality, pollen & aerosols (dust, smoke).

Copernicus / ADS

NOAA MUR SST

1 km sea-surface temperature analysis.

Public domain

ECMWF ERA5

Reanalysis powering the /history endpoint (past weather).

Copernicus C3S · CC-BY

NOAA NHC & SWPC

Tropical cyclones (/cyclones) + space weather & aurora (/space-weather).

Public domain

aviationweather.gov

METAR/TAF (/aviation) & the observations that verify our accuracy.

NOAA · Public domain

RainViewer

Live precipitation radar & satellite tiles (/radar).

Commercial use w/ attribution

TidesAtlas →

Tide times & heights for 17,000+ ports (the /tides endpoint).

tidesatlas.com

SkiesAtlas builds the ingestion, routing, unification and caching layer on top of these open datasets. Attribution to upstream providers is handled on our side.

Accuracy you can trust

We build on the best science available and check ourselves constantly.

Best-in-class models

ECMWF IFS is consistently ranked the world's most accurate global model. We use it as our worldwide baseline and layer high-resolution regional models on top.

Continuously validated

Every few hours we compare our output against independent reference forecasts across 20+ cities worldwide to catch any drift early.

Updated all day

Models refresh up to four times a day (00/06/12/18 UTC). Our engine re-ingests each run automatically, so you always get the latest forecast.

Live forecast accuracy

● verified continuously

Mean absolute temperature error (°C) vs real METAR observations at 1130 global stations — lower is better. Our backbone ECMWF-AIFS and the multi-model BLEND lead the field.

Model analysis+24h+48h+72h+120h
ICON-EU 1.021.151.251.371.57
ECMWF-AIFS backbone 1.251.351.411.481.55
BLEND 1.321.461.551.631.77
GFS 1.791.871.962.062.19

Full scores (all parameters, lead times & regions) via GET /api/v1/accuracy. Longer lead-time skill fills in as forecast/observation pairs accumulate.

Authentication & Rate limits

Authentication

Pass your API key in the X-API-Key header (recommended) or as an api_key query parameter.

# Header (recommended) curl -H "X-API-Key: YOUR_KEY" "https://skiesatlas.com/api/v1/weather?lat=48.85&lon=2.35" # Query parameter curl "https://skiesatlas.com/api/v1/weather?lat=48.85&lon=2.35&api_key=YOUR_KEY"

Rate limits

Every response reports your usage in the headers. Exceeding your quota returns 429 Too Many Requests — back off and retry.

HeaderDescription
X-RateLimit-LimitYour daily request limit (paid plans).
X-RateLimit-RemainingRequests left today.
PlanQuotaHTTP on exceed
Free500 requests / day429
Basic10,000 requests / day429
Starter50,000 requests / day429
Pro200,000 requests / day429
Business1,000,000 requests / day429

Quotas reset every day at 00:00 UTC, on the free plan too. A 402 is different: it means the endpoint itself requires a higher plan (/nowcast needs Starter or above; /batch, /history, /radar, /lightning, /probabilities, /alerts and /route need Pro or above).

Pricing

Start free, upgrade when you scale. No credit card to get your key.

Free
$0/mo
500 requests per day
  • Core weather & forecast API
  • ECMWF-AIFS multi-model blend
  • Verified accuracy endpoint
Get started
Basic
$7.99/mo
10,000 requests / day
  • All core endpoints
  • Current + 14-day forecast
  • Marine, air quality, tides & more
  • ECMWF-AIFS · verified accuracy
Choose Basic
Starter
$19/mo
50,000 requests / day
  • Everything in Basic, plus:
  • Weather map tiles (5 layers)
  • Minute rain nowcast
  • Batch multi-point endpoint
Choose Starter
Business
$149/mo
1,000,000 requests / day
  • Everything in Pro
  • Highest rate limits
  • Priority support
  • Commercial redistribution
Choose Business

Frequently asked questions

Where does the weather data come from?

We run our own engine on top of the world's leading open models — ECMWF IFS, DWD ICON, NOAA GFS/HRRR, WaveWatch III, Copernicus CAMS and MUR SST. We decode the raw model output, route each request to the highest-resolution model for that location, and return one clean, consistent response. You get a real product, not six raw model feeds to stitch together yourself.

How accurate is the forecast?

We use ECMWF IFS — widely regarded as the world's most accurate global model — as our baseline, plus high-resolution regional models (2–3 km) where available. We continuously validate our output against independent references, typically matching them within about 0.6 °C on temperature.

What are the rate limits?

Every plan has a daily quota that resets at 00:00 UTC — the free plan included: 500 requests per day, renewed every day. Paid plans: Basic 10,000/day, Starter 50,000/day, Pro 200,000/day, Business 1,000,000/day. Every response returns your remaining quota in the X-RateLimit-Remaining header.

Can I cancel anytime?

Yes. Subscriptions are monthly and you can cancel at any time — your plan stays active until the end of the paid period, then drops back to free automatically.

Can I use it with AI agents?

Absolutely. SkiesAtlas ships a native MCP server at https://skiesatlas.com/mcp — add it to Claude Desktop, Cursor or any MCP client and your agent gets live weather tools.

Do you provide tides?

Yes, via the /api/v1/tides endpoint, powered by TidesAtlas — tide times and heights for 17,000+ ports worldwide.

Ship weather features today

Get your API key in seconds and make your first call in one line of code.

Get your API key