Hämta svensk väderdata via API

Publicerad · 5 min läsning

SMHI (Sveriges meteorologiska och hydrologiska institut) erbjuder gratis väderdata via sitt öppna API. Men att arbeta med det direkt innebär att hantera koordinatbaserade uppslagningar, kryptiska parameterkoder och djupt nästlade JSON-strukturer.

Den här guiden visar hur du hämtar svensk väderdata på det enkla sättet — med ett enda API-anrop som returnerar ren, utvecklarvänlig JSON.

Problemet med SMHI:s råa API

SMHI:s meteorologiska prognos-API (opendata-download-metfcst) kräver att du:

  1. Känner till exakta GPS-koordinater — det finns ingen stadsnamnsökning. Du behöver konvertera "Stockholm" till lat=59.33&lon=18.07 själv.
  2. Avkodar parameterkoder — temperatur är t, vindhastighet är ws, nederbörd är pmean. Det finns 30+ parametrar med icke-uppenbara namn.
  3. Parsar nästlade tidsserier — svaret är en platt array av tidssteg, var och en med en array av parameterobjekt. Ingen sammanfattning, ingen daglig aggregering.

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

För att få "Vad är temperaturen i Stockholm?" behöver du: hitta rätt koordinater → göra anropet → loopa genom timeSeries → hitta parametern där name === "t" → extrahera values[0]. Det är mycket boilerplate för en enkel fråga.

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, ...}]

En rad istället för tjugo. Apiverket hanterar geokodning, parametermappning och svarsformatering. Du får stadsnamnsökning, läsbara beskrivningar och dagliga prognossammanfattningar direkt.

Vad du får

Endpointen /v1/weather/{city}/forecast returnerar:

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_demo123" \
  https://apiverket.se/v1/weather/Stockholm/forecast

Testläge returnerar realistisk sandboxdata. När du är redo för riktig data, registrera dig gratis och få en sk_live_-nyckel med 200 anrop per dag.

Redo att bygga med svensk väderdata?

Kom igång på 30 sekunder. Ingen registrering krävs för testläge.

Utforska API-dokumentationen

Se prisplaner — gratisplanen inkluderar 200 anrop/dag