Hoppa till innehåll
SVERIGEFAKTA.com

API 1.0

Sverigefaktas öppna data-API

Ett skrivskyddat HTTP-API ovanpå exakt samma verifierade lager som driver webbplatsen: observationer, mått, kommuner, ranking, jämförelser och revisionsloggen. Ingen endpoint räknar något eget.

SF-ID

Varje observation har ett permanent ID på formen SF.<METRIC>.<GEO>.<PERIOD>. Samma ID används av webbplatsen, API:t, inbäddningarna och MCP-verktygen, på båda språken.

SF.FOLKMANGD.0180.2024
SF.FOLKMANGD.1280.2024

Endpoints

  • GET /api/v1/observations/{sf-id}

    En verifierad observation med råvärde, enhet, källa och proveniens.

    https://sverigefakta.com/api/v1/observations/SF.FOLKMANGD.0180.2024
  • GET /api/v1/observations

    Bounded kollektion för en kommun. Filter: geo (krävs), metric, amne, period, from, to, limit.

    https://sverigefakta.com/api/v1/observations?geo=0180&metric=folkmangd&from=2015&to=2024
  • GET /api/v1/metrics

    Måttkatalog med titlar, enheter, källa, KPI-ID, registrerade alias och capabilities. Endast publikt godkända mått (fail closed).

    https://sverigefakta.com/api/v1/metrics?query=folkmangd
  • GET /api/v1/metrics/{metric}

    Provenance för ett publikt mått: utgivare, officiell titel, KPI-ID, dataset-referens, käll-URL, geografi- och periodsemantik. Okänt eller icke-publikt mått ger 404.

    https://sverigefakta.com/api/v1/metrics/koladats-arbetsloshet-18-65
  • GET /api/v1/municipalities

    Kommunregistret: kod, namn, slug och län. Exakt träff markeras separat.

    https://sverigefakta.com/api/v1/municipalities?query=Malmö
  • GET /api/v1/rankings

    Rankingmotorn: gemensam period, konkurrensrankning och täckningsgate på 90 %.

    https://sverigefakta.com/api/v1/rankings?metric=folkmangd&limit=10
  • GET /api/v1/compare

    Jämför 2–4 kommuner. Endast gemensam period och samma enhet — aldrig blandade år.

    https://sverigefakta.com/api/v1/compare?municipalities=stockholm,malmo&metrics=folkmangd
  • GET /api/v1/revisions

    Revisionsloggen med filter på id, kommun, metric, type, after, before och limit.

    https://sverigefakta.com/api/v1/revisions?id=SF.FOLKMANGD.0180.2024

Skrivskyddat, publik data och gränser

  • Endast GET och OPTIONS besvaras. Ingen endpoint kan skapa, importera, applicera eller publicera något.
  • Endast publikt godkända mått ur det canonical registret exponeras. Kan publik status inte fastställas utelämnas måttet (fail closed).
  • Provenance kommer ur befintligt register och befintliga källreferenser — aldrig fabricerad. Okända fält är null.
  • Kollektioner är bounded: observationer har 200 som standard och max 1000 per anrop, mått 20 som standard och max 50. Sorteringen är deterministisk (metric, därefter period).
  • Parametrar utanför intervallet eller i fel format ger 400; okända eller icke-publika resurser ger 404.

Svarsformat

{
  "ok": true,
  "apiVersion": "1.0",
  "license": "CC BY 4.0",
  "docs": "https://sverigefakta.com/api",
  "data": { }
}
{
  "ok": false,
  "apiVersion": "1.0",
  "error": { "code": "not_found", "message": "...", "details": {} }
}

Felkoder

invalid_request
Ogiltig eller okänd parameter.
invalid_metric
Måttet finns inte i registret.
invalid_geo
Okänd kommunkod eller slug.
invalid_period
Perioden är inte ett giltigt årtal.
invalid_range
from är större än to.
ambiguous
Flera kandidater matchar — precisera.
not_found
Ingen verifierad resurs med det ID:t.
insufficient_coverage
Under 90 % täckning — ingen ranking ges.
no_common_period
Kommunerna saknar gemensamt år.
incomparable
Måtten går inte att jämföra.
unsupported
Frågan stöds inte av motorn.
unavailable
Värdet saknas i det verifierade lagret.

Precision och täckning

  • Värden returneras exakt som källan rapporterar dem. API:t avrundar aldrig.
  • NaN och Infinity förekommer aldrig i ett lyckat svar.
  • Ranking kräver minst 90 % kommuntäckning för den gemensamma perioden; under den gränsen returneras insufficient_coverage i stället för en missvisande lista.
  • Jämförelser använder en gemensam period och en enhet för alla kommuner.
  • Locale påverkar endast etiketter och citationstext — aldrig ID, värde, metric, geo, period, källa eller contentHash.

HTTP

  • Endast GET och OPTIONS. Ingen autentisering, inga skrivningar.
  • CORS: Access-Control-Allow-Origin: * utan credentials.
  • Cache: public, max-age=3600, stale-while-revalidate=86400
  • ETag är deterministisk; identisk data ger identisk tagg och 304 vid If-None-Match.

Inbäddningar

Varje datapunkt kan bäddas in skrivskyddat, med källa, period, SF-ID och länk tillbaka till Sverigefakta. Inbäddningar är noindex.

<iframe src="https://sverigefakta.com/embed/observation/SF.FOLKMANGD.0180.2024" title="Sverigefakta" width="100%" height="220" loading="lazy"></iframe>
<iframe src="https://sverigefakta.com/embed/chart?geo=0180&metric=folkmangd" title="Sverigefakta" width="100%" height="360" loading="lazy"></iframe>

Licens och attribution

Sverigefaktas sammanställning, API-svar och inbäddningar publiceras under CC BY 4.0. Ange Sverigefakta och länka till datapunkten. Underliggande data tillhör ursprungsmyndigheten — ange den så som den anges i fältet source, på myndighetens egna villkor.

MCP

Samma verifierade lager finns för AI-assistenter via Sverigefaktas MCP-server, som exponerar identiska skrivskyddade verktyg.