TL;DR
Open-Meteo is a completely free, open-source weather API that pulls from 7 national weather service models (GFS, ECMWF IFS, ICON, GEM, METNO, DWD, JMA). It serves current conditions, 16-day hourly forecasts, and historical weather data going back to 1940 — all without any API key, signup, or rate limits. The API uses GPS coordinates directly and lets you request exactly the weather variables you need (temperature, wind, rain, humidity, pressure, UV index, and dozens more).
Quick start: https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41¤t=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m
No API key needed — just make a request!
How to Use This API
1. Current Weather + Hourly Forecast (Berlin, Germany)
Get both current conditions and 7-day hourly forecast for Berlin (lat=52.52, lon=13.41):
https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41¤t=temperature_2m,wind_speed_10m,relative_humidity_2m&hourly=temperature_2m,precipitation_probability,wind_speed_10m&timezone=Europe/Berlin
The current parameter returns the latest observation. hourly returns 168 data points (7 days × 24 hours). You can list any combination of weather variables separated by commas.
2. Historical Weather (New York, specific date range)
Retrieve historical data for New York (lat=40.71, lon=-74.01) for a specific date range:
https://api.open-meteo.com/v1/forecast?latitude=40.71&longitude=-74.01&start_date=2026-01-01&end_date=2026-01-31&daily=temperature_2m_max,temperature_2m_min,precipitation_sum
The daily parameter aggregates by day. start_date and end_date switch the API into historical mode.
3. JavaScript — Current + Hourly for Tokyo
const base = 'https://api.open-meteo.com/v1/forecast';
const params = new URLSearchParams({
latitude: 35.68,
longitude: 139.69,
current: 'temperature_2m,weather_code,wind_speed_10m',
hourly: 'temperature_2m,precipitation',
timezone: 'Asia/Tokyo'
});
fetch(base + '?' + params)
.then(r => r.json())
.then(d => {
console.log('Current temp:', d.current.temperature_2m, '°C');
console.log('Hourly:', d.hourly.time.map((t, i) =>
t + ': ' + d.hourly.temperature_2m[i] + '°C'));
});
4. Python — Daily Aggregates for London
import requests
params = {
'latitude': 51.51,
'longitude': -0.13,
'daily': 'temperature_2m_max,temperature_2m_min,sunrise,sunset,uv_index_max',
'timezone': 'Europe/London'
}
resp = requests.get('https://api.open-meteo.com/v1/forecast', params=params)
data = resp.json()
for day in range(len(data['daily']['time'])):
print(f"{data['daily']['time'][day]}: "
f"{data['daily']['temperature_2m_min'][day]}–{data['daily']['temperature_2m_max'][day]}°C, "
f"UV {data['daily']['uv_index_max'][day]}")
https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41¤t=temperature_2m,wind_speed_10m&hourly=temperature_2m,relative_humidity_2m,wind_speed_10m
Frequently Asked Questions
- How is this free without any rate limits?
- Open-Meteo is open-source funded. They aggregate data from freely available national weather service models (GFS from NOAA, ICON from DWD, etc.) and serve it through an optimized API. "Reasonable use" is allowed — about 10,000 requests per day per IP is fine for most applications.
- What weather variables can I request?
- Over 60 variables: temperature (2m, 80m, 120m), precipitation (rain, snowfall, showers), wind (speed, direction, gusts at 10m/80m/120m), humidity, pressure (surface, MSL), cloud cover, visibility, UV index, soil moisture/temperature, and more. See the documentation for the full list.
- Does it work for any location on Earth?
- Yes, global coverage. The API uses grid interpolation from 7 different weather models. For Europe, ICON (2.2km resolution) and ECMWF IFS give the best accuracy. For the Americas, GFS and GEM are primary. For Asia, JMA data is available.
- Can I get historical weather data?
- Yes. Use ERA5 reanalysis data going back to 1940. Set
start_dateandend_dateparameters, and usedailyorhourlyvariables. This is extremely useful for climate analysis and agricultural planning. - What timezones does the API support?
- Use the
timezoneparameter with IANA timezone names likeEurope/London,America/New_York,Asia/Tokyo. Defaults to GMT/UTC if omitted. The API also auto-detects from coordinates if you settimezone=auto. - Can I filter by weather model?
- Yes, add
models=best_match(default), or select specific models:models=gfs_seamless,models=icon_seamless,models=ecmwf_ifas, etc. Different models have different resolutions and forecast horizons.
API Details
- API URL
https://api.open-meteo.com/v1/forecast- Documentation
- open-meteo.com/en/docs
- Category
- Weather
- Authentication
- Not Required
- Geographic Coverage
- Global — multiple weather models combined
What You Can Build
- Personal weather dashboard with current conditions + 7-day forecast for any city
- Historical climate analysis tool — compare temperatures across decades using ERA5 data
- Agricultural planner: use soil moisture, precipitation probability, and temperature to optimize planting
- Sailing or aviation app using 120m wind speeds and gust predictions
- Multi-model weather comparison — show GFS vs ECMWF forecasts side by side