The weather API for everything you build
Global weather, marine, rain forecast and air quality — accurate everywhere, from the world's leading meteorological models.
// 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" }
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.
API reference
Simple, predictable REST endpoints. Authenticate with an X-API-Key header — pass lat/lon or a port slug.
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).
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required (or use port). |
days | int | Forecast horizon, 1-7 (default: 3). |
hourly | bool | Set to 1 to include the hourly series. |
units | string | metric (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
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
days | int | 1-14 (default: 7). |
units | string | metric (default) or imperial. |
Example response
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
units | string | metric (default) or imperial. |
Convective / storm parameters: CAPE, CIN, 0-3 km helicity, visibility, cloud ceiling, plus model-derived storm risk, lightning probability and hail risk.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
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).
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
days | int | 1–7 (12-hourly steps). |
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.
| Param | Type | Description |
|---|---|---|
param | string | temperature (default), wind, pressure. |
region | string | global (default) or a region (europe, asia…). |
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 →
| Param | Type | Description |
|---|---|---|
layer | path | temperature, wind, precipitation, clouds, pressure. |
z/x/y | path | Standard slippy-map tile coordinates. |
step | query | Forecast hours ahead (0 = now, up to 240). |
api_key | query | Your key (tiles don't consume request credits). |
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).
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
radius | float | Search radius in km (default 50, max 500). |
window | int | Look-back window in minutes (default 15, max 20). |
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
days | int | 1–15 (default 5). |
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).
| Param | Type | Description |
|---|---|---|
lat / lon | float | Optional. Returns aurora probability at this point. |
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Optional. Sorts storms by distance from this point. |
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) | Type | Description |
|---|---|---|
points | array | [{lat, lon, id?}, …] — 1 to 50 locations. Required. |
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) | Type | Description |
|---|---|---|
waypoints | array | [[lat,lon], …] in order (2–100 points). |
speed_kmh | float | Travel speed to compute ETAs (default 60). |
start_time | string | ISO departure time (default now). |
points | array | Alternative: [{lat,lon,eta}] with explicit ETAs. |
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) | Type | Description |
|---|---|---|
name | string | Alert label. Required. |
lat / lon | float | Location. Required. |
metric | string | temperature_c, wind_speed_kmh, wind_gust_kmh, precipitation_mm, fire_danger, ice_risk… |
operator | string | gt, lt, gte, lte, eq. |
threshold | string | Numeric value, or a label (high, extreme…) for categorical metrics. |
horizon_hours | int | How far ahead to watch (1–240, default 24). |
channel | string | webhook, slack, teams, email, push. |
target | string | Webhook/Slack/Teams URL, email address, or Expo push token. |
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
A single call that merges weather, marine, precipitation and air quality for a location — perfect for dashboards.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
date | YYYY-MM-DD | Start date, UTC (default: today). |
days | int | 1-7 (default: 1). |
Example response
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
date | YYYY-MM-DD | Past start date. Required. |
days | int | 1-31 (default: 7). |
Example response
Wave height, swell, wind-wave, sea state and sea-surface temperature from NOAA WaveWatch III and MUR SST.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Ocean coordinates. Required. |
days | int | 1-7 (default: 3). |
Hour-by-hour precipitation for the coming hours, with a simple will_rain flag.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
hours | int | Horizon in hours, 1-12 (default: 6). |
Example response
Snowfall, snow depth, freezing level, thunderstorm potential and solar radiation — for mountain and winter apps.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
days | int | 1-7 (default: 3). |
Example response
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.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates (map centre). Required. |
Particulate matter, ozone, NO₂, SO₂ and a computed air-quality index, from Copernicus CAMS.
| Param | Type | Description |
|---|---|---|
lat / lon | float | Coordinates. Required. |
Example response
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.
Worldwide Saharan dust, wildfire smoke and total aerosol optical depth (CAMS global) — optical depth values + a risk level for dust and smoke.
High/low tide times and heights for 17,000+ ports, powered by TidesAtlas. Pass a port slug or coordinates.
| Param | Type | Description |
|---|---|---|
port | string | Port slug, e.g. san-francisco. |
days | int | 1-14 (default: 1). |
Try it live
Paste your API key, choose an endpoint and hit Send — real responses, right here.
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.
Add SkiesAtlas to Claude Desktop, Cursor or any MCP client — your agent gets live weather tools:
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.0DWD ICON
ICON-D2 (2 km) & ICON-EU (7 km) high-resolution Europe.
DWD Open Data · GeoNutzVNOAA 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.
NOAA GOES GLM
Geostationary Lightning Mapper — real-time lightning (/lightning).
NOAA WaveWatch III
Global wave & swell model for the marine endpoint.
Public domainCopernicus CAMS
Global air quality, pollen & aerosols (dust, smoke).
Copernicus / ADSNOAA MUR SST
1 km sea-surface temperature analysis.
Public domainECMWF ERA5
Reanalysis powering the /history endpoint (past weather).
NOAA NHC & SWPC
Tropical cyclones (/cyclones) + space weather & aurora (/space-weather).
aviationweather.gov
METAR/TAF (/aviation) & the observations that verify our accuracy.
RainViewer
Live precipitation radar & satellite tiles (/radar).
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 continuouslyMean 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.02 | 1.15 | 1.25 | 1.37 | 1.57 |
| ECMWF-AIFS backbone | 1.25 | 1.35 | 1.41 | 1.48 | 1.55 |
| BLEND | 1.32 | 1.46 | 1.55 | 1.63 | 1.77 |
| GFS | 1.79 | 1.87 | 1.96 | 2.06 | 2.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.
Rate limits
Every response reports your usage in the headers. Exceeding your quota returns 429 Too Many Requests — back off and retry.
| Header | Description |
|---|---|
X-RateLimit-Limit | Your daily request limit (paid plans). |
X-RateLimit-Remaining | Requests left today. |
| Plan | Quota | HTTP on exceed |
|---|---|---|
| Free | 500 requests / day | 429 |
| Basic | 10,000 requests / day | 429 |
| Starter | 50,000 requests / day | 429 |
| Pro | 200,000 requests / day | 429 |
| Business | 1,000,000 requests / day | 429 |
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.
- ✓Core weather & forecast API
- ✓ECMWF-AIFS multi-model blend
- ✓Verified accuracy endpoint
- ✓All core endpoints
- ✓Current + 14-day forecast
- ✓Marine, air quality, tides & more
- ✓ECMWF-AIFS · verified accuracy
- ✓Everything in Basic, plus:
- ✓Weather map tiles (5 layers)
- ✓Minute rain nowcast
- ✓Batch multi-point endpoint
- ✓Everything in Starter, plus:
- ✓Real-time lightning
- ✓AI ensemble probabilities
- ✓Alerts platform (webhook/Slack/email)
- ✓Route weather
- ✓Everything in Pro
- ✓Highest rate limits
- ✓Priority support
- ✓Commercial redistribution
Frequently asked questions
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.
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.
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.
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.
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.
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.