BYTETOOLS

Open-Meteo API

Free weather forecast API with no API key and no signup. Hourly and daily forecasts worldwide, free for commercial use. Working curl example and live response.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 19 Aug 2026

What is the Open-Meteo API?

Open-Meteo is a free weather forecast API that requires no API key and no registration. It returns current conditions plus hourly and daily forecasts for any latitude and longitude worldwide, and is free for commercial use under 10,000 requests per day.

Open-Meteo is the rare weather API that asks for nothing up front. There is no signup, no key to rotate and no credit card, yet it still serves high-resolution forecast data drawn from national weather services including NOAA, DWD and Meteo-France. For most side projects and a good number of production apps, it is the only weather API you need.

The API is built around explicit opt-in: you list exactly which variables you want via the `current`, `hourly` or `daily` parameters, and you get back only those. That keeps responses small and makes the URL self-documenting — anyone reading your code can see precisely what data the app depends on.

Quick facts

Base URL
https://api.open-meteo.com/v1
Authentication
No API key. Non-commercial and commercial use are both allowed below roughly 10,000 requests per day; above that Open-Meteo asks you to buy an API plan.
Rate limit
Approximately 10,000 requests per day per IP on the free tier.
Pricing
Free, including commercial use, under the daily limit. Paid plans lift the cap.
CORS
Enabled — callable directly from browser JavaScript
Official docs
Read the docs

How to use the Open-Meteo API

Every request below was executed against the live API on 19 Aug 2026, and the response shown is the real body it returned — not an illustration.

1. Current temperature and wind speed for Berlin

GET https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m,wind_speed_10m

curl
curl 'https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m,wind_speed_10m'
JavaScript (fetch)
const res = await fetch("https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m,wind_speed_10m");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);
Python (requests)
import requests

res = requests.get("https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current=temperature_2m,wind_speed_10m", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "latitude": 52.52,
  "longitude": 13.419998,
  "generationtime_ms": 0.07152557373046875,
  "utc_offset_seconds": 0,
  "timezone": "GMT",
  "timezone_abbreviation": "GMT",
  "elevation": 38.0,
  "current_units": {
    "time": "iso8601",
    "interval": "seconds",
    "temperature_2m": "°C",
    "wind_speed_10m": "km/h"
  },
  "current": {
    "time": "2026-08-19T13:00",
    "interval": 900,
    "temperature_2m": 19.0,
    "wind_speed_10m": 8.8
  }
}

Parameters

ParameterTypeRequiredDescription
latitudefloatRequiredLatitude in WGS84 decimal degrees. Required. 52.52
longitudefloatRequiredLongitude in WGS84 decimal degrees. Required. 13.41
currentstringOptionalComma-separated list of variables to return for right now. temperature_2m,wind_speed_10m
hourlystringOptionalComma-separated hourly variables, returned for 7 days by default. temperature_2m,precipitation
dailystringOptionalComma-separated daily aggregates. Needs a timezone to be meaningful. temperature_2m_max,sunrise
timezonestringOptionalIANA timezone, or `auto` to infer it from the coordinates. auto
forecast_daysintegerOptionalHow many days ahead to forecast, 1 to 16. Defaults to 7. 3

Response fields

latitude / longitudefloat
The grid point actually used, which is snapped to the model grid and so differs slightly from what you requested.
timezonestring
Resolved timezone name for the returned timestamps.
currentobject
Object holding one key per variable you requested, plus a `time` stamp.
current_unitsobject
The unit string for each variable in `current` — read this rather than assuming Celsius.
elevationfloat
Elevation in metres of the model grid cell, useful for sanity-checking mountain forecasts.

What you can build with the Open-Meteo API

  • Show a live weather widget on a dashboard or homepage without managing an API key
  • Build a 7-day forecast screen in a mobile or web app
  • Trigger automations from weather conditions, such as irrigation or delivery scheduling
  • Backfill weather context into analytics using the companion historical archive API
  • Teach HTTP and JSON parsing in a classroom, where handing out API keys is impractical

Common errors and how to fix them

400

A required parameter is missing or malformed — usually `latitude`/`longitude` absent or non-numeric.

Fix: Check both coordinates are present and sent as plain decimals, not strings with degree symbols.

400 + `Cannot initialize ... from invalid String value`

A variable name in `hourly`/`daily`/`current` is misspelled.

Fix: Compare the variable name against the docs; names are snake_case such as `temperature_2m`.

429

Daily request allowance for your IP is exhausted.

Fix: Cache responses — forecasts update hourly at best, so caching for 15-60 minutes is safe and removes most traffic.

Open-Meteo API — frequently asked questions

Is the Open-Meteo API really free with no API key?

Yes. Open-Meteo requires no registration or key for its forecast endpoints, and permits commercial use below roughly 10,000 requests per day. Above that you are expected to move to a paid plan.

How accurate is Open-Meteo?

It aggregates output from national weather models such as NOAA GFS, DWD ICON and Meteo-France ARPEGE, selecting the highest-resolution model available for each location. Accuracy is comparable to paid consumer weather APIs because the underlying models are the same.

Can I call Open-Meteo directly from browser JavaScript?

Yes. The API sends permissive CORS headers, so a plain fetch() from front-end code works without a proxy. Because there is no key, there is also no secret to leak by doing so.

How far ahead can Open-Meteo forecast?

Up to 16 days with the `forecast_days` parameter, though skill drops sharply after about 7 days. A separate historical archive API covers dates back to 1940.

Tools that pair with this API

Alternatives to Open-Meteo API

If Open-Meteo does not fit, these weather apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.

APIWhat it doesAuthCORSLast verified
Open-Meteo Air QualityFree air quality API with no key: PM2.5, PM10, ozone, nitrogen dioxide, European and US AQI plus pollen forecasts worldwide. Tested curl example included.No keyYes19 Aug 2026
wttr.inwttr.in is a free console-oriented weather API with no key. Get weather as plain text, ASCII art, PNG or full JSON with one curl command. Live example included.No keyYes19 Aug 2026
Open-Meteo GeocodingFree geocoding API with no key: convert a city or place name into latitude and longitude, with population, country and timezone. Tested curl example and live JSON.No keyYes19 Aug 2026
MET Norway LocationforecastFree Norwegian Meteorological Institute weather API with no key: hourly global forecasts with temperature, wind, pressure and precipitation. Tested example.No keyYes20 Aug 2026
openSenseMapFree citizen weather station API with no key: read any senseBox's sensors and their latest measurements, from temperature and humidity to particulates. Tested example included.No keyYes21 Aug 2026
RainViewerFree weather radar API with no key: a manifest of past and forecast radar frames worldwide, each resolving to standard map tiles you can overlay. Tested example included.No keyYes21 Aug 2026
All Weather APIs

Open-Meteo is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 19 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.