BYTETOOLS

MET Norway Locationforecast API

Free Norwegian Meteorological Institute weather API with no key: hourly global forecasts with temperature, wind, pressure and precipitation. Tested example.

No API key requiredCORS enabledHTTPSFree tier

Endpoint tested and returned HTTP 200 on 2026-08-20

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 2026-08-20, 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
curl 'https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=60.10&lon=9.58'
JavaScript (fetch)
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);
Python (requests)
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())
Response — HTTP 200
{
  "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

ParameterTypeRequiredDescription
lat / lonfloatRequiredCoordinates, limited to 4 decimal places. 60.10
altitudeintegerOptionalAltitude in metres, improves accuracy. 70
User-AgentheaderRequiredYour app name and contact address. Mandatory. MyApp/1.0 you@example.com
compact / completepathOptionalcompact 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

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