Open-Meteo Weather

Weather API · Global coverage · No rate limits · 7 climate models

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]}")
Try current weather for Berlin: 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_date and end_date parameters, and use daily or hourly variables. This is extremely useful for climate analysis and agricultural planning.
What timezones does the API support?
Use the timezone parameter with IANA timezone names like Europe/London, America/New_York, Asia/Tokyo. Defaults to GMT/UTC if omitted. The API also auto-detects from coordinates if you set timezone=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