# Norway Company Search - Org Number Lookup & B2B Leads (Brreg) (`tinyrex/norway-company-search`) Actor

Norwegian company data from the official Brreg open data API: org number or name lookup, or B2B lead lists by NACE code, municipality, size and new registrations, with email, phone, website, address and roles. $1 per 1,000 companies; not found free.

- **URL**: https://apify.com/tinyrex/norway-company-search.md
- **Developed by:** [TinyRex](https://apify.com/tinyrex) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.80 / 1,000 companies

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Norway Company Search - Org Number Lookup & B2B Leads (Brreg)

Get Norwegian company data straight from the **official Brønnøysund Register Centre open data API** (Enhetsregisteret). Look up companies by **organisation number or name**, or build **B2B lead lists** by NACE industry code, municipality, postal code, legal form, employee count and registration date. Each company comes with **email, phone, website**, business and postal address, VAT number, share capital, status flags and, optionally, the **CEO, board and auditor**.

**$1 per 1,000 companies.** Invalid org numbers, names or searches with no match, duplicates and rows skipped by your filters are **free**.

### What you can do with it

- **Enrich a CRM list** of Norwegian org numbers (`923609016`, `923 609 016` or `NO923609016MVA` all work) with name, address, industry, size, email and phone.
- **Build lead lists**: all IT companies (`naceCodes: ["62"]`) in Oslo with 10 to 200 employees and an email address.
- **Fresh-company leads**: every company registered in Bergen since last Monday (`registeredFrom`), ideal for accountants, banks, insurers and SaaS sales.
- **KYC and due diligence**: check that a supplier is active, VAT-registered and not bankrupt or under liquidation, and see who the CEO and board are.
- **Market sizing**: count companies per industry and municipality (`matchTotal` shows the full count for a search).

### Input examples

Lookup by org number or name:

```json
{ "companies": ["923609016", "NO 914 778 271 MVA", "Telenor"] }
```

IT companies in Oslo with 10+ employees and an email, largest first:

```json
{ "naceCodes": ["62"], "municipalities": ["Oslo"], "minEmployees": 10, "withEmailOnly": true, "maxResults": 500 }
```

New AS companies registered since a date, with roles:

```json
{ "legalForms": ["AS"], "registeredFrom": "2026-10-01", "includeRoles": true, "sortByEmployees": false, "maxResults": 1000 }
```

### Output

One row per company. Example (shortened):

```json
{
  "query": "914778271",
  "queryType": "orgNumber",
  "found": true,
  "orgNumber": "914778271",
  "name": "Norsk Hydro ASA",
  "legalFormCode": "ASA",
  "naceCode": "24.420",
  "naceDescription": "Produksjon av aluminium",
  "employees": 391,
  "email": "corporate@hydro.com",
  "phone": "22 53 81 00",
  "website": "https://www.hydro.com",
  "businessAddress": { "street": "Drammensveien 260", "postalCode": "0283", "city": "OSLO", "municipalityNumber": "0301" },
  "foundedDate": "1905-12-02",
  "vatRegistered": true,
  "vatNumber": "NO914778271MVA",
  "active": true,
  "bankrupt": false,
  "shareCapital": { "amount": 2172381071.33, "currency": "NOK" },
  "lastAnnualAccountsYear": 2025,
  "brregUrl": "https://virksomhet.brreg.no/nb/oppslag/enheter/914778271"
}
```

Other fields: `legalForm`, `secondaryNace`, `mobile`, `postalAddress`, `registeredDate`, `inBusinessRegister`, `underLiquidation`, `underForcedDissolution`, `partOfGroup`, `parentOrgNumber`, `sector`, `purpose`, `previousNames`, `matchTotal` and `roles` (with `includeRoles`). Not-found and invalid inputs get a free row with `found: false` and an `error` explaining why. Run totals are saved in the `SUMMARY` record.

### Pricing

Pay per event: **$0.001 per company returned** ($1 per 1,000), with automatic Bronze/Silver/Gold discounts. A company found by several inputs is charged once. Not charged: invalid org numbers (the check digit is validated), names or searches with no match, duplicates, and rows skipped by `withEmailOnly`. Set a maximum charge per run in Apify and the actor stops cleanly at it, saving everything it got.

### Tips and limits

- NACE codes follow the Norwegian SN2025 standard; a prefix such as `62` or `62.1` matches every code below it.
- The register serves at most 10,000 results per search. For bigger lists, split by municipality or NACE code.
- Employee counts come from the register (NAV Aa-registeret); sole proprietors often have none.
- Roles (`includeRoles`) need one extra request per company, so large lists run slower. Only names and roles are returned, never birth dates.
- Financial statements (revenue, profit) are not included.
- The actor stops gracefully before the run timeout and keeps the results it already has.

### Data source and licence

Data: [Enhetsregisteret open data API](https://data.brreg.no/enhetsregisteret/api/dokumentasjon/en/index.html) by Brønnøysundregistrene, licensed under the [Norwegian Licence for Open Government Data (NLOD) 2.0](https://data.norge.no/nlod/en/2.0), which allows commercial reuse with attribution. This actor is not affiliated with or endorsed by Brønnøysundregistrene. Register data can include names and work emails of people; if you process it for marketing, you are the data controller under GDPR, so check your legal basis and honour opt-outs.

### Related actors

- [France Company Search](https://apify.com/tinyrex/france-company-search): French companies by SIREN, SIRET or name, and B2B lists from Sirene.
- [Finland Company Search](https://apify.com/tinyrex/finland-company-search): Finnish companies by Y-tunnus or name, and B2B lists from the official PRH/YTJ register.
- [UK Companies House Lookup](https://apify.com/tinyrex/uk-companies-house-lookup): UK company profiles and officers.
- [GLEIF LEI Lookup](https://apify.com/tinyrex/gleif-lei-lookup): Legal Entity Identifiers worldwide.
- [Contact Details Extractor](https://apify.com/tinyrex/contact-details-extractor): emails and phones from company websites.

# Actor input Schema

## `companies` (type: `array`):

One per line: a Norwegian organisation number (9 digits; spaces and NO...MVA are fine) for an exact lookup, or a company name for the best match. Invalid numbers and names with no match are free.

## `maxResultsPerName` (type: `integer`):

How many matches to return for each company name. Org number lookups always return one company.

## `preferLargest` (type: `boolean`):

Rank name matches by number of employees, so "Telenor" returns the big Telenor companies first instead of a small one with the same word in its name.

## `searchName` (type: `string`):

Optional word the company name must contain. Combine with the filters below, or use the filters alone.

## `naceCodes` (type: `array`):

Norwegian SN2025 / NACE codes or prefixes, e.g. 62 (IT services), 62.100 (programming), 56 (restaurants), 43.210 (electricians).

## `municipalities` (type: `array`):

Municipality names or 4-digit numbers, e.g. Oslo, Bergen, Trondheim, 0301.

## `postalCodes` (type: `array`):

4-digit postal codes of the business address, e.g. 0150.

## `legalForms` (type: `array`):

Organisation form.

## `minEmployees` (type: `integer`):

Only companies with at least this many registered employees.

## `maxEmployees` (type: `integer`):

Only companies with at most this many registered employees.

## `registeredFrom` (type: `string`):

Only companies registered in Enhetsregisteret on or after this date (YYYY-MM-DD). Great for fresh-company lead lists.

## `registeredTo` (type: `string`):

Only companies registered on or before this date (YYYY-MM-DD).

## `vatRegisteredOnly` (type: `boolean`):

Only companies in the VAT register (Merverdiavgiftsregisteret).

## `withEmailOnly` (type: `boolean`):

Skip list results without a registered email (skipped rows are not charged).

## `sortByEmployees` (type: `boolean`):

Sort the list by number of employees (largest first).

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

Cap for the filtered search (the register API serves at most 10,000 per search; split by municipality to get more).

## `activeOnly` (type: `boolean`):

Skip bankrupt companies and companies under liquidation or forced dissolution (in name lookups and list searches).

## `includeRoles` (type: `boolean`):

Current CEO, chair, board members, auditor and accountant from the register: names and roles only, no birth dates. One extra request per company, so runs are slower.

## Actor input object example

```json
{
  "companies": [
    "923609016",
    "Telenor"
  ],
  "maxResultsPerName": 1,
  "preferLargest": true,
  "vatRegisteredOnly": false,
  "withEmailOnly": false,
  "sortByEmployees": true,
  "maxResults": 100,
  "activeOnly": true,
  "includeRoles": false
}
```

# Actor output Schema

## `companies` (type: `string`):

Norwegian companies with org number, NACE code, employees, email, phone, website, address and roles.

## `summary` (type: `string`):

Totals for the run.

# 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 = {
    "companies": [
        "923609016",
        "Telenor"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("tinyrex/norway-company-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 = { "companies": [
        "923609016",
        "Telenor",
    ] }

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

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

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

```

## CLI example

```bash
echo '{
  "companies": [
    "923609016",
    "Telenor"
  ]
}' |
apify call tinyrex/norway-company-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tinyrex/norway-company-search"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/WN20kaJoiLuXpeTmj/builds/XVkVjRj1ghIYPkWxm/openapi.json
