Hämta svensk väderdata via API

Publicerad · 5 min läsning

SMHI har riktigt bra väderdata. Det knepiga är att använda den i en app. Du behöver hantera koordinatbaserade uppslag, korta parameterkoder och djupt nästlad JSON innan du kommer fram till själva prognosen.

Den här guiden visar den kortare vägen: ett API-anrop, stadsnamn in och JSON som går att använda direkt.

Problemet med SMHI:s råa API

SMHI:s meteorologiska prognos-API (opendata-download-metfcst) ber dig göra några saker först:

  1. Hitta exakta GPS-koordinater — det finns ingen stadsnamnssökning. "Stockholm" behöver bli lat=59.33&lon=18.07 innan du anropar API:t.
  2. Översätta parameterkoder — temperatur är t, vindhastighet är ws, nederbörd är pmean. Det finns 30+ sådana.
  3. Gå igenom tidsserier — varje tidssteg har sin egen parameterlista. Ingen färdig nulägesrad. Ingen daglig vy.

Rått SMHI API-anrop

Förfrågan
curl "https://opendata-download-metfcst.smhi.se/api/category/pmp3g/version/2/geotype/point/lon/18.07/lat/59.33/data.json"
Svar (förkortat — faktiskt svar är 200KB+)
{
  "approvedTime": "2026-03-12T14:00:00Z",
  "referenceTime": "2026-03-12T12:00:00Z",
  "geometry": { "type": "Point", "coordinates": [[18.07, 59.33]] },
  "timeSeries": [
    {
      "validTime": "2026-03-12T15:00:00Z",
      "parameters": [
        { "name": "t", "levelType": "hl", "level": 2, "unit": "Cel", "values": [4.2] },
        { "name": "ws", "levelType": "hl", "level": 10, "unit": "m/s", "values": [3.1] },
        { "name": "pmean", "levelType": "hl", "level": 0, "unit": "kg/m2/h", "values": [0.0] },
        { "name": "Wsymb2", "levelType": "hl", "level": 0, "unit": "category", "values": [3] }
        // ... 20+ fler parametrar
      ]
    }
    // ... 100+ fler tidssteg
  ]
}

En enkel fråga som "vad är temperaturen i Stockholm?" blir snabbt ett litet parsprojekt: koordinater, anrop, timeSeries, parameteruppslag och till slut values[0].

Mycket jobb för ett värde.

Apiverket-sättet

SMHI direkt

// 1. Geokoda stadsnamn på något sätt
const lat = 59.33, lon = 18.07;

// 2. Hämta rå SMHI-data
const res = await fetch(
  \`https://opendata-download-metfcst
  .smhi.se/api/category/pmp3g
  /version/2/geotype/point
  /lon/${lon}/lat/${lat}
  /data.json`
);

// 3. Parsa kryptiskt svar
const data = await res.json();
const now = data.timeSeries[0];
const temp = now.parameters
  .find(p => p.name === "t")
  .values[0];

Apiverket

const res = await fetch(
  "https://apiverket.se/v1/weather" +
  "/Stockholm/forecast",
  {
    headers: {
      Authorization:
        "Bearer sk_live_YOUR_KEY"
    }
  }
);

const { data } = await res.json();
// data.current.temperature = 4.2
// data.current.description = "Partly cloudy"
// data.forecast = [{day, high, low, ...}]

Ett anrop istället för ett parsprojekt. Apiverket hanterar geokodning, parametermappning och svarsformatering. Du får stadsnamnssökning, läsbara beskrivningar och dagliga prognossammanfattningar.

Vad du får

Anropa /v1/weather/{city}/forecast så får du det de flesta appar behöver:

Exempelsvar

{
  "meta": {
    "request_id": "req_abc123",
    "api_version": "2026-02-15",
    "mode": "live",
    "sources": [{
      "agency": "smhi",
      "fetched_at": "2026-03-12T14:30:00Z",
      "cache_ttl": 600,
      "freshness": "live"
    }]
  },
  "data": {
    "city": "Stockholm",
    "coordinates": { "lat": 59.33, "lon": 18.07 },
    "current": {
      "temperature": 4.2,
      "feels_like": 1.8,
      "humidity": 72,
      "wind_speed": 3.1,
      "wind_direction": "SW",
      "description": "Partly cloudy",
      "symbol": 3
    },
    "forecast": [
      {
        "date": "2026-03-12",
        "high": 6.1,
        "low": 1.3,
        "precipitation_mm": 0.0,
        "description": "Partly cloudy"
      }
      // ... 9 dagar till
    ]
  }
}

Tillgängliga väderendpoints

Endpoint Beskrivning
/v1/weather/{city}/forecast10-dygnsprognos för valfri svensk stad
/v1/weather/{city}/currentAktuella förhållanden med observationer
/v1/weather/alertsAktiva SMHI-vädervarningar
/v1/weather/forecast?lat=X&lon=YPrognos via GPS-koordinater

Testa nu

Du kan testa med sandbox-nyckeln direkt. Ingen registrering krävs.

curl -H "Authorization: Bearer sk_test_demo" \
  https://apiverket.se/v1/weather/Stockholm/forecast

Testläge returnerar sandboxdata med samma form som live-svaren. När du vill ha riktig SMHI-data kan du registrera dig gratis och använda en sk_live_-nyckel.

Bygg med svensk väderdata

Börja i testläge. Byt till live-data när du är redo.

Öppna API-dokumentationen

Se prisplaner — gratisplanen inkluderar 200 anrop/dag