orakel
Docs navigation

Canonical

Regnskapsregisteret

Annual financial statements for Norwegian companies — revenue, profit, balance sheet, computed ratios.

Updated 2026-04-21

Source: Regnskapsregisteret (part of Brønnøysundregistrene) Data: Annual financial statements for AS/ASA companies — income statement, balance sheet License: NLOD 2.0 (Norwegian Licence for Open Government Data) Attribution required: Yes — credit "Brønnøysundregistrene / Regnskapsregisteret" Link: https://w2.brreg.no/regnskap/ Update cadence: Continuous (chunked background sync); the most recent fiscal year typically lands in Regnskapsregisteret six months after year-end

What it is

Regnskapsregisteret is the official register of annual financial statements for Norwegian companies that have a filing obligation — primarily AS and ASA. Each filing covers one fiscal period and contains an income statement and balance sheet in the currency the company reports in (usually NOK).

The upstream Regnskapsregisteret API exposes only the most recent filed year per company per fetch — not the full filing history. Orakel stores each fetched year as a Financial record and retains prior years across sync runs, so multi-year depth accumulates passively (~1 year per calendar year of operation). Deeper history (older annual filings, full notes, paper-only submissions) is only available via Brreg's paid Regnskapsregisteret archive, which Orakel does not ingest — see the paid-data policy. The API is flagged as preview by Brreg — individual lookups can fail — so Orakel persists what it has and retries.

Fields provided

Field Type Notes
orgNumber string Part of the composite key (country, orgNumber) on the parent company
regnskapstype string Filing type — e.g. SELSKAP (company) vs. KONSERN (consolidated)
periodFrom / periodTo date Fiscal period start and end. Often a calendar year, but not always.
currency string Reporting currency as filed (most filings are NOK)
revenue float Sum driftsinntekter
operatingCosts float Sum driftskostnad
operatingResult float Driftsresultat
netFinancials float Netto finans
preTaxProfit float Ordinært resultat før skattekostnad
netResult float Årsresultat
totalAssets float Sum eiendeler
totalEquity float Sum egenkapital
totalDebt float Sum gjeld
syncedAt datetime Last time Orakel fetched this filing

Computed on every response

Company and search endpoints attach computed ratios to each Financial record. These are not stored in the database — they are derived at read time from the fields above.

Field Formula Notes
ratios.profitMargin netResult / revenue Rounded to 4 decimals
ratios.operatingMargin operatingResult / revenue
ratios.returnOnAssets netResult / totalAssets
ratios.returnOnEquity netResult / totalEquity
ratios.equityRatio totalEquity / totalAssets
ratios.debtToEquityRatio totalDebt / totalEquity
revenueGrowthYoY (revenue_t − revenue_t-1) / abs(revenue_t-1) Compared against the previous filed year in the same series

Each ratio returns null when the denominator is zero or either operand is missing.

Endpoints that surface this data

  • GET /api/companies/:orgNumber — the company record includes financials[] sorted newest first, with ratios and YoY growth attached
  • GET /api/companies — search results include up to the two most recent filings per company, with ratios attached
  • GET /api/updates?since=<ISO date> — companies whose record changed include their latest filing

There is no standalone /api/financials endpoint; financials are always returned embedded on the parent company.

Limitations

  • Only companies with a statutory filing obligation appear here — AS, ASA, and a few other forms. Sole proprietorships (ENK) do not file and have no financial records.
  • Denormalized latestRevenueNOK on the company row is updated during financial sync and used for tier revenue filters. It trails the most recent filing until the next sync pass.
  • Computed ratios return null when the denominator is zero or the underlying number is missing. Do not treat null as a neutral value.
  • The Regnskapsregisteret API is flagged as preview by Brreg. Occasional 5xx responses are retried with exponential backoff; a sustained outage shows up as stale syncedAt values.

Gotchas

  • A full financial sync takes roughly ten hours for the AS/ASA population. The job is split into chunks and runs every 30 minutes, resuming from the last processed orgNumber, so it survives deploys.
  • Year-depth is emergent. A single sync fetches the latest filing only, so a company synced for the first time today returns one year. Multi-year coverage grows as Orakel keeps running — expect one new year per calendar year of operation, not a deep backfill. If a deal requires long historical runs, price Brreg's paid archive into it.
  • Fiscal years don't always align to calendar years. Use periodFrom / periodTo rather than inferring a year from the filing.
  • A single company can have both a SELSKAP filing and a KONSERN (consolidated) filing for the same period. They are stored as separate records, uniquely keyed on (country, orgNumber, regnskapstype, periodFrom, periodTo).
  • Currency is recorded as filed. A NOK-denominated filing and a EUR-denominated filing for the same group can appear side by side — always check currency before aggregating across companies.