SCB Statistik-API utan cellgräns

Publicerad · 4 min läsning

Statistiska centralbyrån (SCB) är Sveriges officiella statistikmyndighet. Deras API ger tillgång till befolkningsdata, branschstatistik, kommunala nyckeltal och mycket mer. Men API:et har en betydande begränsning: ett maximum på 100 000 celler per fråga, och frågor kräver komplexa POST-kroppar med dimensionsval.

Problemet med SCB:s råa API

SCB:s PxWeb-API kräver att du:

  1. Navigerar en tabellhierarki — bläddra genom nästlade mappar för att hitta rätt tabell-ID
  2. Bygger POST-frågekroppar — specificera exakta dimensionsvärden, filterkriterier och svarsformat i JSON
  3. Håller dig under cellgränsen — frågor som överskrider 100 000 celler avvisas. Du måste dela upp stora förfrågningar manuellt.
  4. Parsar px-web-svarsformat — svaret använder SCB:s eget format med separata nyckel/värde-arrayer

Rått SCB API-anrop

Förfrågan (POST med frågekropp)
curl -X POST "https://api.scb.se/OV0104/v1/doris/en/ssd/BE/BE0101/BE0101A/BesijpSNpunktAr" \
  -H "Content-Type: application/json" \
  -d '{
    "query": [
      {
        "code": "Region",
        "selection": { "filter": "item", "values": ["00"] }
      },
      {
        "code": "ContentsCode",
        "selection": { "filter": "item", "values": ["BE0101N1"] }
      }
    ],
    "response": { "format": "json" }
  }'

Tabell-ID:t (BefolkningNy) är inte upptäckbart — du behöver bläddra på SCB:s webbplats eller dokumentation för att hitta det. Och om din fråga spänner över för många regioner × år × variabler misslyckas den tyst.

Apiverket-sättet

SCB direkt (POST)

// 1. Hitta rätt tabell-ID
// 2. Bygg POST-kropp med dimensioner
const res = await fetch(
  "https://api.scb.se/OV0104" +
  "/v1/doris/en/ssd/BE/BE0101" +
  "/BE0101A/BefolkningNy",
  {
    method: "POST",
    headers: { "Content-Type":
      "application/json" },
    body: JSON.stringify({
      query: [{ code: "Region",
        selection: { filter: "item",
          values: ["00"] }}],
      response: { format: "json" }
    })
  }
);

Apiverket (GET)

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

const { data } = await res.json();
// data.population = 10_551_707
// data.year = 2025
// data.by_region = [...]

GET istället för POST. Ingen cellgräns. Inga tabell-ID:n. Apiverket förmappar de mest användbara SCB-tabellerna till intuitiva REST-endpoints och hanterar paginering för stora dataset.

Tillgängliga statistikendpoints

Endpoint Beskrivning
/v1/statistics/populationBefolkningsdata per region och år
/v1/statistics/industryBransch- och företagsstatistik
/v1/demographics/...Åldersfördelning, migration, födslar/dödsfall
/v1/municipalities/{code}Kommunala nyckeltal och statistik

Testa nu

curl -H "Authorization: Bearer sk_test_demo123" \
  https://apiverket.se/v1/statistics/population

Behöver du svensk statistik i din app?

Ren JSON, paginerade resultat, ingen cellgräns. Börja med testnyckeln.

Utforska API-dokumentationen

Se prisplaner — gratisplanen inkluderar 200 anrop/dag