Skip to main content

Enhetsregisteret — alle registrerte enheter

Brønnøysundregistrene logo
BetaNLODPowers 8 viewsNo fixed time range· daily · last ingested 2026-09-14

Enhetsregisteret — alle registrerte enheter

Brønnøysundregistrene · brreg-enheter-alle

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).

Provenance​

PublisherBrønnøysundregistrene
Upstream IDenhetsregisteret
LicenseNLOD
PeriodicityP1D
EU Data ThemeGOVE
AttributionInneholder data under norsk lisens for offentlige data (NLOD) tilgjengeliggjort av Brønnøysundregistrene
Last ingested2026-09-14T11:24:49.919574+00:00 · 1,174,030 rows · 1 run
Methodology
Source file: GET https://data.brreg.no/enhetsregisteret/api/enheter/lastned — one gzipped, pretty-printed JSON array, regenerated daily. Measured 2026-09-11: 210,132,682 bytes compressed, 2,005,028,121 uncompressed, 1,173,878 records. It is not newline-delimited, so the loader streams it with a depth-aware scanner and parses one element at a time; the whole register loads in ~33 MB of resident memory. 🔴 One thing this load deliberately does not do. The reference implementation (terchris/shadow-brreg) converted the JSON to pipe-delimited CSV and stripped every `|` from the source first, so any organisation with a pipe in its name or address was silently altered. There is no delimited format anywhere in Atlas's path, and a test asserts a record containing a pipe, a newline and a double quote survives byte-identical. The bulk file and the live API do not agree exactly: on 2026-09-11 the file held 1,173,878 records against the API's 1,174,098 — a 220-record gap, the day's churn between the file's generation and the query. Closing it is what the change feed is for, not a defect in either number. Personal names appear in this register (roles, sole proprietorships). They are lawfully public: Norwegian law requires the persons connected to a registered organisation to be in the register. That is a ruling from Terje on 2026-09-11, not an assumption made here.

Used in Atlas views​

These Atlas views (api_v1.* PostgREST endpoints) include this dataset in their input. Click through for the sample query, column list, and lineage.

Joined with​

Datasets that co-occur with this one inside Atlas's dbt models — the datasets you'd typically combine with this one in a real query.

🤝 NGO supply
Frivillighetsregisteret — frivillige organisasjoner
Brønnøysundregistrene · brreg-frivillige
Joined in 12 models: dim_brreg_enhetindicators__lottstift_momskompensasjonint_ngo_chapter_registry_match + 9 more
🏛️ Organisations register
Enhetsregisteret — oppdateringer (endringsfeed)
Brønnøysundregistrene · brreg-oppdateringer
Joined in 12 models: dim_brreg_enhetindicators__lottstift_momskompensasjonint_ngo_chapter_registry_match + 9 more
🗺️ Reference geographies
Standard for kommuneinndeling
Statistisk sentralbyrå · ssb-klass-kommuner
Joined in 4 models: mart_atlas_inventorymart_kommune_ngo_summarymart_kommune_ngo_totals + 1 more
🏛️ Organisations register
Enhetsregisteret — underenheter (alle)
Brønnøysundregistrene · brreg-underenheter
Joined in 3 models: int_ngo_chapter_subunitsmart_atlas_inventorymart_ngo_chapter_subunits
🤝 NGO supply
Momskompensasjon for frivillige organisasjoner — oversikt over tildelinger
Lotteri- og stiftelsestilsynet · lottstift-momskompensasjon
Joined in 3 models: indicators__lottstift_momskompensasjonmart_atlas_inventorymart_indicators__lottstift_momskompensasjon
🏥 Health
Alkohol_Ungdata_KH
Folkehelseinstituttet · fhi-alkohol
Joined in 2 models: mart_atlas_inventorymart_unattributed_totals
👥 Demographics
Befolkningssammensetning_antall_andel
Folkehelseinstituttet · fhi-befolkning
Joined in 2 models: mart_atlas_inventorymart_unattributed_totals
👥 Demographics
Befolkningsvekst
Folkehelseinstituttet · fhi-befolkningsvekst
Joined in 2 models: mart_atlas_inventorymart_unattributed_totals

Dimensions​

CodeMeaningValue formatNotes
organisasjonsnummerThe organisation's nine-digit national identifier, and the table's primary key9 digits, leading zeros significant — always text, never a numberStable for the life of the organisation and retained after deletion from the register, which is why it is a safe join key and why the change feed can address a row that no longer has a live entity behind it. Storing it as an integer loses leading zeros; several real orgnr begin with 0.
docThe upstream Enhet object exactly as Brreg published itjsonb object, ~30 top-level keys, several nestedNot flattened and not indexed. Contains navn, organisasjonsform, forretningsadresse, naeringskode1..3, registreringsdatoEnhetsregisteret, konkurs / underAvvikling flags and more. A GIN index over it was measured at +42% storage (~0.8 GB) for an access pattern nothing uses — see the migration header. Read fields through dbt models, not through jsonb paths in ad-hoc SQL.
snapshot_file_dateThe date of the bulk file this row was loaded fromdate, or null when the download sent no Last-ModifiedProvenance of the transfer, not of the organisation. The organisation's own registration and update dates live inside doc. Null is honest — a guessed date would be worse than an absent one.
loaded_atWhen Atlas last wrote this rowtimestamptzUpdated by every upsert, so it tracks Atlas's load rather than any upstream event. A row whose loaded_at is older than the newest snapshot means the bootstrap did not reach it, not that the organisation is stale.

Sample query​

Live PostgREST query returning the first 5 rows this source publishes. It queries a published api_v1 relation — raw tables are not exposed through the public API.

https://api-atlas.urbalurba.com/brreg_enhet?limit=5

Citation​

Recommended citation
Brønnøysundregistrene. (n.d.). Enhetsregisteret — alle registrerte enheter. Retrieved from https://data.brreg.no/enhetsregisteret/api/dokumentasjon. Available in Atlas at https://atlas.sovereignsky.no/datasets/brreg-enheter-alle.
BibTeX
@misc{atlas_brreg_enheter_alle,
author = {Brønnøysundregistrene},
title = {Enhetsregisteret — alle registrerte enheter},
year = {n.d.},
url = {https://data.brreg.no/enhetsregisteret/api/dokumentasjon},
note = {Available in Atlas at https://atlas.sovereignsky.no/datasets/brreg-enheter-alle}
}
Permalink
https://atlas.sovereignsky.no/datasets/brreg-enheter-alle

About this source​

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).