Open-Meteo API

Beginner's Pick Weather / No Auth Required Beginner HTTPS CORS
Free to Use 600 calls/minute, 5,000 calls/hour, 300,000 calls/month
75 B
Measured Score 0 50 100 Speed 12/30 Consistency 20/20 Security 20/20 Browser access 15/15 Transparency 8/15 TESTED 2026-08-10

Overview

Open-Meteo is a completely free and open-source weather API for non-commercial use that provides hourly and daily forecasts, historical data, and climate projections for any location worldwide without requiring an API key. You can start making requests immediately with just a latitude and longitude. It is one of the best beginner weather APIs due to its simplicity, generous free tier, and excellent documentation.

Beginner Tip

No sign-up or API key is needed — just provide latitude and longitude and a list of the weather variables you want. The hourly parameter accepts a comma-separated list like temperature_2m,precipitation,wind_speed_10m to customize the response.

Measurement Record

What actually happened when we called this API from our own infrastructure. Every value below was recorded by the request, not copied from the provider's documentation.

Request
GET https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&hourly=temperature_2m,precipitation,wind_speed_10m
Result
HTTP 200 · application/json · 5,935 bytes · compressed
Response time
296 ms (median of 3) · fastest 289 ms
Transport
TLSv1.3 · TLS_AES_256_GCM_SHA384 · certificate issued by Let's Encrypt
Browser CORS
Allowed — Access-Control-Allow-Origin: *
Recorded
2026-08-10

Fields Returned

Top-level fields present in the response we captured, with the type and value we actually received.

Field Type Value received
latitude number 52.52
longitude number 13.419998
generationtime_ms number 4.540562629699707
utc_offset_seconds integer 0
timezone string GMT
timezone_abbreviation string GMT
elevation integer 38
hourly_units object {4 fields}
hourly object {4 fields}

Captured Response

Captured from a real request to https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&hourly=temperature_2m,precipitation,wind_speed_10m on 2026-08-10. Long arrays and nested objects are truncated to keep the shape readable.

JSON Response · Captured
{
  "latitude": 52.52,
  "longitude": 13.419998,
  "generationtime_ms": 4.540562629699707,
  "utc_offset_seconds": 0,
  "timezone": "GMT",
  "timezone_abbreviation": "GMT",
  "elevation": 38,
  "hourly_units": {
    "time": "iso8601",
    "temperature_2m": "°C",
    "precipitation": "mm",
    "wind_speed_10m": "km/h"
  },
  "hourly": {
    "time": [
      "2026-08-10T00:00"
    ],
    "temperature_2m": [
      23.7
    ],
    "precipitation": [
      0
    ],
    "wind_speed_10m": [
      6.2
    ]
  }
}

Field Reference

latitude Latitude of the nearest grid point used for the forecast.
longitude Longitude of the nearest grid point used for the forecast.

Implementation Example

Calls a real endpoint of this API. Replace any placeholder credentials with your own key.

Request
// Get current weather and forecast by coordinates (no API key required)
const url = "https://api.open-meteo.com/v1/forecast?latitude=52.52&longitude=13.41&current_weather=true&hourly=temperature_2m,precipitation";

const response = await fetch(url);
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();

console.log(`Current Temperature: ${data.current_weather.temperature}°C`);
console.log(`Wind Speed: ${data.current_weather.windspeed} km/h`);
console.log(`Weather Code: ${data.current_weather.weathercode}`);
console.log(`Hourly forecast available for ${data.hourly.time.length} hours`);

What Can You Build?

Note: These code examples are AI-generated and unverified. Always refer to the official API documentation for accurate usage.

How This API Fails

We deliberately sent this API a broken request and recorded exactly what came back on 2026-08-10. Knowing the shape of an error before you hit it makes error handling much easier to write.

HTTP 404 Requesting a path that does not exist application/json
{
  "reason": "Not Found",
  "error": true
}
HTTP 400 Sending an invalid value for "latitude" application/json
{
  "error": true,
  "reason": "Data corrupted at path ''. Cannot initialize Float from invalid String value !!!invalid!!!."
}

Common Errors & Troubleshooting

Generated guidance based on this API's documentation, not observed by us. Treat it as a starting point and check against the provider's own error reference.

Empty hourly object in response No weather variables were specified in the hourly or daily parameter.
Add at least one variable to the hourly parameter, e.g., hourly=temperature_2m.
Coordinates out of bounds Latitude or longitude values are outside the valid range (-90 to 90 and -180 to 180).
Double-check that latitude and longitude are not accidentally swapped and are valid decimal numbers.
Large response or slow parsing Many variables were requested over a long time range.
Limit the forecast window with start_date and end_date parameters, or request fewer variables.

Measured Score Breakdown

Live HTTP request to the API endpoint

Speed 12/30
Consistency 20/20
Security 20/20
Browser access 15/15
Transparency 8/15
Endpoint Response Time 296ms

Fully tested on Aug 10, 2026

Technical Specifications

Auth No Auth
HTTPS REQUIRED
CORS YES
Category Weather
Difficulty Beginner
Endpoint last called: 2026-08-10

Alternatives to Open-Meteo

Technical alternatives for different use cases.

Simple astronomical and weather forecast, no auth required

Better For

Astronomy-related weather forecasts

Trade-off

Detailed current conditions and historical data

Includes air quality data with no API key required

Better For

Real-time AQI station-level reporting

Trade-off

Quick prototyping of air quality features

More features like weather alerts and air pollution data

Better For

Apps needing weather alerts and push notifications

Trade-off

Cost-sensitive projects (requires paid plan for serious use)

No API key needed, fully open-source weather data

Better For

Production apps needing guaranteed uptime

Trade-off

Quick prototyping without registration

Recipes Using Open-Meteo

Build something with this API. Each recipe includes step-by-step instructions and code outlines.

Similar APIs

View All →