# Proff.no Scraper — Norwegian Company Register Data (`studio-amba/proff-no-scraper`) Actor

Search and extract Norwegian company data from Proff.no by company name. Returns org number, address, industry, revenue, profit, employees, and board members/officers. No login required.

- **URL**: https://apify.com/studio-amba/proff-no-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (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 $12.00 / 1,000 result 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/docs.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.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/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

## Proff.no Scraper — Norwegian Company Register Data

Search Norwegian companies on Proff.no by name and extract structured company
data: organization number, address, industry, revenue, profit, employees,
CEO, board members, and parent company.

### Why use this actor?

Proff.no is Norway's main business information directory (similar to KVK for
the Netherlands or North Data for Germany), pulling from the Brønnøysund
Register Centre plus Proff's own financial data. This actor turns a company
name search into clean, structured JSON — useful for lead generation, sales
prospecting, credit/risk checks, market research, and building a Nordic
company database without manually looking up each entity on the site.

### How to scrape Proff.no company data

1. Set `searchQuery` to the Norwegian company name you want to look up
   (e.g. `"Telenor"`, `"Equinor"`, `"Norsk Hydro"`). The search matches
   Proff's own company-name search box.
2. Leave `fetchDetails` enabled (default) to get the full company profile —
   founding/registration date, business purpose, NACE industry codes, board
   members and officers, and parent company. Disable it for a faster run that
   only returns the lighter search-result fields (name, org number, address,
   revenue, employees — still populated on every result, just without the
   board/founding-date extras).
3. Set `maxResults` (default 20, max 25 — see Limitations for why).
4. Run the actor. Results are written to the default dataset as one row per
   company.

Under the hood, the actor reads the same `__NEXT_DATA__` JSON payload that
Proff's own Next.js frontend hydrates from — no HTML scraping of rendered
text, no anti-bot browser automation needed. Proff.no serves this to plain
HTTP requests with no login and no API key.

### Input

| Field | Type | Required | Description |
|-------|------|----------|--------------|
| `searchQuery` | String | No | Norwegian company name to search for. Default: `"Telenor"`. |
| `fetchDetails` | Boolean | No | Fetch each company's full detail page for founding date, board members, purpose, NACE codes, parent company (default: `true`). |
| `maxResults` | Integer | No | Maximum companies to return (default: 20, max: 25 — the verified per-search ceiling). |
| `proxyConfiguration` | Object | No | Proxy settings. Defaults to Apify Residential proxy, country Norway. |

### Output

Each result contains:

| Field | Type | Example |
|-------|------|---------|
| `companyName` | String | `"TELENOR NORGE AS"` |
| `legalName` | String | `"TELENOR NORGE AS"` |
| `orgNumber` | String | `"976967631"` |
| `companyTypeCode` | String | `"AS"` |
| `companyTypeName` | String | `"Aksjeselskap"` |
| `status` | String | `"ACTIVE"` |
| `industry` | String | `"Telekommunikasjon"` |
| `industryCode` | String | `"2210"` |
| `naceIndustries` | Array | `["61.100 Kabelbasert, satellittbasert og trådløs telekommunikasjon"]` |
| `address` | String | `"Snarøyveien 30"` |
| `postalCode` | String | `"1360"` |
| `city` | String | `"Fornebu"` |
| `county` | String | `"Akershus"` |
| `municipality` | String | `"Bærum"` |
| `revenue` | Number | `25787000` |
| `profit` | Number | `5010000` |
| `currency` | String | `"NOK"` |
| `employees` | Number | `2831` |
| `phone` | String | `"91509000"` |
| `ceoName` | String | `"Birgitte Engebretsen"` |
| `ceoRole` | String | `"Daglig leder"` |
| `boardMembers` | Array | `["Sigvart Voss Eriksen", "Kenneth Pettersen", ...]` |
| `boardMemberNames` | String | `"Sigvart Voss Eriksen, Kenneth Pettersen, ..."` |
| `parentCompanyName` | String | `"Telenor Networks Holding AS"` |
| `parentCompanyOrgNumber` | String | `"983939724"` |
| `foundationDate` | String | `"28.11.1996"` |
| `registrationDate` | String | `"09.12.1996"` |
| `purpose` | String | `"Å bygge ut, eie og drive effektive nett for telekommunikasjon..."` |
| `url` | String | `"https://www.proff.no/selskap/telenor-norge-as/fornebu/telekommunikasjon/IG5NT1R01PE"` |
| `scrapedAt` | String | `"2026-07-14T20:00:00.000Z"` |

Note: `revenue` and `profit` are reported by Proff.no in **NOK thousands**,
matching how Norwegian annual accounts (regnskap) are typically filed — a
value of `25787000` means roughly NOK 25.8 billion, not NOK 25.8 million.

### Example output

```json
{
    "companyName": "TELENOR NORGE AS",
    "legalName": "TELENOR NORGE AS",
    "orgNumber": "976967631",
    "companyTypeCode": "AS",
    "companyTypeName": "Aksjeselskap",
    "status": "ACTIVE",
    "industry": "Telekommunikasjon",
    "industryCode": "2210",
    "naceIndustries": ["61.100 Kabelbasert, satellittbasert og trådløs telekommunikasjon"],
    "address": "Snarøyveien 30",
    "postalCode": "1360",
    "city": "Fornebu",
    "county": "Akershus",
    "municipality": "Bærum",
    "revenue": 25787000,
    "profit": 5010000,
    "currency": "NOK",
    "employees": 2831,
    "phone": "91509000",
    "ceoName": "Birgitte Engebretsen",
    "ceoRole": "Daglig leder",
    "boardMembers": ["Sigvart Voss Eriksen", "Kenneth Pettersen"],
    "boardMemberNames": "Sigvart Voss Eriksen, Kenneth Pettersen",
    "parentCompanyName": "Telenor Networks Holding AS",
    "parentCompanyOrgNumber": "983939724",
    "foundationDate": "28.11.1996",
    "registrationDate": "09.12.1996",
    "purpose": "Å bygge ut, eie og drive effektive nett for telekommunikasjon i Norge...",
    "url": "https://www.proff.no/selskap/telenor-norge-as/fornebu/telekommunikasjon/IG5NT1R01PE",
    "scrapedAt": "2026-07-14T20:00:00.000Z"
}
````

### Cost estimate

This actor makes 1 search request plus (optionally) 1 detail-page request per
result — a lightweight HTTP scraper with no browser rendering. At standard
Apify compute pricing this runs well under $1 per 1,000 companies in compute
alone; see the actor's pricing tab for the per-result and per-run pricing
that applies to your account.

### Limitations

- Proff.no's company-name search returns a maximum of 25 companies per
  search on the first (and only allowed) results page. Proff's `robots.txt`
  explicitly disallows requesting further pages via the `page=` parameter
  for this search endpoint, so this actor does not paginate past page 1 —
  25 is the real, verified ceiling per search, not a self-imposed limit.
  Narrow your `searchQuery` if you need to isolate a specific company out of
  a large result set.
- `revenue`, `profit`, and `employees` reflect the latest figures Proff has
  on file (`companyAccountsLastUpdatedDate` indicates the accounting year) —
  very small or newly founded companies may not have this data yet.
- Data is scraped from the public Proff.no website and may change without
  notice. Respect Proff's terms of service and use responsibly.

### Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs,
deduplication, delta detection, and delivery to your inbox, Google Sheets,
or API — maintenance included. We can also build a custom version with your
exact fields and filters, or combine multiple sources into one feed.

See [studioamba.dev/services](https://studioamba.dev/services/) or email
<hello@studioamba.dev> for a free data sample.
We maintain 300+ European web scrapers and answer within one business day.

# Actor input Schema

## `searchQuery` (type: `string`):

Search for a Norwegian company by name. Example: 'Telenor', 'Equinor', 'Norsk Hydro'.

## `fetchDetails` (type: `boolean`):

When enabled (default), the actor opens each company's profile page to extract founding/registration date, purpose, NACE industry codes, board members/officers, and parent company. Disable to get only the lightweight search-result fields (name, org number, address, revenue, employees) much faster.

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

Maximum number of companies to return. Proff.no's company-name search returns up to 25 results on the first page (a verified server-side cap — size/limit/pageSize params do not raise it). Requesting further pages via the page= parameter is disallowed by Proff's robots.txt, so 25 is the real ceiling for a single search.

## `proxyConfiguration` (type: `object`):

Select proxies to use. A Norwegian residential proxy is used by default — no datacenter proxy pool covers Norway on this account.

## Actor input object example

```json
{
  "searchQuery": "Telenor",
  "fetchDetails": true,
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "NO"
  }
}
```

# 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 = {
    "searchQuery": "Telenor",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "NO"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/proff-no-scraper").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 = {
    "searchQuery": "Telenor",
    "maxResults": 20,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "NO",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/proff-no-scraper").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 '{
  "searchQuery": "Telenor",
  "maxResults": 20,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "NO"
  }
}' |
apify call studio-amba/proff-no-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=studio-amba/proff-no-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Proff.no Scraper — Norwegian Company Register Data",
        "description": "Search and extract Norwegian company data from Proff.no by company name. Returns org number, address, industry, revenue, profit, employees, and board members/officers. No login required.",
        "version": "0.0",
        "x-build-id": "aG8CljEetoXa3yj5L"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~proff-no-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-proff-no-scraper",
                "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/studio-amba~proff-no-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-proff-no-scraper",
                "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/studio-amba~proff-no-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-proff-no-scraper",
                "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": {
                    "searchQuery": {
                        "title": "Company Name",
                        "type": "string",
                        "description": "Search for a Norwegian company by name. Example: 'Telenor', 'Equinor', 'Norsk Hydro'."
                    },
                    "fetchDetails": {
                        "title": "Fetch Full Company Profile",
                        "type": "boolean",
                        "description": "When enabled (default), the actor opens each company's profile page to extract founding/registration date, purpose, NACE industry codes, board members/officers, and parent company. Disable to get only the lightweight search-result fields (name, org number, address, revenue, employees) much faster.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 25,
                        "type": "integer",
                        "description": "Maximum number of companies to return. Proff.no's company-name search returns up to 25 results on the first page (a verified server-side cap — size/limit/pageSize params do not raise it). Requesting further pages via the page= parameter is disallowed by Proff's robots.txt, so 25 is the real ceiling for a single search.",
                        "default": 20
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Select proxies to use. A Norwegian residential proxy is used by default — no datacenter proxy pool covers Norway on this account.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "NO"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
