# Norway BRREG Scraper — Company Registry & Officers ✅ (`themineworks/norway-brreg-entity-search`) Actor

Search Norway's official Business Register for company status, industry, address, employees and officer roles (CEO, board). No API key. Works in Claude, ChatGPT & any MCP-compatible AI agent. MCP server: the-mine-works-mcp.hatchable.site

- **URL**: https://apify.com/themineworks/norway-brreg-entity-search.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Business, Developer tools, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.00 / 1,000 entity scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Norway BRREG — Business Register Entity & Officer Search

Access Norway's official Brønnøysund Register Centre (BRREG) via its public REST API. Search across 1.16 million registered Norwegian entities, retrieve company status, industry classification, formation date, registered address, employee count — and uniquely, the full officer roster including CEO, board members, and authorized signatories. No API key required.

---

### What This Actor Does

The Norwegian Business Register (Enhetsregisteret) is one of the most complete and well-structured public business registries in the world. It is maintained by the Norwegian government and is freely accessible via `data.brreg.no`. This actor exposes two search modes:

**Name search** — submit a full or partial company name and get back all matching entities, ranked by relevance. Useful for finding a Norwegian company when you only know its trading name, not its organization number.

**Direct org-number lookup** — if you already have the 9-digit Norwegian organization number (organisasjonsnummer), the actor queries the entity endpoint directly for a precise, single-record result. This is the fastest and most reliable lookup mode.

In both modes, if `includeOfficers` is enabled (the default), the actor makes a second API call per entity to `/enheter/{org}/roller` — the officer roles endpoint — which returns the full list of registered roles including CEOs (Daglig leder), board members (Styremedlem), board chairs (Styrets leder), deputy members, and authorized signatories. This endpoint is not aggregated anywhere else on Apify and is the key differentiator of this actor.

---

### What Makes BRREG Unique

Norway's business register is unusual in that the officer roles endpoint is a distinct, structured resource with typed role categories — not just a list of names. Each role entry includes the role type code and description in Norwegian, the person's full name, and their country of residence. This makes it immediately useful for:

- Identifying who controls a company without reading a PDF annual report
- Cross-referencing directors across multiple Norwegian entities (ownership and interlocking boards)
- AML screening — knowing the natural persons behind a legal entity

The register covers all Norwegian legal entity forms including AS (private limited), ASA (public limited), ENK (sole trader), DA/ANS (partnerships), NUF (Norwegian branch of a foreign company), and stiftelser (foundations).

---

### Target Buyers

**International investors doing Nordic due diligence** — Norway's sovereign wealth fund and energy sector make it a frequent target for cross-border investment. Verifying the legal structure, registered address, and board composition of a Norwegian target company is a mandatory step in any deal process.

**KYC/AML compliance teams** — Norwegian entities frequently appear in correspondent banking chains, trade finance deals, and insurance contracts. Verifying the legal name, organization number, and beneficial owners (via officer roles) against sanctions lists requires a clean data pull from the authoritative source.

**Business intelligence and market research platforms** — mapping the Norwegian corporate landscape by industry code (NACE), municipality, or employee band requires bulk access to the register. This actor supports `maxResults` up to 500 per run and can be chained with Apify datasets.

**Supply chain compliance teams** — verifying that Norwegian suppliers are active registered entities (not bankrupt or under liquidation) before signing procurement contracts.

---

### Inputs

| Field | Type | Description |
|---|---|---|
| `name` | string | Full or partial company name (e.g. "Equinor", "Telenor") |
| `orgNumber` | string | 9-digit Norwegian org number for direct lookup |
| `municipalityNumber` | string | 4-digit municipality code to filter by location |
| `includeOfficers` | boolean | Fetch officer roles per entity (default: true) |
| `maxResults` | integer | Cap on entities returned (1–500, default: 50) |

You must provide at least one of `name`, `orgNumber`, or `municipalityNumber`. If `orgNumber` is provided it takes precedence and returns a single entity.

---

### Output Sample

```json
{
  "org_number": "923609016",
  "name": "EQUINOR ASA",
  "org_form": "Allmennaksjeselskap",
  "industry_code": "06.100",
  "industry_description": "Utvinning av råolje",
  "registration_date": "2007-10-01",
  "municipality": "STAVANGER",
  "address": "Forusbeen 50 4035 STAVANGER",
  "employee_count": 21000,
  "status_bankrupt": false,
  "status_under_liquidation": false,
  "officers": [
    { "role": "Daglig leder", "name": "Anders Opedal", "country_of_residence": "NO" },
    { "role": "Styrets leder", "name": "Jon Erik Reinhardsen", "country_of_residence": "NO" },
    { "role": "Styremedlem", "name": "Anne Drinkwater", "country_of_residence": "GB" }
  ],
  "scraped_at": "2026-06-15T10:32:00.000Z"
}
````

***

### Pricing

- **First 25 entities free** — the free tier is tracked per account across all runs using a persistent key-value store. No time expiry on the free 25.
- **$5 per 1,000 entities** after the free tier ($0.005 per entity). No subscription, no minimum.

Officer role API calls are included in the per-entity price.

***

### Frequently Asked Questions

**What does the officer roles endpoint return exactly?**
It returns all `rollegrupper` (role groups) registered against the entity. Each group has a type (e.g. STYR for board, DAGL for daily management) and a list of individuals with their role within that group. Common roles: Daglig leder (CEO/Managing Director), Styrets leder (Chair), Styremedlem (Board Member), Varamedlem (Deputy Member), Prokura (signatory authority). The actor normalizes all of these into a flat `officers` array with `role`, `name`, and `country_of_residence` fields.

**How do I look up a company by its org number?**
Set the `orgNumber` input to the 9-digit Norwegian organization number (no spaces or dots). Example: `923609016` for Equinor. This triggers a direct entity lookup and returns a single record immediately, bypassing the name search pagination.

**What are NACE codes?**
NACE is the European standard industrial activity classification system (Nomenclature statistique des activités économiques dans la Communauté européenne). Norwegian companies register their primary industry activity using a NACE code (e.g. 06.100 = Crude oil extraction, 62.010 = Computer programming). The actor returns both the code and its Norwegian-language description. NACE codes are directly comparable to SIC codes used in the US.

**What does `status_bankrupt: true` mean?**
The entity has been registered as bankrupt (konkurs) in the BRREG system. You should not transact with such entities. Similarly, `status_under_liquidation: true` means the company has initiated a formal winding-up process.

**Can I search by municipality?**
Yes. Pass the 4-digit Norwegian municipality number (kommunenummer) in the `municipalityNumber` field. This is useful for generating lists of all registered businesses in a specific area — for example, mapping the commercial landscape of Oslo (0301) or Bergen (4601). You can combine it with a `name` search to narrow further.

**Is this data real-time or cached?**
The actor queries the live BRREG REST API on each run. BRREG updates the register continuously as filings are received. Officer changes and status changes typically reflect within 1–2 business days of the filing date.

**How does this compare to other Nordic registry data available on Apify?**
Most business registry actors return basic name/address/registration data from search pages. This actor uses the BRREG REST API directly, which exposes structured data including the officer roles sub-resource — a level of detail not available from a simple web scrape of brreg.no. The officer roles endpoint is unique to this actor in the Apify marketplace.

**What happens if I provide neither a name nor an org number?**
The actor will attempt a broad search with only pagination parameters, which BRREG may reject or return unpredictable results for. Always provide at least one of `name`, `orgNumber`, or `municipalityNumber` to get meaningful results.

***

### Technical Notes

- The actor uses ESM (`"type": "module"`) with Node 18+.
- Pagination uses BRREG's built-in `page` and `size` parameters; the actor stops when it reaches `maxResults` or exhausts the result set.
- All requests include a `User-Agent` header per BRREG API usage guidelines.
- The `_type: "summary"` record appended at run end is a metadata row — filter it out when processing results programmatically (`record._type !== 'summary'`).
- Officer role lookups are rate-limited to 200ms spacing per entity to avoid triggering BRREG's fair-use throttle.

# Actor input Schema

## `name` (type: `string`):

Full or partial company name to search.

## `orgNumber` (type: `string`):

Look up a specific 9-digit Norwegian org number directly.

## `municipalityNumber` (type: `string`):

4-digit Norwegian municipality code to filter by location.

## `includeOfficers` (type: `boolean`):

Fetch CEO, board members, and other registered roles for each entity.

## `maxResults` (type: `integer`):

Maximum entities to return.

## Actor input object example

```json
{
  "name": "Equinor",
  "includeOfficers": true,
  "maxResults": 10
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "name": "Equinor",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/norway-brreg-entity-search").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "name": "Equinor",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/norway-brreg-entity-search").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "name": "Equinor",
  "maxResults": 10
}' |
apify call themineworks/norway-brreg-entity-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=themineworks/norway-brreg-entity-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Norway BRREG Scraper — Company Registry & Officers ✅",
        "description": "Search Norway's official Business Register for company status, industry, address, employees and officer roles (CEO, board). No API key. Works in Claude, ChatGPT & any MCP-compatible AI agent. MCP server: the-mine-works-mcp.hatchable.site",
        "version": "0.1",
        "x-build-id": "fLdMf4xOwO2FHzqRN"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/themineworks~norway-brreg-entity-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-themineworks-norway-brreg-entity-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/themineworks~norway-brreg-entity-search/runs": {
            "post": {
                "operationId": "runs-sync-themineworks-norway-brreg-entity-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/themineworks~norway-brreg-entity-search/run-sync": {
            "post": {
                "operationId": "run-sync-themineworks-norway-brreg-entity-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "name": {
                        "title": "Company name",
                        "type": "string",
                        "description": "Full or partial company name to search."
                    },
                    "orgNumber": {
                        "title": "Organization number",
                        "type": "string",
                        "description": "Look up a specific 9-digit Norwegian org number directly."
                    },
                    "municipalityNumber": {
                        "title": "Municipality number",
                        "type": "string",
                        "description": "4-digit Norwegian municipality code to filter by location."
                    },
                    "includeOfficers": {
                        "title": "Include officer roles",
                        "type": "boolean",
                        "description": "Fetch CEO, board members, and other registered roles for each entity.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Max entities",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximum entities to return.",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
