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 2026-08-19

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 2026-08-19, 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

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