# Proff Scraper — Nordic Company Leads & Financials (`hipersoft/proff-scraper`) Actor

Scrape Nordic companies from Proff and Allabolag by industry or keyword: name, org number, phone, email, website, address, employees, revenue, profit, plus legal form, NACE, roles, shareholders, contact persons and multi-year accounts. Norway, Sweden, Denmark, Finland.

- **URL**: https://apify.com/hipersoft/proff-scraper.md
- **Developed by:** [Hipersoft](https://apify.com/hipersoft) (community)
- **Categories:** Lead generation
- **Features:** Limited permissions
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.0005 / company

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

## Proff Scraper: Nordic Company Leads, Contacts and Financials (Norway, Sweden, Denmark, Finland)

**Proff Scraper** extracts company data from **Proff.no, Proff.dk, Proff.fi and Allabolag.se**, the leading business directories of **Norway, Denmark, Finland and Sweden**. Search any **industry, trade or keyword** (rørlegger, regnskap, rörmokare, vvs, tilitoimisto…) and get for every company the **name, organisation number, industry, phone, mobile, email, website, visiting and postal address, municipality, region, coordinates, number of employees, revenue, profit, accounts year, main contact person and role, and logo**. Turn on **Full company profile** to also get the **legal form, purpose, NACE codes, founding and registration dates, share capital, management and board roles, shareholders, contact persons with phone and email, Facebook/Instagram/LinkedIn links, keywords, announcements** and **up to 5 years of accounts** with **revenue, EBITDA, operating result, profit before tax, net result, total assets, cash, equity, debt, equity ratio and liquidity**. Export to **CSV, Excel or JSON**. Ideal for **B2B lead generation, sales prospecting, credit and market analysis in the Nordics**.

![Proff Scraper input input — configure the options in the Apify Console](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/proff-scraper-input.png)

### What does Proff Scraper do?

- 🇳🇴🇸🇪🇩🇰🇫🇮 **Four Nordic countries**: Norway, Sweden, Denmark and Finland.
- 🔎 **Industry and keyword search** in the local language.
- 📞 **Phone, mobile, email and website** for B2B outreach.
- 📍 **Address, municipality, region and coordinates**.
- 💰 **Revenue, profit and employees** on every company.
- 🏛️ **Legal form, NACE codes, founding date and share capital** (optional).
- 👔 **Management, board, auditor and shareholders** (optional).
- 📊 **Up to 5 years of accounts** with key figures and ratios (optional).
- 🌐 **Social media links** and company keywords (optional).
- ✅ **Only companies with phone or email** filter.
- 🔗 **Paste search links** with region filters.

### What data can you scrape from Proff and Allabolag?

| Field | Description |
|---|---|
| Company | Name, display name, org number, profile link, logo, description |
| Industry | Main industry, all industries, NACE codes\* |
| Contact | Phone, phone 2, mobile, email, website |
| Location | Address, postal address, post code, city, municipality, region, latitude, longitude |
| Size | Employees, revenue, profit, currency, accounts year |
| People | Main contact and role; management, board, auditor, shareholders and contact persons\* |
| Legal\* | Legal form, purpose, founded, registered, share capital, VAT registration, signatories |
| Accounts\* | Revenue, sales, cost of goods, EBITDA, operating result, result before tax, net result, assets, cash, equity, debt, ratios by year |
| Online\* | Facebook, Instagram, LinkedIn, Twitter, YouTube, keywords |
| News\* | Recent registry announcements |

\* With **Full company profile** turned on.

### Use cases for Nordic company data

- **B2B lead generation**: build call and email lists of plumbers, accountants, dentists, builders or any trade in Norway, Sweden, Denmark and Finland.
- **Sales prospecting**: target companies by size, revenue and region.
- **Market sizing**: count companies and revenue per industry and region.
- **Credit and supplier checks**: review accounts, equity ratio and liquidity before doing business.
- **CRM enrichment**: add org numbers, contacts and financials to your accounts.
- **M\&A and investment research**: find profitable small and mid-sized companies.

### How to scrape Proff

1. Click **Try for free** to open Proff Scraper in Apify Console.
2. Enter **industries or keywords** and choose **countries**, or paste **search links**.
3. Optionally turn on **Full company profile** and **Only companies with phone or email**.
4. Set **Max companies** and click **Start**.
5. Download the companies as **CSV, Excel or JSON**.

### Input

#### Example input

```json
{
  "searchTerms": ["rørlegger", "elektriker"],
  "country": ["norway"],
  "includeDetails": true,
  "onlyWithContact": true,
  "maxItems": 500
}
```

| Field | Description |
|---|---|
| **Industries or keywords** | One search per term and country, in the local language. |
| **Countries** | Norway, Sweden, Denmark, Finland. |
| **Search links** | Proff or Allabolag industry-search links with your filters. |
| **Full company profile** | Adds legal data, roles, shareholders and accounts. |
| **Only companies with phone or email** | Skip companies without contact details. |
| **Max companies** | Stop after this many (0 = no limit). |

### Output

![Proff Scraper input output — the results as a clean dataset](https://api.apify.com/v2/key-value-stores/SUfvnaFLd9z9eBCtV/records/proff-scraper-output.png)

#### Company example (with full profile)

```json
{
  "companyName": "Viken Boligentreprenør AS",
  "orgNumber": "927169096",
  "country": "norway",
  "industry": "Entreprenører",
  "phone": "46316571",
  "email": "stian@vikenbe.as",
  "website": "https://www.vikenboligentreprenor.no/",
  "address": "Tulipanvegen 6, 2034 Holter",
  "municipality": "Nannestad",
  "region": "Akershus",
  "employees": 5,
  "revenue": 24757000,
  "profit": 1033000,
  "currency": "NOK",
  "contactName": "Stian Sunde Johansen",
  "contactRole": "Daglig leder",
  "companyType": "Aksjeselskap",
  "naceCodes": ["43.320 Snekkerarbeid"],
  "foundedDate": "14.04.2021",
  "shareCapital": 30000,
  "financials": [
    { "year": 2025, "revenue": 24757000, "ebitda": 1261000, "operatingResult": 1033000, "netResult": 825000, "equity": 2049000, "equityRatioPct": 37.9 }
  ],
  "search": "rørlegger (norway)"
}
```

#### Output schema

| Field | Type | Description |
|---|---|---|
| `companyName`, `displayName`, `orgNumber`, `country`, `url`, `companyId`, `logo`, `description` | string | Company. |
| `industry`, `industries`, `naceCodes` | mixed | Industry. |
| `phone`, `phone2`, `mobile`, `email`, `website` | string | Contact. |
| `address`, `postalAddress`, `postCode`, `city`, `municipality`, `region`, `latitude`, `longitude` | mixed | Location. |
| `employees`, `revenue`, `profit`, `currency`, `accountsYear` | mixed | Size (amounts in full currency units). |
| `contactName`, `contactRole`, `marketingProtected` | mixed | Main contact. |
| `companyType`, `companyTypeCode`, `purpose`, `foundedDate`, `registeredDate`, `shareCapital`, `vatRegistered`, `signatories` | mixed | Legal data. |
| `roles`, `shareholders`, `contactPersons` | array | People and owners. |
| `financials` | array | Accounts by year. |
| `facebook`, `instagram`, `linkedin`, `twitter`, `youtube`, `keywords` | mixed | Online presence. |
| `hasMortgages`, `announcements` | mixed | Registry info. |
| `search`, `scrapedAt` | string | Source info. |

### How much does it cost?

Proff Scraper uses **pay-per-company** pricing: a small fixed price per company, with automatic discounts on higher Apify plans. See the **Pricing** tab for the exact price.

### More company data

- [Zefix Scraper](https://apify.com/hipersoft/zefix-scraper): Swiss company register.
- [Hotfrog Scraper](https://apify.com/hipersoft/hotfrog-scraper): business directory leads.
- [SBA Small Business Scraper](https://apify.com/hipersoft/sba-dsbs-scraper): US small businesses.

### FAQ

**Which language should I search in?**
Use the local word for the trade or industry, e.g. "rørlegger" in Norway, "rörmokare" in Sweden, "vvs" in Denmark or "putkiasennus" in Finland.

**Are revenue and profit in thousands?**
No. Amounts are converted to full currency units (NOK, SEK, DKK or EUR).

**What does marketingProtected mean?**
The company has opted out of direct marketing in the national register. Respect this flag in your outreach.

**Can I filter by region?**
Apply region filters on Proff or Allabolag, copy the link and paste it into **Search links**.

**What formats can I export?**
CSV, Excel, JSON, XML, HTML and RSS, or read the results through the Apify API.

**Can I integrate Proff Scraper with other apps?**
Proff Scraper can be connected with almost any cloud service or web app thanks to [integrations on the Apify platform](https://apify.com/integrations). It works with [Make](https://apify.com/integrations/make), [Zapier](https://apify.com/integrations/zapier), [Slack](https://docs.apify.com/platform/integrations/slack), [Airbyte](https://docs.apify.com/platform/integrations/airbyte), [GitHub](https://docs.apify.com/platform/integrations/github), [Google Drive](https://docs.apify.com/platform/integrations/drive) and [many more](https://apify.com/integrations), plus the [Apify API](https://docs.apify.com/api/v2), JS/Python clients and MCP. Or use [webhooks](https://docs.apify.com/platform/integrations/webhooks) to trigger an action whenever a run finishes.

**Is it legal to scrape Proff?**
The scraper only collects publicly available business information. You are responsible for using the data in line with Proff's terms, GDPR and local marketing rules.

### Related Actors

- [Zefix Scraper](https://apify.com/hipersoft/zefix-scraper)
- [Hotfrog Scraper](https://apify.com/hipersoft/hotfrog-scraper)

### Notes

Original clean-room implementation. Returns only public data. Not affiliated with Proff or Allabolag.

# Actor input Schema

## `searchTerms` (type: `array`):

Industry, trade or keyword in the local language, e.g. rørlegger, regnskap, tannlege (Norway), rörmokare, redovisning (Sweden), vvs, revisor (Denmark), putkiasennus, tilitoimisto (Finland). Each term is a separate search in each chosen country.

## `country` (type: `array`):

Countries to search the terms in.

## `startUrls` (type: `array`):

Optional. Paste industry-search links from Proff (proff.no, proff.dk, proff.fi) or Allabolag (allabolag.se) with your own region filters.

## `includeDetails` (type: `boolean`):

Also collect legal form, purpose, NACE codes, founding date, share capital, management and board roles, shareholders, contact persons, social links, keywords, announcements and up to 5 years of accounts (revenue, EBITDA, operating result, net result, assets, equity, debt, ratios). Slower.

## `onlyWithContact` (type: `boolean`):

Skip companies without a phone, mobile or email.

## `maxItems` (type: `integer`):

Stop after this many companies. 0 means no limit.

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

Not required for normal use.

## Actor input object example

```json
{
  "searchTerms": [
    "rørlegger"
  ],
  "country": [
    "norway"
  ],
  "includeDetails": false,
  "onlyWithContact": false,
  "maxItems": 50,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `results` (type: `string`):

The results as dataset items.

# 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 = {
    "searchTerms": [
        "rørlegger"
    ],
    "country": [
        "norway"
    ],
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("hipersoft/proff-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 = {
    "searchTerms": ["rørlegger"],
    "country": ["norway"],
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("hipersoft/proff-scraper").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 '{
  "searchTerms": [
    "rørlegger"
  ],
  "country": [
    "norway"
  ],
  "maxItems": 50
}' |
apify call hipersoft/proff-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,hipersoft/proff-scraper"
        }
    }
}
```

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/bmBJhqCpingjXJdMu/builds/GCpeBWDfCst9MbTi8/openapi.json
