Nordic Statistics
Read curated national statistics tables from Statistics Sweden, Statistics Norway and Statistics Finland.
nordic-statistics Example
{
"office": "SSB",
"table": "07459",
"filters": {
"Region": "0",
"ContentsCode": "Personer1",
"Tid": "2024"
}
} {
"as_of": "2026-11-06T15:17:27.873Z",
"label": "07459: Population, by region, contents and year",
"table": "07459",
"office": "SSB",
"source": "Statistics Norway",
"updated": "2026-02-25T07:00:00.000Z",
"dimensions": [
{
"id": "Region",
"label": "region",
"categories": [
{
"code": "0",
"label": "The whole country"
}
]
},
{
"id": "ContentsCode",
"label": "contents",
"categories": [
{
"code": "Personer1",
"label": "Persons"
}
]
},
{
"id": "Tid",
"label": "year",
"categories": [
{
"code": "2024",
"label": "2024"
}
]
}
],
"source_url": "https://data.ssb.no/api/v0/en/table/07459",
"accessed_at": "2026-11-06",
"licence_note": "Statistics Norway API data is licensed under CC BY 4.0. Attribute Statistics Norway, link the licence, and identify Strale’s reshaping.",
"observations": [
{
"Tid": "2024",
"value": 5550203,
"Region": "0",
"period": "2024",
"ContentsCode": "Personer1"
}
],
"observation_count": 1
} Inputs
| Field | Type | Required | What it is |
|---|---|---|---|
table | string | Yes | A table id from the curated allowlist for the selected office. |
office | one of SCB, SSB, STATFIN | Yes | — |
filters | object | Yes | — |
since_period | string | No | — |
until_period | string | No | — |
Output fields
How reliably each field appears in a successful answer.
| Field | Type | Appears |
|---|---|---|
unit | string | Usually (present for most inputs) |
as_of | string | Always (present in every successful answer) |
label | string | Always (present in every successful answer) |
table | string | Always (present in every successful answer) |
office | string | Always (present in every successful answer) |
source | string | Always (present in every successful answer) |
updated | string or null | Usually (present for most inputs) |
dimensions | array | Always (present in every successful answer) |
source_url | string | Always (present in every successful answer) |
accessed_at | string | Always (present in every successful answer) |
licence_note | string | Always (present in every successful answer) |
observations | array | Always (present in every successful answer) |
observation_count | integer | Always (present in every successful answer) |
How to call it
The same tool through each route. MCP clients reach it through Strale’s server at https://api.strale.io/mcp; the call below is what the agent sends.
# Needs an API key. max_price_cents caps what this call may cost.
curl -X POST https://api.strale.io/v1/do \
-H "Authorization: Bearer $STRALE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"capability_slug": "nordic-statistics",
"inputs": {
"office": "SSB",
"table": "07459",
"filters": {
"Region": "0",
"ContentsCode": "Personer1",
"Tid": "2024"
}
},
"max_price_cents": 3
}' {
"tool": "strale_execute",
"arguments": {
"slug": "nordic-statistics",
"inputs": {
"office": "SSB",
"table": "07459",
"filters": {
"Region": "0",
"ContentsCode": "Personer1",
"Tid": "2024"
}
},
"max_price_cents": 3
}
} import { Strale } from "straleio";
const strale = new Strale({ apiKey: process.env.STRALE_API_KEY! });
const result = await strale.do({
capability_slug: "nordic-statistics",
inputs: {
"office": "SSB",
"table": "07459",
"filters": {
"Region": "0",
"ContentsCode": "Personer1",
"Tid": "2024"
}
},
max_price_cents: 3,
}); import os
from straleio import Strale, DoRequest
strale = Strale(api_key=os.environ["STRALE_API_KEY"])
result = strale.do(DoRequest(
capability_slug="nordic-statistics",
inputs={
"office": "SSB",
"table": "07459",
"filters": {
"Region": "0",
"ContentsCode": "Personer1",
"Tid": "2024",
},
},
max_price_cents=3,
)) # No account. The first request answers 402 with the price in USDC;
# an x402 client pays it from your wallet and repeats the request.
curl -i -X POST https://api.strale.io/x402/v2/nordic-statistics \
-H 'Content-Type: application/json' \
-d '{
"office": "SSB",
"table": "07459",
"filters": {
"Region": "0",
"ContentsCode": "Personer1",
"Tid": "2024"
}
}' Limitations
Curated tables only
Only the listed macroeconomic tables are accepted; there is no table search or arbitrary table access.
Published figures can be revised
Each office may revise observations after retrieval; as_of records when Strale fetched the response.
Requests are capped
No request may select more than 5
Licences and attribution differ
SCB API data is CC0; SSB uses CC BY 4.0; Statistics Finland uses CC BY 4.0 with source table and material-date attribution.
Labels vary by source
English labels can be unavailable for some variables and are then returned as upstream codes.
Not all Nordic countries are covered
This capability covers Sweden Norway and Finland only; Denmark and Iceland are not covered.