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 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
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

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.

APIWhat it doesAuthCORSLast verified
Open-MeteoFree 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 keyYes19 Aug 2026
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
Meteo.ltFree 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 keyNo21 Aug 2026
NOAA NCEI Natural HazardsFree 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 keyYes21 Aug 2026
All Weather APIs

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.