MET Norway Locationforecast API
Free Norwegian Meteorological Institute weather API with no key: hourly global forecasts with temperature, wind, pressure and precipitation. Tested example.
Endpoint tested and returned HTTP 200 on 20 Aug 2026
What is the MET Norway Locationforecast API?
The MET Norway Locationforecast API is a free, key-free weather API from the Norwegian Meteorological Institute, providing detailed hourly global forecasts including temperature, wind, air pressure, humidity and precipitation.
This is the API behind Yr.no, one of the most respected weather services in Europe, run by a national meteorological institute rather than a commercial provider. It is free for any use including commercial, which is unusual for data of this quality.
One condition is strictly enforced: you must send a User-Agent identifying your application with a contact address. Requests with a generic or missing User-Agent are refused outright, and MET will block abusers. Honour the `Expires` header too — re-requesting before it lapses is considered abuse.
Quick facts
- Base URL
https://api.met.no/weatherapi/locationforecast/2.0- Authentication
- No API key, but a descriptive User-Agent with contact details is mandatory and enforced.
- Rate limit
- 20 requests per second, and you must respect the Expires header rather than polling.
- Pricing
- Free for all use including commercial, under a CC BY 4.0 licence with attribution.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the MET Norway Locationforecast API
Every request below was executed against the live API on 20 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. Fetch a compact weather forecast
GET https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=60.10&lon=9.58
curl 'https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=60.10&lon=9.58'const res = await fetch("https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=60.10&lon=9.58");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=60.10&lon=9.58", timeout=20)
res.raise_for_status()
print(res.json()){
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
9.58,
60.1,
496
]
},
"properties": {
"meta": {
"updated_at": "2026-08-19T20:28:20Z",
"units": {
"air_pressure_at_sea_level": "hPa",
"air_temperature": "celsius",
"cloud_area_fraction": "%",
"precipitation_amount": "mm",
"relative_humidity": "%",
"wind_from_direction": "degrees",
"wind_speed": "m/s"
}
},
"timeseries": [
{
"time": "2026-08-19T21:00:00Z",
"data": {
"instant": {
"details": {
"air_pressure_at_sea_level": 998.6,
"air_temperature": 10.0,
"cloud_area_fraction": 39.8,
"relative_humidity": 95.8,
"wind_from_direction": 67.0,
"wind_speed": 0.8
}
},
"next_12_hours": {
"summary": {
"symbol_code": "partlycloudy_day"
},
"details": {}
},
"next_1_hours": {
"summary": {
"symbol_code": "partlycloudy_night"
},
"details": {
"precipitation_amount": 0.0
}
},
"next_6_hours": {
"summary": {
"symbol_code": "partlycloudy_night"
},
"details": {
"precipitation_amount": 0.0
}
}
}
},
{
"time": "2026-08-19T22:00:00Z",
"data": {
"instant": {Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
lat / lon | float | Required | Coordinates, limited to 4 decimal places. 60.10 |
altitude | integer | Optional | Altitude in metres, improves accuracy. 70 |
User-Agent | header | Required | Your app name and contact address. Mandatory. MyApp/1.0 you@example.com |
compact / complete | path | Optional | compact for essential values, complete for every parameter. compact |
Response fields
properties.timeseriesarray- Hourly forecast entries, each with a time and data block.
...data.instant.details.air_temperaturenumber- Temperature in Celsius at that moment.
...data.instant.details.wind_speednumber- Wind speed in metres per second.
...data.next_1_hours.summary.symbol_codestring- Weather symbol code such as `rain` or `partlycloudy_day`.
...data.next_1_hours.details.precipitation_amountnumber- Expected precipitation in millimetres.
properties.meta.unitsobject- Unit for every returned parameter — read it rather than assuming.
What you can build with the MET Norway Locationforecast API
- Build a weather app with institution-grade forecast data
- Show hourly forecasts for any global location
- Drive automation from precipitation and wind thresholds
- Use a licensed, attributable source for commercial weather features
Common errors and how to fix them
403
Missing or generic User-Agent.
Fix: Send a User-Agent naming your app and a contact email. MET enforces this and will block repeat offenders.
203
Deprecation warning — the API version is being retired.
Fix: Treat a 203 as a signal to migrate; the response still works but will not forever.
429
Polling faster than the Expires header allows.
Fix: Cache until Expires lapses; re-requesting sooner is treated as abuse.
MET Norway Locationforecast API — frequently asked questions
Is the MET Norway weather API free?
Yes, free for all use including commercial, under CC BY 4.0 with attribution. It is run by the Norwegian Meteorological Institute.
Why am I getting 403 errors?
Your User-Agent is missing or generic. MET requires one naming your application with a contact address, and enforces it strictly.
How often can I request a forecast?
Respect the `Expires` response header — usually around 30 minutes. Polling more frequently than that is considered abuse and can get you blocked.
How does it compare with Open-Meteo?
Both are free and high quality. Open-Meteo needs no User-Agent and has a simpler parameter model; MET Norway comes directly from a national met institute and is the source behind Yr.no.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
Alternatives to MET Norway Locationforecast API
If MET Norway Locationforecast 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.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| Open-Meteo | 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 key | Yes | 19 Aug 2026 |
| Open-Meteo Air Quality | Free 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 key | Yes | 19 Aug 2026 |
| wttr.in | wttr.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 key | Yes | 19 Aug 2026 |
| Open-Meteo Geocoding | Free 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 key | Yes | 19 Aug 2026 |
| Meteo.lt | Free Lithuanian weather API with no key: hourly long-term forecasts from the national service, with feels-like temperature, gusts and condition codes. Tested example included. | No key | No | 21 Aug 2026 |
| NOAA NCEI Natural Hazards | Free natural hazards API with no key: NOAA's historical tsunami, significant earthquake and volcanic eruption databases, filterable by year, region and magnitude. Tested example included. | No key | Yes | 21 Aug 2026 |
MET Norway Locationforecast is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 20 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.