orakel
Docs navigation

Canonical

GET /api/companies/:orgNumber

Fetch a single company record with embedded financials, roles, and sub-units.

Updated 2026-04-29

Request

GET /api/companies/:orgNumber

Parameter Type Required Description
orgNumber string yes Path parameter. 9-digit Norwegian org number. For Finnish (NNNNNNN-N) or Swedish (10-digit) records, pass the base number plus country.
country "NO" | "FI" | "SE" | "DK" no Default "NO". Selects the registry. See Brreg, YTJ, Bolagsverket, CVR.
include "context" no When context, appends SSB aggregate context (municipality population, industry wage averages) to the response.

On a Norwegian cache miss the handler fetches the record live from Brreg and stores it. Non-NO misses return 404 — load those universes via their bulk sync jobs.

Response

{
  "orgNumber": "923609016",
  "country": "NO",
  "name": "EQUINOR ASA",
  "orgFormCode": "ASA",
  "employeeCount": 22000,
  "_sources": {
    "attribution": ["Brønnøysundregistrene", "Regnskapsregisteret", "SSB Klass"],
    "fields": {
      "companyCore": "Brønnøysundregistrene",
      "roles": "Brønnøysundregistrene",
      "financials": "Regnskapsregisteret",
      "financialRatios": { "source": "Regnskapsregisteret", "computed": true },
      "industryLabel": "SSB Klass",
      "orgFormLabel": "SSB Klass",
      "countryLabel": "SSB Klass"
    }
  }
}

The full response also includes address fields (including geocoded businessAddressLat/businessAddressLng), NACE codes, parentOrgNumber, registry flags (isBankrupt, isInGroup, isBeingDissolved), enrichment fields (primaryDomain, linkedinHandle, technologies), the new enrichment scalars (description, descriptionKeywords, trafficRank, sizeClass, digitalizationIndex, socialIndex), an array of financials with computed ratios (profitMargin, returnOnEquity, equityRatio, grossMargin, ebitda, revenueGrowthYoY), an array of active roles (board, CEO, auditor — for NO and DK roles also carry ownershipPercent on EIER/EJER entries), and an array of subUnits (with geocoded addressLat/addressLng). Klass labels are attached alongside the raw codes: naceName (NACE description), orgFormName (org form description), countryName — see SSB Klass. Every response also carries _sources — a per-field attribution block for rendering source credits. Full field catalogue: Fields.

For NO companies on keys with financial history enabled, the response also includes pdfHistoryStatus: "available" (multi-year history is present), "fetching" (first-call extraction is running in the background — poll again in ~60 s), or "not_enabled" (feature not active for this key).

Examples

curl

curl -H "Authorization: Bearer $ORAKEL_KEY" \
  https://orakel.cloud/api/companies/923609016

JavaScript

const res = await fetch("https://orakel.cloud/api/companies/923609016", {
  headers: { Authorization: `Bearer ${process.env.ORAKEL_KEY}` },
});
const company = await res.json();

Swedish record

curl -H "Authorization: Bearer $ORAKEL_KEY" \
  "https://orakel.cloud/api/companies/5560000000?country=SE"

Error modes

Status Meaning Action
400 orgNumber is not 9 digits Check the path segment
401 Missing or invalid API key Check the Authorization: Bearer … header
404 Company not found (cache miss and Brreg returned 404, or non-NO miss) Verify the org number and country
429 Rate or quota exceeded Back off; see Rate limits
502 Brreg upstream error Retry

Rate limits

Per-key RPM applies (tier default: free 20/min, pro 60/min, enterprise 120/min). Per-IP 20 failed auth attempts per 15 min. Daily and monthly quotas are tier-scoped.

Typical use cases

  • CRM enrichment on a single record (orgNumber → full company).
  • Live refresh of a stale row — NO cache misses trigger a fresh Brreg pull.
  • Embedding market context with ?include=context for sales briefings.