Datasets
Atlas has its datasets from SSB, FHI, Bufdir, and Norwegian NGO supply sources. Full-text search runs over titles, descriptions, keywords, and publisher names. The facet sidebar narrows by provider, geography, cadence, lifecycle status, and EU data theme.
For curated entry points, browse by topic or by publisher.
Enhetsregisteret — alle registrerte enheter
Brønnøysundregistrene's Enhetsregisteret holds every legal entity registered in Norway — companies, foundations, associations, public bodies and sole proprietorships — around 1.17 million of them. Brreg regenerates a complete gzipped JSON export daily; Atlas downloads that file, streams it, and stores each record verbatim as jsonb in `raw.brreg_enheter_snapshot`, keyed on organisasjonsnummer. Atlas previously held 122 organisational units, selected by a curated list of 11 NGOs. Holding the whole register instead means any Norwegian organisation can be resolved from its organisasjonsnummer without a new ingest, and it is what makes organisational data from unrelated sources join at all. This is the **bootstrap** load: a complete point-in-time copy. Keeping it current is the change feed's job (PLAN-002, `/oppdateringer/enheter`), which reads only what moved. Underenheter (~867k sub-units) are a sibling register — see `brreg-underenheter`. Nothing is flattened, renamed or re-encoded on the way in. Typed columns for the fields Atlas actually queries are built in dbt (PLAN-003).
Frivillighetsregisteret — frivillige organisasjoner
Brønnøysundregistrene's Frivillighetsregisteret holds the ~72,800 Norwegian organisations registered as voluntary. Atlas walks it in full and stores each record verbatim in `raw.brreg_frivillige`, typing out the registrant's own ICNPO classification. 🔴 This is not where Atlas learns which organisations are voluntary. That flag — `registrertIFrivillighetsregisteret` — is on 100% of Enhetsregisteret's bulk records and true for ~72,798 of them, so the NGO population is derived from the snapshot alone with no second API call. This source exists for the attributes Enhetsregisteret does not carry: `icnpoKategorier`, `grasrotandel`, `innfoertDato`, `vedtekter` and `regnskapsrapportering`. That split was designed in deliberately. If this register becomes unavailable, the membership half of Atlas's NGO population survives untouched and only the enrichment half needs rethinking.
Enhetsregisteret — oppdateringer (endringsfeed)
Brønnøysundregistrene publishes every change to Enhetsregisteret as an ordered feed: one record per change, carrying the organisation number, a change type and a monotonic `oppdateringsid`. Atlas walks it forward daily from a durable watermark, recording each change in `raw.brreg_oppdateringer` and the organisation's document at that moment in `raw.brreg_enheter_versions`. This is what keeps the bulk snapshot (`brreg-enheter-alle`) from going stale. The snapshot is a point in time; a bulk file cannot express a deletion, because absence from a 1.17M-record file is indistinguishable from a truncated download. Deletions arrive here, as `Sletting` and `Fjernet` change types. The feed has no retention window — it reaches back to `oppdateringsid` 1 in April 2018 — so a missed day, week or month catches up completely on the next run. Cadence is a freshness choice, not a correctness one.
Enhetsregisteret — underenheter (alle)
Brønnøysundregistrene's underenheter register holds every sub-unit registered under a parent organisation — local branches, establishments and divisions (organisasjonsform BEDR and others) — around 867,000 of them (measured 2026-10-04). Brreg regenerates a complete gzipped JSON export daily; Atlas downloads that file, streams it, and stores each record verbatim as jsonb in `raw.brreg_underenheter_snapshot`, keyed on the sub-unit's own organisasjonsnummer. This is the sibling of brreg-enheter-alle (the parent-entity register) and was named as a follow-on when that source shipped (PLAN-001, INVESTIGATE-all-brreg-organisations.md): deferred until enheter's own bulk+change-feed machinery had run in production, which it has. Some organisations — including local branches of unitary NGOs such as Frelsesarmeen and Kirkens Bymisjon — are registered as underenheter rather than as enheter, so a copy of enheter alone has a population gap exactly where Atlas's NGO work cares (docs/research/ngo-research/ingestion-specs/brreg-underenheter.md). This is the **bootstrap** load: a complete point-in-time copy. Keeping it current is brreg-underenheter-oppdateringer's job (`/oppdateringer/underenheter`), which reads only what moved. Nothing is flattened, renamed or re-encoded on the way in. Typed columns for the fields Atlas actually queries belong in dbt.
Enhetsregisteret — underenheter, oppdateringer (endringsfeed)
Brønnøysundregistrene publishes every change to the underenheter register as its own ordered feed, independent of the enheter feed `brreg-oppdateringer` reads — a real bootstrap run against live data on 2026-10-04 seeded this feed's watermark at 21,390,729, an entirely separate counter from enheter's own feed. Atlas walks it forward from a durable watermark, recording each change in `raw.brreg_underenheter_oppdateringer` and the sub-unit's document at that moment in `raw.brreg_underenheter_versions`. This is what keeps the bulk snapshot (`brreg-underenheter`) from going stale. The snapshot is a point in time; a bulk file cannot express a deletion. Those arrive here, as `Sletting` and `Fjernet` change types — confirmed live 2026-10-04 (a 100-row sample at the current cursor held Ny 51, Endring 35, Sletting 14). The feed reaches back to its own id 1 (2018, same era as the enheter feed), so a missed cycle catches up completely on the next run.

Barnefattigdom kommunemonitor
Barne-, ungdoms- og familiedirektoratet (Bufdir) publishes the Barnefattigdom kommunemonitor on bufdir.no and ships a single bulk ZIP of `Indikator_*.xlsx` workbooks ("last ned hele datasettet"). Atlas downloads that ZIP (URL discovered from the monitor page), parses sheet `Data` in each workbook, and loads kommune- and sub-kommune-level time series into `raw.bufdir_barnefattigdom` so analysts can compare Bufdir's poverty lens with register-based sources such as SSB low-income statistics.

Barnevern kommunemonitor
Barne-, ungdoms- og familiedirektoratet (Bufdir) publishes the Barnevern kommunemonitor on bufdir.no and ships a single bulk ZIP of indicator workbooks ("last ned hele datasettet"), the same mechanism as the sibling Barnefattigdom monitor. Atlas downloads that ZIP (URL discovered from the monitor page), parses sheet `Sheet1` in each standard-coded workbook, and loads kommune- and sub-kommune-level child-welfare time series into `raw.bufdir_barnevern` — contact with, and removal into, the child-welfare system, alongside spending, staffing, and deadline-compliance indicators. Plugs the barnevern axis Report #2 (Child Welfare / Vulnerability Composite) is missing today. One of 24 workbooks in the live bundle (`Turnover_kommunalt barnevern_2016-2024.xlsx`) has a structurally different layout and is excluded — see `parse.ts`'s `isStandardIndicatorWorkbook`.

Alkohol_Ungdata_KH
FHI Folkehelsestatistikk table 332 — share of Ungdata respondents reporting alcohol use one or more times in the past year. Risk-direction youth-substance-use indicator on the Ungdata cohort base.

Befolkningssammensetning_antall_andel
FHI Folkehelsestatistikk table 338 — Befolkningssammensetning. Population counts by region × sex × age band, used as the demographic denominator across other indicators (per-capita rates, age structure).

Befolkningsvekst
FHI Folkehelsestatistikk table 185 — year-over-year population growth per region (counts and percent rates). Pairs with fhi-befolkning (observed) and fhi-prognose (projected) for full historical-and-forecast trajectories.

Personer som bor alene
FHI Folkehelsestatistikk table 187 — "Personer som bor alene". Share of adults (16+) living alone, per region, annual.

Depressive symptomer_Ungdata_KH
FHI Folkehelsestatistikk table 339 — share of youth reporting depressive symptoms in the Ungdata survey, by region × sex × socioeconomic status. Pairs with fhi-livskvalitet on the same Ungdata cohort.

FORTROLIGVENN_Ungdata_KH
FHI Folkehelsestatistikk table 354 — share of Ungdata respondents reporting they have a close confiding friend. Protective-direction social-connectedness indicator from the Ungdata cohort; complements the symptom-side family (depression, painkillers, suicide).

Hasjbruk_Ungdata_KH
FHI Folkehelsestatistikk table 363 — share of Ungdata respondents reporting cannabis use one or more times in the past year. Risk-direction youth-substance-use indicator on the Ungdata cohort base; pairs with fhi-alkohol.

Innvandrere og norskfødte med innv.foreldre _LANDBAK
FHI Folkehelsestatistikk table 175 — population with immigrant background (1st-gen immigrants + Norwegian-born with two immigrant parents) by region × age × country background.

INNVAND_INNVKAT
FHI Folkehelsestatistikk table 932 (INNVAND_INNVKAT) — population by immigrant category (1st-gen / 2nd-gen / combined) per region × age band. Complements fhi-innvandrere (table 175) which has country-origin granularity but no INNVKAT split. Published as table 650 until September 2026, when FHI renumbered it; the series is continuous across that change.

KPR_1
FHI Folkehelsestatistikk table 370 — KPR 1-year. Annual primary-care contact rates from the Kommunalt pasient- og brukerregister, by ICPC-2 code group × region × sex × age. Atlas's first healthcare-utilisation source; complements self-reported survey data from Ungdata.

Livskvalitet_Ungdata_KH
FHI Folkehelsestatistikk table 373 — youth quality-of-life from Ungdata, by region × sex × year. Sample-based regional aggregation; no count/rate measure, only standardised SMR + smoothed MEIS.

Mediebruk_SOME_Ungdata_KH
FHI Folkehelsestatistikk table 602 — share of Ungdata respondents reporting more than 3 hours per day on social media. The most analytically interesting of FHI's three screen-time tables: social-media use has the strongest mental-health-outcome correlation in the youth-research literature.

Mediebruk_DataTVspill_Ungdata_KH
FHI Folkehelsestatistikk table 601 — share of Ungdata respondents reporting more than 3 hours per day on computer / TV / gaming. One of three FHI screen-time tables (alongside SOME social-media + underhold streaming) — risk-direction time-budget indicator on the Ungdata cohort.

Mediebruk_underhold_ungdata
FHI Folkehelsestatistikk table 667 — share of Ungdata respondents reporting more than 3 hours per day on streaming / entertainment media (TV streaming, music, podcasts, etc.). Companion to fhi-mediebruk-spill and fhi-mediebruk-some on the Ungdata cohort.

Mobbing, 7. og 10. klasse, 3-årige tall
FHI Folkehelsestatistikk table 377 — Mobbing, 7. og 10. klasse, 3-årige tall. Share of pupils reporting bullying in 7th and 10th grade, 3-year rolling averages per region.

NEET_UTDANN
FHI Folkehelsestatistikk table 809 — NEET (Not in Education, Employment, or Training) share among young people, broken down by age band × parents' education level.

Befolkningsframskriving
FHI Folkehelsestatistikk table 171 — population projections (Befolkningsframskriving) by region × age band × forecast year. Pairs with fhi-befolkning (table 338) so observed and projected trajectories splice naturally.

Selvmord femårig
FHI Folkehelsestatistikk table 344 — suicide deaths per region, 5-year rolling windows, by sex and age band. Smoothed MEIS indicator only (raw rates are too noisy at kommune level due to small samples). Sensitive — downstream consumers should follow FHI's veileder for omtale av selvmord.

Smertestillende_ungdata
FHI Folkehelsestatistikk table 390 — share of Ungdata respondents using painkillers at least weekly. Marker of chronic pain / psychological distress in adolescents. Same Ungdata cohort base as fhi-livskvalitet, fhi-depresjon, fhi-mobbing.

Trangbodd_UTDANN
FHI Folkehelsestatistikk table 794 — Trangbodd_UTDANN. Share of population living in overcrowded housing by region × age × education × housing-status × measure.

Gjennomforing i videregående skole (utdann_3)
FHI Folkehelsestatistikk table 360 — Gjennomforing i videregående skole (utdann_3). Upper-secondary completion rate per region × sex × parents' education × immigration category.
Statistikkbank — Bostøtte
Husbanken publishes bostøtte (housing allowance) application counts, decision counts, payout counts, rejection counts and the paid-out kroner amount, per kommune, per year, through its public "Statistikkbank" Qlik Sense app. Atlas reaches this over the Qlik Engine API (WebSocket JSON-RPC 2.0, officially documented by Qlik), not Power BI as an earlier investigation assumed — see atlas-data/ingest/src/sources/husbanken-bostotte/README.md for the full mechanism, including why a single-page hypercube fetch fails and the paginated fetch this source uses instead.

Bosettingstall
Integrerings- og mangfoldsdirektoratet (IMDi) publishes kommune-level refugee resettlement figures — how many people a kommune was asked to resettle, agreed to resettle, actually resettled, and resettled under collective protection — one page per year, linked from the bosettingstall hub page. Atlas discovers every year currently linked (2022 through 2026 as of this source's introduction) and loads the "Oversikt over bosettingen i kommunene i <year>" section of each into raw.imdi_bosetting. IMDi publishes kommune names only, no codes — kommune_nr resolution happens downstream via the existing crosswalk_kommune_name model, not in ingest.
Momskompensasjon for frivillige organisasjoner — oversikt over tildelinger
Lotteri- og stiftelsestilsynet (Lottstift) administers the state's annual VAT-compensation scheme for voluntary organisations — reimbursing a share of the VAT a voluntary organisation pays on its own purchases. Atlas ingests, per organisation per year, the final awarded/paid amount for the six years (2019-2024) whose published file carries a usable recipient organisasjonsnummer. Atlas's first Lottstift source. Not the `tilskudd.lottstift.no` search app an earlier investigation pointed at (no public API found there) — the real mechanism is Lottstift's own direct static XLSX downloads at `lottstift.no/nb/om-oss/apne-data/`. Geography and ICNPO category are resolved by joining the recipient's organisasjonsnummer against Atlas's own `dim_brreg_enhet` (already populated via the separate, already-shipped `brreg-frivillige` source), not from this file's own inconsistent per-year text columns.
AAP155 Mottakere av arbeidsavklaringspenger. Kommune.
NAV (Arbeids- og velferdsetaten) publishes AAP155 on its arbeidsavklaringspenger (AAP — work-assessment allowance, a transitional benefit paid while NAV assesses someone's capacity for work) statistics page: the count and share of the population receiving AAP, per kommune, as one xlsx workbook covering every month of the current calendar year to date. Atlas downloads that workbook (URL discovered from the page — a relative `/_/attachment/inline/...` link, re-resolved each run since it changes with every release) and loads the `1. Kommune. Antall` and `2. Kommune. Andel` sheets into `raw.nav_aap`. Atlas's second NAV source and second monthly-cadence source, reusing the `monthly_sources_refresh` job built for `nav-uforetrygd`. v1 tracks the live current-year file only; whether a historical archive exists for this specific table was checked and not found (unlike `nav-uforetrygd`'s PST302, which has one) — backfill is unresolved, not just deferred by convention.
HL060 Helt ledige. Fylke og kommune. Tidsserie måned.
NAV (Arbeids- og velferdsetaten) publishes HL060 on its helt-ledige (fully unemployed) statistics page: the count and share of the labour force registered as fully unemployed, per kommune, as one xlsx workbook covering every month of the current calendar year to date. Atlas downloads that workbook (URL discovered from the page — a relative `/_/attachment/download/...` link, re-resolved each run since it changes with every release) and loads the `3. Kommune Antall` and `4. Kommune Prosent av arbeidsst` sheets into `raw.nav_helt_ledige`. Atlas's fourth NAV-adjacent source, and the third source on the `monthly_sources_refresh` Dagster job built for `nav-uforetrygd` and already reused by `nav-aap` — no new job. v1 tracks the live current-year file only; whether a historical archive exists for this specific table was checked and found inconclusive from a static-HTML scan (same as `nav-aap`, unlike `nav-uforetrygd`'s clean archive) — backfill is deferred, not resolved.
PST302 Mottakere av uføretrygd. Antall og andel av befolkningen 18-67 år. Fylke. Kommune.
NAV (Arbeids- og velferdsetaten) publishes PST302 on its monthly uføretrygd (disability benefit) statistics page: the count and share of the population aged 18-67 receiving uføretrygd, per kommune and fylke, as one xlsx workbook covering every month of the current calendar year to date. Atlas downloads that workbook (URL discovered from the monitor page — a relative `/_/attachment/download/...` link, re-resolved each run since it changes with every release) and loads the `Kommune-bydel. Antall` and `Kommune-bydel. Andel` sheets into `raw.nav_uforetrygd`. Atlas's first monthly-cadence source — a plain `month` column, no `dim_period` infrastructure (none exists in the codebase; see INVESTIGATE-new-norwegian-public-sources.md's 2026-10-01 correction). v1 tracks the live current-year file only; historical backfill (NAV publishes one archive file per past calendar year) is explicitly deferred.
Norges Røde Kors Organizations API — branches + per-branch activities
First NGO-supply ingest. Reads Norges Røde Kors's Organizations API data and writes it to two raw.* tables — chapters and per-chapter activities.
06083: Familier, etter familietype (K) (B) 2005-2025
SSB statistikkbanktabell 06083 — Familier, etter familietype. Family counts by type per region and year.
06913: Endringer i kommuner, fylker og hele landets befolkning (K) 1951-2026
SSB statistikkbanktabell 06913 — Folkemengde 1. januar og endringer i kalenderåret (folketilvekst, fødsler, dødsfall, inn- og utflyttinger).
06944: Inntekt for husholdninger, etter husholdningstype. Antall og median. Delområder (K) (B) 2005-2024
SSB statistikkbanktabell 06944 — Inntekt for husholdninger, etter husholdningstype. Median household income, income-tax, and household count per region × household type × year.
06947: Personer i husholdninger med lavinntekt (EU- og OECD-skala). Antall og prosent (K) (B) 2005-2024
SSB statistikkbanktabell 06947 — Personer i husholdninger med lavinntekt (EU- og OECD-skala). Whole-population complement to ssb-08764 (children only).
07459: Alders- og kjønnsfordeling i kommuner, fylker og hele landets befolkning (K) 1986-2025
SSB statistikkbanktabell 07459 — Alders- og kjønnsfordeling i kommuner, fylker og hele landets befolkning.
08764: Personer under 18 år i husholdninger med lavinntekt (EU- og OECD-skala). Antall og prosent (K) (B) 2005-2024
Ingestion module for SSB statistikkbanktabell 08764 — Personer under 18 år i husholdninger med lavinntekt (EU- og OECD-skala).
09429: Utdanningsnivå, etter kommune og kjønn (K) 1970-2024
SSB statistikkbanktabell 09429 — Utdanningsnivå, etter kommune og kjønn. Educational attainment distribution per kommune × education level × sex × year.
10501: Personer, etter jentenavn og guttenavn 2013-2025
Persons by first name, per year — 2,152 first names used by 200 or more persons in Norway at year-end, 2013-2025. NOT an exhaustive name list: a name held by fewer than 200 people never appears. Added as a reference list for identifying Norwegian first names in free text.
10826: Alders- og kjønnsfordeling for befolkningen i bydeler (B) 2001-2026
SSB statistikkbanktabell 10826 — Alders- og kjønnsfordeling for befolkningen i bydeler.
12063: Kommunale fritidstilbud (K) 2015-2024
SSB KOSTRA 12063 — Kommunale fritidstilbud. Municipal leisure services for children/youth and counts of volunteer youth associations receiving public support.
12131: Stønadssatser for sosialhjelp og vedtakstidspunkt (K) 2015-2024
SSB KOSTRA 12131 — Stønadssatser for sosialhjelp. Monthly social-assistance rates set by each kommune. Same KOSTRA pattern as ssb-12292/12063.
12132: Utgifter som inngår i stønadssatsene for økonomisk sosialhjelp (K) 2015-2024
SSB KOSTRA 12132 — Utgifter som inngår i stønadssatsene for økonomisk sosialhjelp. Per-kommune rules showing whether child benefit / children's own income / cash-for-childcare are counted as income when calculating welfare payments. Structural-disadvantage proxy.
12292: Omsorgstjenester - supplerende grunnlagstall (K) 2015-2024
SSB KOSTRA 12292 — Omsorgstjenester (supplerende grunnlagstall). Nursing-home and home-care service indicators per kommune.
12451: Bostedskommune- og kjønnsfordelt sykefravær (legemeldt) for lønnstakere (K) 2000K2-2026K2
SSB table 12451 — legemeldt (physician-certified) sick-leave, percentage and lost workdays, per kommune of residence, quarterly. Atlas's third NAV-adjacent welfare-claim source (after `nav-uforetrygd` and `nav-aap`), but reached through SSB's PXWebAPI rather than a NAV Excel download — NAV's own sykefravær/sykepenger statistics pages publish no kommune-level table at all (checked live 2026-10-02; every downloadable table there is fylke-level or coarser). SSB republishes NAV's underlying register data at kommune resolution instead. Fetched via this project's existing `lib/pxweb.ts` client — the same mechanism every other `ssb-*` source uses, not a new NAV-family parser. v1 scope: `Sykefraversprosent` and `Sykefraversdagsverk` only (two of the table's nine measures — the rest are a different metric family or pure year-over-year deltas, deferred, see PLAN-013 [Q2]), `Kjonn=0` (Begge kjønn total, not the sex-split), full `Tid` history (105 quarters, 2000K2-2026K2).
12891: Etternavn brukt av 200 personer eller flere 2018-2025
Surnames used by 200 or more persons in Norway, per year — 3,706 surnames, 2018-2025. NOT an exhaustive surname list: Norwegian naming law protects surnames held by 200 or fewer people, which is exactly why this table's threshold sits there. Added as a reference list for identifying Norwegian surnames in free text, alongside ssb-10501 (first names).
12944: Personer i husholdninger med vedvarende lavinntekt (EU-skala 60 prosent), etter alder. Treårsperiode (K) (B) (2011-2013)-(2022-2024)
Ingestion module for SSB statistikkbanktabell 12944 — Personer i husholdninger med vedvarende lavinntekt (EU-60), 3-årsperiode.
13995: Sosialhjelpstilfeller, utbetalt beløp og stønadstid (K) 2022-2024
SSB statistikkbanktabell 13995 — Sosialhjelpstilfeller, utbetalt beløp og stønadstid. Per-kommune counts of social-assistance cases and recipients, payouts, and support duration.
SSB lovbruddsstatistikk (08484, 08487, 09405, 09406) — anmeldte og etterforskede lovbrudd
SSB PxWeb bundle: reported offences (08484 national detail, 08487 by place of offence / two-year averages), investigated offences with police disposition (09405), investigated counts and clearance rate (09406).
Standard for fylkesinndeling
SSB Klass classification 104 — Fylker. The canonical active-fylker list. Feeds dim_fylke.
Standard for kommuneinndeling
SSB Klass classification 131 — Kommuner. The canonical active-kommuner list. Sourced from SSB's classification registry (Klass), not from a statbank table.

Elevundersøkelsen - mobbing (EUG)
Udir (Utdanningsdirektoratet) runs Elevundersøkelsen, an annual nationwide pupil survey on the school learning environment. Atlas ingests its bullying ("mobbing") indicator and the three underlying survey questions, per kommune, per grade (7th and 10th — matching the existing `fhi-mobbing` axis), for the latest school year. Reached via the same real, Swagger-documented "USS — Udirs StatistikkSystem" API (`statistikkportalen.udir.no/api/rapportering`) `udir-gsi` already proved out — Atlas's second Udir source, but a genuinely different response shape: geography is a column/filter dimension here, not the row hierarchy the way `udir-gsi`'s is, so one HTTP call is made per kommune-equivalent region node per grade (~702 calls for the latest year) rather than one call per year. v1 ingests only the mobbing indicator family and only the latest school year; see this source's README for the full reasoning.

Fravær i grunnskole
Udir (Utdanningsdirektoratet) publishes median and average days/hours of documented absence, plus participant count, for 10th-grade pupils only, per kommune, for every available school year. This is Atlas's fourth Udir source and structurally 10th-grade-only — Udir's own `FravaerG` table has no other grade to select, confirmed by its Rapportside's own `gyldigeFiltre` list carrying no `TrinnID` filter at all. A genuinely separate sibling report, `VGO_fravaer` (videregående), is NOT covered by this source: its `EnhetID` hierarchy has no kommune level at all (fylke/school-grain only, confirmed live) — a structural fact about how Norway organises videregående skole (fylkeskommune-run, not kommune-run), not a parsing gap, deliberately deferred pending a cross-cutting decision (see this source's README). Reached via the same real, Swagger-documented "USS — Udirs StatistikkSystem" API (`statistikkportalen.udir.no/api/rapportering`) `udir-gsi`/`udir-elevundersokelsen-mobbing`/ `udir-nasjonale-prover` already proved out. v1 backfills every available year (11, confirmed live) — see this source's README for the correction that led to that decision.

GSI — Elever og skoler
Utdanningsdirektoratet (Udir) publishes GSI (Grunnskolens informasjonssystem) — pupil counts, counts of pupils with individually-tailored instruction, counts of pupils with reinforced Norwegian instruction, and school counts — per kommune, per school year, reported annually as of October 1st. Atlas reaches this through Udir's own statistics API (statistikkportalen.udir.no/ api/rapportering, "USS — Udirs StatistikkSystem"), resolving the current report version and the set of available school years dynamically rather than hardcoding either. The API's own documentation (https://www.udir.no/om-udir/data/) names a different, dead hostname (api.udir-statistikkbanken.no) for a sibling endpoint (Elevundersøkelsen) — the correct host for the system this source actually uses is statistikkportalen.udir.no, found by reading a live error response rather than trusted from the docs page. See atlas-data/ingest/src/sources/udir-gsi/README.md for the full mechanism.

Nasjonale prøver — 5., 8. og 9. trinn
Udir (Utdanningsdirektoratet) publishes Nasjonale prøver (national test) results for engelsk (English), lesing (reading) and regning (numeracy), per kommune, per grade. Atlas ingests the scale-score average, its uncertainty margin, and the participant count, for the latest school year. Two genuinely separate report versions under the same upstream table feed this one source: 5th grade (all three subjects) and "ungdomstrinn" 8th+9th grade (English only at 8th, not 9th — confirmed live). Reached via the same real, Swagger-documented "USS — Udirs StatistikkSystem" API (`statistikkportalen.udir.no/api/rapportering`) `udir-gsi`/`udir-elevundersokelsen-mobbing` already proved out. Atlas's third Udir source, and its first direct learning-outcome signal. v1 ingests the latest school year only; see this source's README for the full reasoning.