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.2024Endpoints
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.2024GET /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=2024GET /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=folkmangdGET /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-65GET /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=10GET /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=folkmangdGET /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.

