# Researching a Norwegian company

Everything here comes from Enhetsregisteret and Regnskapsregisteret — open,
free, no credentials. Around 1.1 million entities.

## Name → org number

```
norsk_resolve(text="Rema 1000")
```

Returns up to 5 ranked candidates with org form, city and industry so you can
disambiguate. **If more than one plausible candidate comes back, ask the user
which one** rather than picking the top hit — Norwegian company names repeat
heavily across unrelated legal entities ("REMA 1000 AS" the holding company vs
"REMA 1000 NORGE AS" the operating company vs a local sports club with "REMA
1000" in its name).

Already have 9 digits? `norsk_resolve` validates the mod-11 checksum locally and
tells you immediately if it is a typo, instead of burning a call on a 404.

## The core three calls

```
norsk_call(id="brreg.enhet.get",    params={orgnr:"883409442"})   # registry record
norsk_call(id="brreg.roller.get",   params={orgnr:"883409442"})   # board + management
norsk_call(id="brreg.regnskap.get", params={orgnr:"883409442"})   # annual accounts
```

`brreg.enhet.get` gives org form, industry code, employee count, VAT
registration, founding date, addresses, and the bankruptcy/liquidation flags.
Check `konkurs` and `underAvvikling` before describing a company as active.

## Board and management

`brreg.roller.get` returns one row per person, already flattened. Role codes you
will see:

| Role | Meaning |
|---|---|
| Daglig leder | CEO / managing director |
| Styrets leder | Chair of the board |
| Styremedlem | Board member |
| Varamedlem | Deputy board member |
| Revisor | Auditor (usually a firm, so it has an org number not a birth date) |
| Regnskapsfører | Accountant (also usually a firm) |
| Kontaktperson | Registered contact |

Names and dates of birth are public. **Fødselsnummer (personal ID) is not
available** in this open API — it needs the authenticated brreg roles API, which
this server does not have. Do not claim you can get it.

## Branches and physical locations

A Norwegian company's shops, offices and sites are separate registered entities
called **underenheter**, each with its own org number under a parent.

```
norsk_call(id="brreg.underenhet.search",
           params={overordnetEnhet:"982254604"}, limit=25)
```

This matters more than it sounds: **employees are registered at the underenhet,
not the parent.** A holding company with 3 000 staff across the country often
shows `antallAnsatte: 0` on its own record. If a headcount looks implausibly
low, sum the underenheter.

Filter to a city with `kommunenummer` (Oslo 0301, Bergen 4601, Trondheim 5001,
Stavanger 1103):

```
norsk_call(id="brreg.underenhet.search",
           params={navn:"REMA 1000", kommunenummer:"4601"}, limit=30)
```

## Corporate structure

`brreg.enhet.get` returns `morselskap` (the `overordnetEnhet` field) when the
entity has a registered parent. Walk it upward one call at a time to find the
ultimate owner.

Caveat worth stating to the user: this is the *registered* parent relationship,
not a shareholder register. Enhetsregisteret does not publish ownership
percentages or beneficial owners. If someone asks "who owns X", you can give the
registered parent and the board — not a cap table.

## Screening by industry or geography

`brreg.enhet.search` filters combine:

```
norsk_call(id="brreg.enhet.search",
           params={naeringskode:"47.111", kommunenummer:"0301", organisasjonsform:"AS"},
           limit=25, fields=["orgnr","navn","ansatte"])
```

`naeringskode` is NACE, format `nn.nnn` — 47.111 is grocery retail, 62.010 is
software consultancy, 41.200 is building construction. Use `fields=[...]` on
screens: you rarely need the full default projection times 25 rows.

Screens are paginated. `meta.truncated: true` means there are more — follow
`meta.cursor`, don't re-run with a bigger limit.

## Things that catch people out

- **Historical names.** `brreg.enhet.get` returns `historiskeNavn`; a company the
  user knows by an old name may search poorly under the new one.
- **NUF entities** are Norwegian branches of foreign companies. They have org
  numbers but often file no accounts.
- **ENK** (sole proprietorship) is a person trading under a business name — no
  board, no accounts, and the "company" is legally the individual.
- **Not everyone files accounts.** `brreg.regnskap.get` returning an empty array
  is a normal, meaningful result: small entities and ENKs are exempt. Say "does
  not file public accounts", not "no data found".
