api_v1.brreg_enhet
Atlas view
api_v1.brreg_enhet
api_v1.brreg_enhetEvery organisation registered in Norway, mirrored from Brønnøysundregistrene's Enhetsregisteret.
Built from
This Atlas view joins data from the following upstream sources. Click through for provenance, methodology, and citation.
Showing direct dbt parents. See full lineage in /lineage/ →
Columns
| Column | Description |
|---|---|
| organisasjonsnummer | Nine-digit Norwegian organisation number. Text, never a number — leading zeros are significant. Stable for the life of the organisation, and the join key for organisational data from any Norwegian source. |
| navn | Registered name, verbatim from Brreg. For an enkeltpersonforetak (organisasjonsform ENK) this is very often the proprietor's own personal name, because that is how the register records them. |
| organisasjonsform_kode | Legal form code — AS (aksjeselskap), ENK (enkeltpersonforetak), FLI (forening/lag/innretning), STI (stiftelse) and others. The usual filter for separating companies from associations, or for excluding sole proprietorships. |
| organisasjonsform_beskrivelse | Human-readable Norwegian label for organisasjonsform_kode, as Brreg publishes it. |
| naeringskode1_kode | Primary NACE industry code (SN2007), e.g. 94.992. Null for roughly 2% of the register. |
| kommune_nr | Kommune code of the registered business address. For an enkeltpersonforetak the registered business address is commonly the proprietor's home address. Null where no business address is registered (~6%). Some codes are historical or pseudo-regions and will not resolve against a current kommune list. |
| antall_ansatte | Registered employee count. NULL MEANS "NOT REPORTED", NOT ZERO — the field is present on only ~4% of records. Use har_registrert_antall_ansatte to distinguish the two; reading NULL as 0 understates staffed organisations badly. |
| har_registrert_antall_ansatte | Whether Brreg holds a registered employee count at all. Present on 100% of records, and the only way to tell "zero employees" from "no figure reported". |
| konkurs | Whether the organisation is in bankruptcy proceedings. Straight from Brreg. |
| under_avvikling | Whether the organisation is being wound up voluntarily. Straight from Brreg. |
| under_tvangsavvikling | Whether the organisation is under compulsory winding-up or dissolution. |
| is_active | Convenience boolean — true when none of konkurs, under_avvikling or under_tvangsavvikling is set. Means "trading", not "exists": all three states are still registered organisations. Ignore this column if you want everything registered. |
| registrert_i_frivillighetsregisteret | Whether the organisation is in Frivillighetsregisteret, the voluntary-organisation register — true for roughly 72,800 records. This is what makes the Norwegian voluntary sector discoverable as a population rather than a curated list. |
| registrert_dato | Date the organisation was entered in Enhetsregisteret. |
| icnpo_nummer | Primary ICNPO code as the organisation classified itself in Frivillighetsregisteret, e.g. "9100". Null for organisations not in that register, and for members declaring none. Null does not mean "not voluntary" — use registrert_i_frivillighetsregisteret for that. |
| icnpo_kategori | Primary ICNPO category label paired with icnpo_nummer. |
| grasrotandel_deltar_i | Whether the organisation participates in Grasrotandelen, Norsk Tipping's grassroots funding scheme. Null for organisations not in Frivillighetsregisteret. |
| frivillig_innfoert_dato | Date of entry in Frivillighetsregisteret — distinct from registrert_dato, which is the Enhetsregisteret entry. Organisations often exist for years before registering as voluntary. |
| last_seen_at | When the INGEST last wrote this row into Atlas's raw layer, from either the bulk snapshot or a change-feed run. Tracks Atlas's load, not an upstream event. Read it together with reconciled_at — this is the ingest clock, that is the transform clock. |
| reconciled_at | When the TRANSFORM last reconciled this row into the served layer. 🔴 Read both clocks: the change feed polls every half hour and this reconciliation follows ten minutes behind it, so the data behind this endpoint can be older than what Atlas has already ingested. Without both, "current" means different things depending on which table you read — an install once sat 13.5 hours behind Brreg with every health check green. ⚠️ Only organisations that actually changed are re-stamped, so an old value means "nothing about this organisation has changed since then", not "this endpoint is stale". |
| epostadresse | Email address the organisation registered with Brreg. Present on 324,967 of 1,175,334 rows (27.65%), counted 2026-09-24. |
| mobil | Mobile number registered with Brreg. Present on 308,989 of 1,175,334 rows (26.29%), counted 2026-09-24. |
| telefon | Telephone number registered with Brreg. Present on 194,520 of 1,175,334 rows (16.55%), counted 2026-09-24. |
| hjemmeside | Website the organisation registered with Brreg. Present on 114,075 of 1,175,334 rows (9.71%), counted 2026-09-24. |
| registrert_i_mvaregisteret | Whether the organisation is registered in mvaregisteret. Present on 1,175,334 of 1,175,334 rows (100.00%), counted 2026-09-24. |
| registrert_i_foretaksregisteret | Whether the organisation is registered in foretaksregisteret. Present on 1,175,334 of 1,175,334 rows (100.00%), counted 2026-09-24. |
| registrert_i_stiftelsesregisteret | Whether the organisation is registered in stiftelsesregisteret. Present on 1,175,334 of 1,175,334 rows (100.00%), counted 2026-09-24. |
| registrert_i_partiregisteret | Whether the organisation is registered in partiregisteret. Present on 1,175,334 of 1,175,334 rows (100.00%), counted 2026-09-24. |
| er_i_konsern | Whether Brreg records the organisation as part of a group (konsern). Present on 1,175,334 of 1,175,334 rows (100.00%), counted 2026-09-24. |
| stiftelsesdato | Date Brreg records for this event. Present on 676,822 of 1,175,334 rows (57.59%), counted 2026-09-24. |
| vedtektsdato | Date Brreg records for this event. Present on 491,178 of 1,175,334 rows (41.79%), counted 2026-09-24. |
| registreringsdato_foretaksregisteret | Date Brreg records for this event. Present on 577,303 of 1,175,334 rows (49.12%), counted 2026-09-24. |
| registreringsdato_merverdiavgiftsregisteret | Date Brreg records for this event. Present on 410,226 of 1,175,334 rows (34.90%), counted 2026-09-24. |
| registreringsdato_mva_enhetsregisteret | Date Brreg records for this event. Present on 410,230 of 1,175,334 rows (34.90%), counted 2026-09-24. |
| registreringsdato_frivillig_mva | Date Brreg records for this event. Present on 49,032 of 1,175,334 rows (4.17%), counted 2026-09-24. |
| registreringsdato_frivillighetsregisteret | Date Brreg records for this event. Present on 72,826 of 1,175,334 rows (6.20%), counted 2026-09-24. |
| registreringsdato_antall_ansatte_enhetsreg | Date Brreg records for this event. Present on 177,771 of 1,175,334 rows (15.13%), counted 2026-09-24. |
| registreringsdato_antall_ansatte_nav | Date Brreg records for this event. Present on 177,682 of 1,175,334 rows (15.12%), counted 2026-09-24. |
| fravalg_revisjon_dato | Date Brreg records for this event. Present on 294,837 of 1,175,334 rows (25.09%), counted 2026-09-24. |
| fravalg_revisjon_beslutnings_dato | Date Brreg records for this event. Present on 213,866 of 1,175,334 rows (18.20%), counted 2026-09-24. |
| konkursdato | Date Brreg records for this event. Present on 3,249 of 1,175,334 rows (0.28%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| under_avvikling_dato | Date Brreg records for this event. Present on 7,396 of 1,175,334 rows (0.63%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| tvangsopplost_pga_manglende_regnskap_dato | Date Brreg records for this event. Present on 975 of 1,175,334 rows (0.08%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| tvangsopplost_pga_manglende_revisor_dato | Date Brreg records for this event. Present on 302 of 1,175,334 rows (0.03%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| tvangsopplost_pga_mangelfullt_styre_dato | Date Brreg records for this event. Present on 106 of 1,175,334 rows (0.01%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| under_rekonstruksjonsforhandling_dato | Date Brreg records for this event. Present on 15 of 1,175,334 rows (0.00%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| tvangsavviklet_pga_manglende_sletting_dato | Date Brreg records for this event. Present on 103 of 1,175,334 rows (0.01%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| registreringsdato_partiregisteret | Date Brreg records for this event. Present on 24 of 1,175,334 rows (0.00%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| under_utenlandsk_insolvensbehandling_dato | Date Brreg records for this event. Present on 2 of 1,175,334 rows (0.00%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| naeringskode1_beskrivelse | Industry classification (NACE) as registered with Brreg. Present on 1,139,692 of 1,175,334 rows (96.97%), counted 2026-09-24. |
| naeringskode2_kode | Industry classification (NACE) as registered with Brreg. Present on 18,343 of 1,175,334 rows (1.56%), counted 2026-09-24. |
| naeringskode2_beskrivelse | Industry classification (NACE) as registered with Brreg. Present on 18,343 of 1,175,334 rows (1.56%), counted 2026-09-24. |
| naeringskode3_kode | Industry classification (NACE) as registered with Brreg. Present on 1,577 of 1,175,334 rows (0.13%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| naeringskode3_beskrivelse | Industry classification (NACE) as registered with Brreg. Present on 1,577 of 1,175,334 rows (0.13%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| institusjonell_sektorkode_kode | Institutional sector classification from SSB’s code list. Present on 1,078,258 of 1,175,334 rows (91.74%), counted 2026-09-24. |
| institusjonell_sektorkode_beskrivelse | Institutional sector classification from SSB’s code list. Present on 1,078,258 of 1,175,334 rows (91.74%), counted 2026-09-24. |
| hjelpeenhetskode_kode | Auxiliary-unit classification code. Present on 33,455 of 1,175,334 rows (2.85%), counted 2026-09-24. |
| hjelpeenhetskode_beskrivelse | Auxiliary-unit classification code. Present on 33,455 of 1,175,334 rows (2.85%), counted 2026-09-24. |
| kapital_belop | Share-capital detail as registered with Brreg. Present on 439,027 of 1,175,334 rows (37.35%), counted 2026-09-24. |
| kapital_valuta | Share-capital detail as registered with Brreg. Present on 439,027 of 1,175,334 rows (37.35%), counted 2026-09-24. |
| kapital_antall_aksjer | Share-capital detail as registered with Brreg. Present on 439,027 of 1,175,334 rows (37.35%), counted 2026-09-24. |
| kapital_innfort_dato | Date Brreg records for this event. Present on 439,027 of 1,175,334 rows (37.35%), counted 2026-09-24. |
| kapital_type | Share-capital detail as registered with Brreg. Present on 439,027 of 1,175,334 rows (37.35%), counted 2026-09-24. |
| kapital_fullt_innbetalt | Share-capital detail as registered with Brreg. Present on 439,027 of 1,175,334 rows (37.35%), counted 2026-09-24. |
| kapital_innbetalt | Share-capital detail as registered with Brreg. Present on 439,027 of 1,175,334 rows (37.35%), counted 2026-09-24. |
| foretaksform_i_hjemlandet_kode | Foreign-registration detail, present only for organisations registered abroad. Present on 24,452 of 1,175,334 rows (2.08%), counted 2026-09-24. |
| foretaksform_i_hjemlandet_beskrivelse | Foreign-registration detail, present only for organisations registered abroad. Present on 24,452 of 1,175,334 rows (2.08%), counted 2026-09-24. |
| foretaksform_i_hjemlandet_beskrivelse_bokmaal | Foreign-registration detail, present only for organisations registered abroad. Present on 24,452 of 1,175,334 rows (2.08%), counted 2026-09-24. |
| utenlandsk_register_adresse_adresse | Foreign-registration detail, present only for organisations registered abroad. Present on 22,464 of 1,175,334 rows (1.91%), counted 2026-09-24. |
| utenlandsk_register_adresse_poststed | Foreign-registration detail, present only for organisations registered abroad. Present on 22,464 of 1,175,334 rows (1.91%), counted 2026-09-24. |
| utenlandsk_register_adresse_land | Foreign-registration detail, present only for organisations registered abroad. Present on 22,464 of 1,175,334 rows (1.91%), counted 2026-09-24. |
| utenlandsk_register_navn | Foreign-registration detail, present only for organisations registered abroad. Present on 22,464 of 1,175,334 rows (1.91%), counted 2026-09-24. |
| registreringsnummer_i_hjemlandet | Foreign-registration detail, present only for organisations registered abroad. Present on 22,464 of 1,175,334 rows (1.91%), counted 2026-09-24. |
| underlagt_lovgivning_land | Foreign-registration detail, present only for organisations registered abroad. Present on 24,452 of 1,175,334 rows (2.08%), counted 2026-09-24. |
| underlagt_lovgivning_landkode | Foreign-registration detail, present only for organisations registered abroad. Present on 24,452 of 1,175,334 rows (2.08%), counted 2026-09-24. |
| overordnet_enhet | Organisation number of the parent unit, when the organisation is part of a group. Present on 1,757 of 1,175,334 rows (0.15%), counted 2026-09-24. 🔵 The sparsity IS the signal — this is an event that few organisations reach, and it is exactly what a consumer filtering for them needs. |
| maalform | Official language form the organisation registered (Bokmål / Nynorsk). Present on 1,175,334 of 1,175,334 rows (100.00%), counted 2026-09-24. |
| siste_innsendte_aarsregnskap | Year of the most recent annual accounts Brreg has received. ⚠️ Upstream sends this as a string; it is cast only when it matches four digits, so one malformed value cannot fail a build across 1.17M rows. Present on 448,912 of 1,175,334 rows (38.19%), counted 2026-09-24. |
| aktivitet | Free-text description of what the organisation does, as an array of lines. Present on 1,175,334 of 1,175,334 rows (100.00%), counted 2026-09-24. |
| vedtektsfestet_formaal | The purpose set out in the organisation’s articles, as an array of lines. Present on 490,235 of 1,175,334 rows (41.71%), counted 2026-09-24. |
| frivillig_mva_registrert_beskrivelser | Descriptions of the activities covered by voluntary VAT registration. Present on 49,032 of 1,175,334 rows (4.17%), counted 2026-09-24. |
| historiske_navn | Previous names, as jsonb objects carrying `navn`, `fraDato` and `tilDato`. 🔴 jsonb rather than text[] because the elements are OBJECTS — verified against non-empty rows, since the array is empty on most. Present on 1,175,334 of 1,175,334 rows (100.00%), counted 2026-09-24. |
| paategninger | Official remarks Brreg has attached to the organisation, as jsonb objects carrying `tekst`. 🔴 jsonb rather than text[] for the same reason as `historiske_navn`, and getting this wrong would have flattened enforcement notices into unparseable strings. Present on 1,175,334 of 1,175,334 rows (100.00%), counted 2026-09-24. |
| forretningsadresse_adresse | Business address component, as registered with Brreg. ⚠️ An ARRAY of street lines upstream, not a single string. Present on 1,156,677 of 1,175,334 rows (98.41%), counted 2026-09-24. |
| forretningsadresse_postnummer | Business address component, as registered with Brreg. Present on 1,156,677 of 1,175,334 rows (98.41%), counted 2026-09-24. |
| forretningsadresse_poststed | Business address component, as registered with Brreg. Present on 1,156,677 of 1,175,334 rows (98.41%), counted 2026-09-24. |
| forretningsadresse_kommune | Business address component, as registered with Brreg. Present on 1,156,677 of 1,175,334 rows (98.41%), counted 2026-09-24. |
| forretningsadresse_land | Business address component, as registered with Brreg. Present on 1,156,677 of 1,175,334 rows (98.41%), counted 2026-09-24. |
| forretningsadresse_landkode | Business address component, as registered with Brreg. Present on 1,156,677 of 1,175,334 rows (98.41%), counted 2026-09-24. |
| postadresse_adresse | Postal address component, as registered with Brreg. ⚠️ An ARRAY of street lines upstream, not a single string. Present on 203,770 of 1,175,334 rows (17.34%), counted 2026-09-24. |
| postadresse_postnummer | Postal address component, as registered with Brreg. Present on 203,770 of 1,175,334 rows (17.34%), counted 2026-09-24. |
| postadresse_poststed | Postal address component, as registered with Brreg. Present on 203,770 of 1,175,334 rows (17.34%), counted 2026-09-24. |
| postadresse_kommune | Postal address component, as registered with Brreg. Present on 203,770 of 1,175,334 rows (17.34%), counted 2026-09-24. |
| postadresse_land | Postal address component, as registered with Brreg. Present on 203,770 of 1,175,334 rows (17.34%), counted 2026-09-24. |
| postadresse_landkode | Postal address component, as registered with Brreg. Present on 203,770 of 1,175,334 rows (17.34%), counted 2026-09-24. |
| postadresse_kommune_nr | Postal address component, as registered with Brreg. Present on 203,770 of 1,175,334 rows (17.34%), counted 2026-09-24. |
| doc | The complete upstream record as Brreg published it, with nothing dropped or renamed — including postal and business addresses, telephone, mobile, email, website, capital, institutional sector code, articles of association and historical names. Responses are large: a document averages ~1.7 kB, so select the typed columns instead unless you need a field this view does not surface. |
Sample query
Live PostgREST query that returns the first 5 rows. URL adapts to the current host — local dev shows api-atlas.localhost; the deployed site shows the configured API base.
https://api-atlas.urbalurba.com/brreg_enhet?limit=5
About this view
Every organisation registered in Norway, mirrored from Brønnøysundregistrene's Enhetsregisteret.
Every organisation registered in Norway — the whole of Brønnøysundregistrene's
Enhetsregisteret, around 1.17 million rows, current as of the last change-feed run.
Companies, foundations, associations, public bodies and sole proprietorships.
🔵 CHECK WHETHER YOUR RESULT WAS TRUNCATED, AND DO NOT CHECK IT
AGAINST YOUR OWN `limit`. Send `Prefer: count=exact` and compare the
total in the `Content-Range` response header against the number of
rows you actually received:
Content-Range: 0-4/1175169 with 5 rows -> truncated
Comparing `rows.length` against your own `limit=N` cannot see the cap
that matters. A server-side `db-max-rows` applies BELOW your limit, so
a cap of 1 000 against `limit=20000` returns 1 000 rows and the
comparison passes. It measures your intent, not the server's answer.
(The recipe is a consumer's, relayed on urb-agents #1410.)
🔵 Nobody can read `db-max-rows` from outside — PostgREST exposes no
endpoint for its effective settings, so "unset" and "set above N" are
indistinguishable. A cap is only ever discoverable by exceeding it.
Atlas has it UNSET today; this check keeps you correct if that changes.
🔴 THE COUNT IS WHAT COSTS, AND ONLY WHEN YOUR FILTER CANNOT USE AN
INDEX. Measured against this relation 2026-09-23:
kommune_nr=eq.1103 + count=exact 0.10 s 27 765 rows
navn=ilike.*...* + count=exact 10.87 s 428 rows
navn=ilike.*...* without the count 0.16 s 428 rows
no filter + count=exact 0.50 s 1 175 169
⚠️ Adding the count to that pattern query cost 70x on a result of 428
rows. `count=exact` cannot stop at your limit — it counts every
matching row — so an unindexed predicate scans all 1.17 million.
⚠️ AN EARLIER VERSION OF THIS NOTE SAID "DO NOT SEND count=exact WITH
A FILTER". That is too broad — an equality filter on `kommune_nr` came
back in 0.10 s above — and the advice would have pushed consumers off a
cheap, correct call.
🔵 MEASURE YOUR OWN PREDICATE RATHER THAN TRUSTING A LIST OF COLUMNS.
`organisasjonsnummer` carries a unique index. `kommune_nr` appears only
inside a PARTIAL index restricted to voluntary, active rows, so whether
a bare `kommune_nr` filter can use it depends on the rest of your
query. The timings above are measurements, not query plans — this
relation is not introspectable from outside, and the cheap experiment
is to send your real query twice, once with the count and once
without.
⚠️ INSIDE A BROWSER FETCH A SLOW COUNT IS A TIMEOUT, NOT A SLOW
ANSWER. A consumer diagnosed one as a CORS failure, because a request
that never completes is indistinguishable from a blocked one on the
fetch side. CORS is fine (urb-agents #1361).
🔴 AND DO NOT SUBSTITUTE `count=planned` AS THE DETECTOR. It is fast
(0.16 s on the pattern above) and its error is unbounded in BOTH
directions. Measured 2026-09-23:
navn ilike *zzzzqqq* planned 118 exact 0
navn ilike *frivillig* planned 118
navn ilike *røde* planned 118
navn ilike *as* planned 570 606
no filter planned 1 176 875 exact 1 175 169
⚠️ 118 for a pattern that matches NOTHING, and the same 118 for three
unrelated patterns — for those it is not an estimate of your query at
all, it is the planner's fallback guess. `*as*` gets a real estimate,
so it is not a constant either; you cannot tell which you got.
🔴 And unfiltered it reports 1 706 MORE rows than exist. A detector
built on it would raise a FALSE TRUNCATION ALARM on a complete answer
— the opposite failure to the one you were guarding against, and just
as silent.
`count=estimated` does not help — measured 10.99 s, because it falls
back to an exact count when the planner's estimate is small. Use
`planned` only where an order of magnitude will do, never to decide
completeness.
Kilde: Brønnøysundregistrene. Inneholder data under norsk lisens for offentlige data
(NLOD) tilgjengeliggjort av Brønnøysundregistrene — https://data.norge.no/nlod/no/2.0.
Re-users must carry this attribution onward; it is a condition of the licence, not a
courtesy.
Deleted organisations are excluded. Brreg reports deletions through its change feed and
Atlas applies them, so an organisation removed upstream disappears from here — but the
version history is kept, so what it looked like before removal remains answerable.
Completeness caveat: this reflects deletions Brreg REPORTS. A row Atlas holds that Brreg
never had would not be removed by any automatic path, because no change event would ever
mention it.