ECMWF · DWD · NOAA · Météo-France · Copernicus
76 years of weather behind you. 15 days ahead.
Two APIs on one key: forecasts for any point on earth, and heating and cooling degree days computed from hourly reanalysis back to 1950. Both licensed for commercial resale — the part most free weather data quietly forbids.
10,000 credits a month, free, no payment card. Paid plans from €19.
Left ERA5-Land, 9 km, measured Right 8 models blended, ensemble spread
1950 →
Hourly archive start. The specialist degree-day competitor starts in 2000.
1.3 km
Finest forecast grid, where a national model covers your point.
8
Models blended automatically. The finest one covering your point wins.
27
Stored parameters, plus 18 derived — gusts, CAPE, soil temperature, snow line, UV.
4
Degree-day methods, including French Costic and the Eurostat convention.
Three products. One key, one bill, one integration.
They share a codebase, a city catalogue and an authentication layer. You can buy one alone, or all three on the same plan from €19 a month.
Weather API
Forecasts anywhere, to 15 days
Hourly and daily, 45 hourly fields, terrain-corrected to your point's real elevation. Ensemble probabilities from 50 members, Copernicus air quality with Saharan dust, sea state, snow line and river discharge — all on the same key.
Built for weather sites and apps, energy trading, agriculture, logistics, outdoor and marine planning.
What the Weather API returns →Degree Days API
HDD and CDD on your base temperature
Integrated from the hourly series at request time, not pre-computed at base 18. Any base, four calculation methods, daily to yearly breakdowns, CSV export, and an urban heat island correction on city endpoints.
Built for energy performance contracts, building portfolio benchmarking, HVAC sizing, weather normalisation of consumption.
How the degree days are computed →Climate API
87 years of daily climate, everywhere
14 daily fields for every land point on earth, back to 1940, on the ERA5 grid. WMO normals over 1961–1990 and 1991–2020, and the change between them in a single call. Days are cut at solar midnight, not at a political time zone.
Built for climate risk, agronomy, insurance pricing, site selection, and any baseline that has to stay comparable for years.
Read the Climate API reference →Every answer here starts with a place name. That step is included.
One search turns a name into a coordinate, and the same key then asks for weather, degree days or climate on it. It is not billed in credits, on any plan, including the free one.
Coverage
Down to the village
GeoNames feature class P in full — 5,220,666 populated places, hamlets included, rather than a population-filtered extract. A commune of 528 inhabitants is in it, and so is its forecast.
Languages
Matching is never filtered by language
98 % of places carry no localised name, so a search restricted to one language finds capitals and little else. The local name, its ASCII form and every alias are always tested: Bruxelles, Brussels and Brussel all reach the same point.
Ambiguity
Two places, one name
There are two Ramillies, 126 km apart, and neither is the right answer in the abstract. Pass the position of whoever is asking: from Lille the French one comes back, from Brussels the Belgian one.
Included, not unlimited: a separate monthly ceiling of five geocoding requests per credit in your plan. A debounced search box spends about six of them per place found, so the ceiling is a guard against abuse rather than something to ration.
What you are actually buying
Raw model data is free to download. Turning it into something you can sell on is the part that takes a year.
Licence
You may resell it
Every production source permits commercial use and redistribution — CC-BY-4.0, GeoNutzV, public domain, Etalab. The obligation that passes to you is attribution, and /v1/attribution returns the exact line to display.
No source that forbids commercial use can reach production: the service refuses to start if one is configured.
Resolution
The best model for the point, not the same model everywhere
A request in Lyon is served by AROME at 1.3 km. The same request in Tamanrasset is served by ICON at 13 km, because nothing finer exists there. The choice happens per point and per lead time, and the response says which model answered.
Honesty
Metadata you can build error handling on
Every response carries the model, the run it came from, data_age_hours and a stale flag. Degree-day responses carry coverage and a count of provisional days. You are never guessing whether a number is fresh.
Reliability
Ingestion cannot break serving
A new dataset is written to a fresh directory, validated, and only then does a pointer flip atomically. A crashed or corrupt ingestion leaves the previous data serving and untouched. Rolling back is a file write, not a re-ingestion.
One request, and you have data
No SDK to install, no OAuth dance, no sandbox that returns fake values. A key in a header and an HTTP GET.
# Seven days of hourly weather for Algiers
curl -H "X-API-Key: $API_KEY" \
"https://api.climatememory.com/v1/forecast/city/dz/alger?days=7"
# Heating degree days on a 15.5 °C base, ten years
curl -H "X-API-Key: $API_KEY" \
"https://api.climatememory.com/v1/degree-days\
?lat=48.86&lon=2.35&base=15.5&start=2015-01-01&end=2024-12-31"
const res = await fetch(
"https://api.climatememory.com/v1/forecast?lat=36.75&lon=3.06&days=7",
{ headers: { "X-API-Key": process.env.API_KEY } }
);
if (!res.ok) {
const { error } = await res.json();
throw new Error(`${error.code}: ${error.message}`);
}
const data = await res.json();
data.daily.temperature_2m_max;
data.source.stale;
import httpx
r = httpx.get(
"https://api.climatememory.com/v1/degree-days",
params={"lat": 48.86, "lon": 2.35, "base": 15.5,
"method": "costic", "breakdown": "monthly",
"start": "2024-01-01", "end": "2024-12-31"},
headers={"X-API-Key": API_KEY},
timeout=30,
)
r.raise_for_status()
r.json()["totals"]["hdd"]
Both services publish an OpenAPI 3.1 schema at /v1/openapi-weather.json · /v1/openapi-degree-days.json. Generate a typed client in any language from it.
Pricing that does not punish you for growing
You are billed on credits, not on requests, so a cheap call stays cheap. Your quota resets on your subscription date, every month.
Free
€0
- 10,000 credits a month
- 20 requests a minute
- Forecast and current conditions
- No card — degree days and climate free for 30 days
Starter
€19 / month
- 50,000 credits a month
- 60 requests a minute
- Weather, degree days and climate
- History and CSV export
- 3 keys, email support
Pro
€79 / month
- 400,000 credits a month
- 300 requests a minute
- Everything, plus air quality and normals
- 10 keys, priority support
Business
Talk to us
- Credits a month: agreed with you
- Requests a minute: agreed with you
- Contract, invoice, availability commitment
- Support terms in writing
Annual billing is two months free. Prices exclude VAT where it applies.
Questions people ask before buying
Can I resell or redistribute the data?
Yes. Every source in production is licensed for commercial use and redistribution: ECMWF and Copernicus under CC-BY-4.0, DWD under GeoNutzV, NOAA in the public domain, Météo-France under Etalab 2.0.
The one obligation that passes to you is attribution — a footer line naming the sources. /v1/attribution returns the exact wording, and it needs no key.
How far back does the historical data go?
To 1 January 1950, hourly, everywhere on land, on a 9 km grid — 76 years of ERA5-Land reanalysis. Degree days are integrated from that series at request time.
How far ahead does the forecast go, and how good is it?
Fifteen days. Days 1 to 10 come from the finest model covering your point, between 1.3 km and 28 km. Days 11 to 15 come from ECMWF AIFS and are labelled a trend, not a forecast, because skill at that range is close to climatology.
Typical 2 m temperature error at 24 hours is around 1 to 1.5 °C. Convective storms, exact shower placement and sub-grid microclimate are where every model including this one is weak.
Is there a free tier, and does it need a card?
10,000 credits a month and 20 requests a minute, on forecast and current conditions. No payment card. It is enough to evaluate properly and not enough to run a product on.
What is a credit?
An ordinary request costs one credit. A degree-day request costs two for up to a year, plus one per additional year. A CSV export costs four times the equivalent JSON call.
Credits rather than requests, because a ten-year hourly integration reads thousands of times more data than a city forecast that came out of a cache. Charging both the same means one of you is being overcharged.
What happens when I hit a limit?
429 with rate_limited and a Retry-After header if you are going too fast; 429 quota_exceeded with the reset time if the month is spent. Every successful response carries X-RateLimit-Remaining and X-Quota-Remaining, so you can see it coming.
Is this a flood or storm warning service?
No, and it must not be presented as one. River discharge is returned in m³/s as information; issuing flood warnings is reserved to national and regional authorities, who can also close a road and evacuate. The disclaimer travels in the response body.
Take a key and make one request
It takes about a minute, and the free tier answers with the same data the paid tiers do.