Skip to main content

Data Sources

Norway uses a single official registry for all company data.
  • Bronnysundregistrene (BR-Reg / The Bronnoysund Register Centre) — Operated by the Norwegian government, BR-Reg maintains the Enhetsregisteret (Entity Register) and Foretaksregisteret (Business Register). It is the sole data source for all Norwegian entities. Accessed via a REST API (data.brreg.no/enhetsregisteret/api), it provides comprehensive company data including legal form, status, management roles, activity codes (NACE), employees, addresses, contact information, and sub-entities (establishments). The API covers all entity types: commercial companies, sole proprietorships, non-profits, and public institutions.
The BR-Reg REST API returns structured JSON data with a clean, flat structure. Company data, roles, and sub-entities are accessed through separate API endpoints. Roles data includes role groups (rollegrupper) containing individual role entries with type codes and person/entity details.

Company Identifiers

Query Identifiers

Company TypeSourceFormatExampleNotes
All entitiesBR-Reg9 digits (Organization Number)923609016Organisasjonsnummer, accepts spaces or dots as separators
Organization Number Format: The organization number is 9 digits. It can be entered in three formats: 923609016 (no separators), 923 609 016 (spaces), or 923.609.016 (dots). All formats are normalized internally by stripping separators. The display format uses dots: 923.609.016.

Identifiers in API Response

Once you retrieve company data, the identifiers object contains all available identifiers for that entity:
Identifier TypeFormatExampleFound In
organisasjonsnummer9 digits923609016All entities
vatNumber9 digits + MVA923609016MVAVAT-registered companies (auto-generated)
VAT Number Auto-Generation: The VAT number is automatically generated by appending MVA to the organization number when the company has registrertIMvaregisteret = true. It is not a separate identifier from the registry.

Search Capabilities

Search TypePatternExampleMatch TypeExpected Results
By Organization Number9 digits923609016ExactSingle company (1 result)
By Organization Number (spaces)3+3+3 digits923 609 016ExactSingle company (1 result)
By Organization Number (dots)3.3.3 digits923.609.016ExactSingle company (1 result)
By NameText string"Equinor"FuzzyMultiple results (up to 20)
Search Performance: Use identifier-based searches (organization number) for best performance and exact matching. Name searches query the BR-Reg REST API and may return multiple results.
Name search queries the BR-Reg REST API at /enheter?navn=.... Identifier searches (organization number) perform exact lookups via /enheter?organisasjonsnummer=... and are significantly faster.

Batch Cache

Norway company data is batch-synced from the Enhetsregisteret open dataset into a local cache (Meilisearch + PostgreSQL staging table). Search queries hit the Meilisearch cache first for instant results, with automatic fallback to the live BR-Reg API if the cache misses.

Companies in Cache

The cache contains all active Norwegian entities from the Enhetsregisteret. Companies in the following states are excluded from the cache:
Excluded StatusFlagReason
Bankruptcykonkurs = trueCompany is in bankruptcy proceedings
Under LiquidationunderAvvikling = trueVoluntary liquidation in progress
Forced DissolutionunderTvangsavviklingEllerTvangsopplosning = trueCourt-ordered dissolution
Active companies without any of these flags are included regardless of legal form (AS, ENK, ANS, etc.).

Onboarding Profile

The onboarding profile (onboardingProfile datapoint) reads directly from the staging table (no.enhetsregisteret), not the live BR-Reg API. This provides faster, cheaper responses with no AI enrichment overhead. Data freshness depends on the batch sync schedule.

Quirks & Gotchas

QuirkDetails
Organization number normalizationThe 9-digit organization number accepts three input formats: 123456789, 123 456 789, 123.456.789. All are normalized by stripping spaces and dots. The display format uses dots (123.456.789).
VAT number auto-generationVAT numbers are not stored in the registry. They are automatically generated by appending MVA to the organization number when registrertIMvaregisteret = true.
Deterministic role mappingAll 20 role type codes have pre-computed isLegalRepresentative and isOtherKeyPerson flags. No AI is involved in role classification.
Two-pass board member detectionBoard members (MEDL) are normally classified as Other Key Persons. However, if there is exactly one non-employee board member on the entire board, that person is promoted to Legal Representative as “Sole Board Member”. This requires counting all board members before classification.
Signing authority promotionBoard members with explicit signing authority (keywords: signatur, prokura, firmategn, alene) are promoted from Other Key Person to Legal Representative regardless of board size.
Employee representative detectionBoard members elected by employees (valgtAv.kode === 'AREP') or with employee-related keywords (ansatte, ansatterepresentant) are excluded from the single-member board count. They are always classified as Other Key Persons.
No shareholder or UBO dataThe BR-Reg public API does not expose ownership, shareholder, or beneficial ownership information.
Up to 3 NACE codesNorway provides up to 3 structured NACE activity codes (naeringskode1, naeringskode2, naeringskode3). These are official registry codes, never AI-inferred.
Address preferenceThe system prefers forretningsadresse (business address) over postadresse (postal address) for legalAddress. Establishments prefer beliggenhetsadresse (location address).
Registration date priorityRegistration date uses a preference chain: stiftelsesdato (founding date) > registreringsdatoEnhetsregisteret (entity register date) > oppstartsdato (start date).
Resigned roles filteredRoles with fratraadt = true (resigned) are excluded from both legal representatives and other key persons.
Phone number formattingNorwegian phone numbers are formatted to E.164 format by prepending +47 if the number is 8 digits and does not already include the country code.
Activity description sourcesActivity description is sourced from aktivitet (activity text array) first, falling back to vedtektsfestetFormaal (statutory purpose) if unavailable.
Financial years from separate endpointAnnual report availability is fetched from virksomhet.brreg.no (a different endpoint than the main API at data.brreg.no), parsing the regnskapsAarResponse from the HTML response.

Mappings

Company Status

Company status is determined deterministically from boolean flags in the BR-Reg API response. No AI inference is involved in status determination.
Local StatusEnglishStandardized StatusClosure ReasonNotes
AktivActiveActiveDefault status when no closure flags are set
KonkursBankruptcyClosedBankruptcykonkurs = true
Under avviklingUnder LiquidationUnder Insolvency ProceedingVoluntary DissolutionunderAvvikling = true
Under tvangsavvikling eller tvangsopplosningUnder Forced LiquidationUnder Insolvency ProceedingCourt OrderunderTvangsavviklingEllerTvangsopplosning = true
OpphortCeasedClosedOthernedleggelsesdato or slettedato is set
Status determination uses a priority chain: (1) konkurs (bankruptcy), (2) underAvvikling (voluntary liquidation), (3) underTvangsavviklingEllerTvangsopplosning (forced liquidation), (4) presence of nedleggelsesdato or slettedato (cessation/deletion date). If none apply, the company is Active.
Norway uses the organisasjonsform.kode from the BR-Reg API. The system translates the code to English using a deterministic pre-computed lookup table covering all known organisasjonsform codes. For known codes, standardized classification is applied directly; for unrecognized codes, AI-based classification is used as fallback. ISO 20275 (ELF) codes will be populated in a future update.
Legal forms are classified from official registry data. For known codes, standardized classification is applied directly; for unrecognized codes, AI-based classification is used as fallback.

Companies

Local NameEnglish TranslationStandardizedISO 20275
AksjeselskapPrivate limited companyLimited Liability CompanyYI42
AllmennaksjeselskapPublic limited companyCorporationIQGE
Europeisk selskapSocietas EuropaeaCorporationV06W

Sole Proprietorships

Local NameEnglish TranslationStandardizedISO 20275
EnkeltpersonforetakSole proprietorshipSole ProprietorshipEXD7

Partnerships

Local NameEnglish TranslationStandardizedISO 20275
Ansvarlig selskapGeneral partnershipPartnership326Y
Delt ansvarlig selskapGeneral partnership with shared liabilityPartnership326Y
KommandittselskapLimited partnershipPartnershipM9IQ
PartrederiShipping partnershipPartnershipAEV1

Cooperatives

Local NameEnglish TranslationStandardizedISO 20275
Selskap med begrenset ansvarCooperativeCooperativeQ0Q1
BoligbyggelagHousing cooperativeCooperative9DI1
BorettslagHousing cooperativeCooperativeO0EU
SamvirkeforetakCooperativeCooperativeK5P8

Non-profit Organizations

Local NameEnglish TranslationStandardizedISO 20275
Forening/lag/innretningAssociationNon-profit OrganizationFSBD
Den norske kirkeChurch of NorwayNon-profit Organization4ZRR
StiftelseFoundationNon-profit Organization3C7U

Government-Owned Entities

Local NameEnglish TranslationStandardizedISO 20275
Fylkeskommunalt foretakCounty enterpriseGovernment-Owned Entity5ZTZ
FylkeskommuneCountyGovernment-Owned EntityKX7D
Interkommunalt selskapInter-municipal companyGovernment-Owned EntityYTMC
Kommunalt foretakMunicipal enterpriseGovernment-Owned Entity3L58
KommuneMunicipalityGovernment-Owned Entity3L58
StatsforetakPublic administration entityGovernment-Owned Entity50TD
StatsforetakState enterpriseGovernment-Owned Entity50TD
StatenThe StateGovernment-Owned Entity-

Branch / Representative Office

Local NameEnglish TranslationStandardizedISO 20275
Norskregistrert utenlandsk foretakNorwegian branch of foreign companyBranch / Representative Office4ZRR

Other

Local NameEnglish TranslationStandardizedISO 20275
Gjensidig forsikringsselskapMutual insurance companyOther8S9H
Ikke registreringspliktig juridisk personNon-mandatory legal entityOther4ZRR
KonkursboBankruptcy estateOtherPB3V
OrganisasjonsleddOrganisational sub-unitOther-
PensjonskassePension fundOtherBJ65
SameieCo-ownershipOther-
SparebankSavings bankOtherR71C
TvangsamForced co-ownershipOther-
VerdipapirfondSecurities fundOtherLJJW
Legal representatives are extracted deterministically from the BR-Reg roles API endpoint (/enheter/{id}/roller). The system uses a pre-computed mapping of 20 role type codes with explicit isLegalRepresentative flags. A two-pass algorithm handles board member classification.
CodeNorwegian NameEnglish TranslationMapped Role
MEDLStyremedlemBoard MemberBoard Member
VARAVaramedlemDeputy Board MemberBoard Member
REVIRevisorAuditorAuditor
OBSObservatorObserverBoard Observer
FFORForretningsforerBusiness ManagerBusiness Manager
REGNRegnskapsforerAccountantAccountant
DTPRDeltaker med proratarisk ansvarPartner with Pro Rata LiabilityPartner
BOBEBostyrerBankruptcy Trustee/AdministratorAdministrator
CodeNorwegian NameEnglish TranslationNotes
KONTKontaktpersonContact PersonNot a key person
ADOSAdministrativ enhet - offentlig sektorAdministrative Unit - Public SectorNot a key person
KDEBKonkursdebitorBankruptcy DebtorNot a key person

Special Board Member Logic

The system implements a two-pass algorithm for board member classification:
ScenarioClassificationNotes
Board member (MEDL) with signing authorityLegal RepresentativeKeywords: signatur, prokura, firmategn, alene
Single non-employee board member on the boardLegal RepresentativePromoted to “Sole Board Member” when there is exactly 1 non-employee board member
Board member in multi-member boardOther Key PersonStandard classification
Employee representative board memberOther Key PersonDetected by valgtAv.kode === 'AREP' or employee-related keywords
Two-Pass Board Member Detection: The system first counts all non-employee, non-deputy board members (LEDE, NEST, MEDL). If exactly one is found, that board member is promoted to Legal Representative as “Sole Board Member”. This requires full context of all roles before classification decisions are made.
Role classification is fully deterministic using the pre-computed ROLE_TYPES mapping. No AI inference is involved in determining whether a person is a legal representative or other key person. Only the English translation enrichment step uses AI (for standardized role mapping to Topograph enum).

Shareholders

Shareholder data is not available from the BR-Reg API. The Norwegian business registry does not expose ownership or shareholder information through its public API.
Unlike Denmark (which provides shareholder data via CVR) or the Netherlands (which extracts shareholder data from trade register extracts via AI parsing), Norway’s public registry API does not include any ownership data.

Other Key Persons

Other key persons include board members, auditors, accountants, business managers, and other non-executive roles. Both individual and corporate entities can hold these roles (e.g., an auditing firm as REVI).

Ultimate Beneficial Owners

UBO data is not available from the BR-Reg API. The Norwegian business registry does not expose beneficial ownership information through its public API endpoints.

Activity Codes

Norway uses the SN2007 (Standard for naeringsgruppering) classification, which is the Norwegian implementation of NACE Rev. 2. Activity codes come directly from the BR-Reg API structured fields (naeringskode1, naeringskode2, naeringskode3).
SN2007 (Norwegian) -> NACE Rev. 2 (European) -> ISIC Rev. 4 (International)
ClassificationSourceExampleAI Inferred?
NACEnaeringskode1.kode (primary)62.010No (official from registry)
NACEnaeringskode2.kode (secondary)49.500No (official from registry)
NACEnaeringskode3.kode (tertiary)35.110No (official from registry)
ISICDerived from NACE via enrichActivities parser6201Sometimes
AI Enrichment: NACE codes are never AI-inferred for Norway — they come directly from the registry as structured data. ISIC codes are derived from NACE via the enrichActivities parser, which may use AI when formal mapping tables do not cover the specific code. Every activity item includes an isAIInferred flag.
Multiple Activity Codes: Norway supports up to 3 NACE activity codes per company: naeringskode1 (primary business activity), naeringskode2 (secondary), and naeringskode3 (tertiary). Each includes both the code and a Norwegian description.

Data Availability

Data Availability Matrix

Data TypeCommercial CompaniesSole EntrepreneursNon-ProfitsPublic EntitiesNotes
Company Profile✅ Async✅ Async✅ Async✅ AsyncFull data from BR-Reg API
Legal RepresentativesDeterministic from roles API
Other Key Persons⚠️ LimitedBoard members, auditors, etc.
ShareholdersNot available from BR-Reg
Ultimate Beneficial OwnersNot available from BR-Reg
EstablishmentsFrom sub-entities (underenheter)
Activity CodesNACE from naeringskode fields
Legend: ✅ Available | ❌ Not Available | ⚠️ Conditionally Available | Async = Asynchronous processing

Documents

All Companies

Document TypeAPI CategoryFormatSKUAvailabilityNotes
Enhetsutskrift (Trade Register Extract)tradeRegisterExtractPDFNOR_REGISTER_EXTRACT✅ Always availableOfficial extract (~30 sec delivery)
Arsregnskap (Annual Report)financialStatements[]PDFNOR_ANNUAL_REPORT✅ When filedAnnual reports by fiscal year (~30 sec delivery)
Trade Register Extract: The Enhetsutskrift is always available for any registered entity. It is retrieved from the official register and generated as a PDF with an estimated delivery time of ~30 seconds.
Annual Reports: Financial statements are listed by querying the virksomhet.brreg.no endpoint for available financial years. Each year with an annual report generates a separate document entry with period information (start and end dates of the fiscal year). The document name follows the pattern Arsregnskap {year} (e.g., “Arsregnskap 2024”). Annual reports are fetched and cached permanently since they do not change once published.

Example API Responses

All examples use placeholder data. Query: POST /company with { "id": "<id>", "countryCode": "NO", "dataPoints": ["companyProfile"] }
{
  "company": {
    "id": "123456789",
    "countryCode": "NO",
    "identifiers": { "organisasjonsnummer": "123456789", "vatNumber": "123456789MVA" },
    "legalName": "Nordisk Teknologi AS",
    "registrationDate": "2015-06-15",
    "activityDescription": "Utvikling og salg av programvare.",
    "status": { "localName": "Aktiv", "active": true, "statusDetails": { "status": "ACTIVE" } },
    "legalForm": { "localName": "Aksjeselskap", "englishTranslation": "Private Limited Company", "standardized": "Limited Liability Company" },
    "employeeCount": { "exact": 25 },
    "activities": {
      "NACE": [
        { "code": "62.010", "description": "Programmeringstjenester", "isAIInferred": false },
        { "code": "62.020", "description": "Konsulentvirksomhet tilknyttet informasjonsteknologi", "isAIInferred": false }
      ],
      "ISIC": [
        { "code": "6201", "description": "Computer programming activities", "isAIInferred": true }
      ]
    },
    "legalAddress": { "addressLine1": "Karl Johans gate 10", "city": "OSLO", "postalCode": "0154", "region": "OSLO", "countryCode": "NO" },
    "phones": ["+4712345678"],
    "website": "https://www.example.no"
  },
  "legalRepresentatives": [
    { "type": "individual", "role": { "localName": "Daglig leder", "englishTranslation": "Managing Director", "standardized": "CEO" }, "individual": { "name": { "fullName": "Lars Hansen", "firstName": "Lars", "lastName": "Hansen" }, "birthDate": { "year": 1980, "month": 3, "day": 15 } } },
    { "type": "individual", "role": { "localName": "Styrets leder", "englishTranslation": "Chairman", "standardized": "Chairman of the Board" }, "individual": { "name": { "fullName": "Kari Olsen", "firstName": "Kari", "lastName": "Olsen" } } }
  ],
  "otherKeyPersons": [
    { "type": "individual", "role": { "localName": "Styremedlem", "englishTranslation": "Board Member", "standardized": "Board Member" }, "individual": { "name": { "fullName": "Erik Berg", "firstName": "Erik", "lastName": "Berg" } } },
    { "type": "company", "role": { "localName": "Revisor", "englishTranslation": "Auditor", "standardized": "Auditor" }, "company": { "id": "987654321", "legalName": "Norsk Revisjon AS" } }
  ],
  "establishments": [
    { "name": "Nordisk Teknologi AS Avd Oslo", "id": "912345678", "active": true, "address": { "city": "OSLO", "postalCode": "0154", "countryCode": "NO" } }
  ]
}
{
  "company": {
    "id": "987654321",
    "countryCode": "NO",
    "identifiers": { "organisasjonsnummer": "987654321" },
    "legalName": "Hansen Konsult",
    "registrationDate": "2020-01-10",
    "activityDescription": "Bedriftsradgivning og administrativ radgivning.",
    "status": { "localName": "Aktiv", "active": true, "statusDetails": { "status": "ACTIVE" } },
    "legalForm": { "localName": "Enkeltpersonforetak", "englishTranslation": "Sole Proprietorship", "standardized": "Sole Proprietorship" },
    "employeeCount": { "exact": 1 },
    "activities": {
      "NACE": [{ "code": "70.220", "description": "Bedriftsradgivning og annen administrativ radgivning", "isAIInferred": false }],
      "ISIC": [{ "code": "7020", "description": "Management consultancy activities", "isAIInferred": true }]
    },
    "legalAddress": { "addressLine1": "Storgata 5", "city": "BERGEN", "postalCode": "5003", "region": "BERGEN", "countryCode": "NO" }
  },
  "legalRepresentatives": [
    { "type": "individual", "role": { "localName": "Innehaver", "englishTranslation": "Owner", "standardized": "Partner" }, "individual": { "name": { "fullName": "Morten Hansen", "firstName": "Morten", "lastName": "Hansen" } } }
  ]
}
Note: Sole proprietorships (ENK) have the owner (Innehaver) as the only legal representative. No shareholders or board members are present.
{
  "company": {
    "id": "111222333",
    "countryCode": "NO",
    "identifiers": { "organisasjonsnummer": "111222333" },
    "legalName": "Gammel Bedrift AS (konkurs)",
    "registrationDate": "2010-05-20",
    "status": {
      "localName": "Konkurs",
      "active": false,
      "statusDetails": {
        "status": "CLOSED",
        "closureReason": "BANKRUPTCY",
        "additionalInfo": "Company is in bankruptcy proceedings"
      }
    },
    "legalForm": { "localName": "Aksjeselskap", "englishTranslation": "Private Limited Company", "standardized": "Limited Liability Company" },
    "legalAddress": { "addressLine1": "Industrivegen 20", "city": "TRONDHEIM", "postalCode": "7030", "countryCode": "NO" }
  },
  "legalRepresentatives": [],
  "otherKeyPersons": [
    { "type": "individual", "role": { "localName": "Bostyrer", "englishTranslation": "Bankruptcy Trustee/Administrator", "standardized": "Administrator" }, "individual": { "name": { "fullName": "Advokat Nilsen", "firstName": "Advokat", "lastName": "Nilsen" } } }
  ]
}
Note: Bankrupt companies have konkurs = true, status is CLOSED with closure reason BANKRUPTCY. A bankruptcy trustee (Bostyrer, code BOBE) may appear as an other key person.
{
  "company": {
    "id": "555666777",
    "countryCode": "NO",
    "identifiers": { "organisasjonsnummer": "555666777" },
    "legalName": "Norsk Idrettslag",
    "registrationDate": "2005-03-01",
    "activityDescription": "Fremme idrettsaktiviteter og organisere lokale sportsarrangementer.",
    "status": { "localName": "Aktiv", "active": true, "statusDetails": { "status": "ACTIVE" } },
    "legalForm": { "localName": "Forening/lag/innretning", "englishTranslation": "Association", "standardized": "Nonprofit Organization" },
    "employeeCount": { "exact": 3 },
    "activities": {
      "NACE": [{ "code": "93.120", "description": "Idrettslag og -klubber", "isAIInferred": false }],
      "ISIC": [{ "code": "9312", "description": "Activities of sports clubs", "isAIInferred": true }]
    },
    "legalAddress": { "addressLine1": "Idrettsveien 12", "city": "STAVANGER", "postalCode": "4001", "region": "STAVANGER", "countryCode": "NO" }
  },
  "legalRepresentatives": [
    { "type": "individual", "role": { "localName": "Styrets leder", "englishTranslation": "Chairman", "standardized": "Chairman of the Board" }, "individual": { "name": { "fullName": "Ingrid Bakke", "firstName": "Ingrid", "lastName": "Bakke" } } }
  ],
  "otherKeyPersons": [
    { "type": "individual", "role": { "localName": "Styremedlem", "englishTranslation": "Board Member", "standardized": "Board Member" }, "individual": { "name": { "fullName": "Tor Eriksen", "firstName": "Tor", "lastName": "Eriksen" } } }
  ]
}
Note: Non-profits (FLI) are retrieved from the same BR-Reg API as commercial companies. They may have board members, chairman, and auditors. No shareholders or UBOs.
{
  "company": {
    "id": "923609016",
    "countryCode": "NO",
    "identifiers": { "vatNumber": "923609016MVA", "organisasjonsnummer": "923609016" },
    "legalName": "EQUINOR ASA",
    "registrationDate": "1972-09-17",
    "website": "https://www.equinor.com",
    "employeeCount": { "exact": 21412 },
    "status": { "localName": "Aktiv", "active": true, "statusDetails": { "status": "ACTIVE" } },
    "legalForm": { "localName": "Allmennaksjeselskap", "englishTranslation": "Public Limited Company" },
    "activities": {
      "NACE": [
        { "code": "06.100", "description": "Utvinning av råolje" },
        { "code": "06.200", "description": "Utvinning av naturgass" },
        { "code": "19.200", "description": "Produksjon av raffinerte petroleumsprodukter og fossile brenselsprodukter" }
      ]
    },
    "legalAddress": { "addressLine1": "Forusbeen 50", "city": "STAVANGER", "postalCode": "4035", "region": "STAVANGER", "countryCode": "NO" }
  }
}
Note: Onboarding profiles are served from the batch staging table. No AI enrichment is applied — no standardized or iso20275Code on legal form, no isAIInferred on activities, no shareholders or UBOs.
Documents are returned when "dataPoints": ["availableDocuments"] is requested.
API CategoryDocumentNotes
tradeRegisterExtractEnhetsutskrift PDFAlways available (~30 sec)
financialStatements[]Arsregnskap (annual reports by year)When filed, with period data