# Swedish Company Register (Bolagsverket + SCB) (`tapedawn/bolagsverket-company-register`) Actor

All Swedish companies from the official Bolagsverket and SCB open data: org number, name, legal form, registration date, status, business description, address, SNI industry codes, and marketing opt-out flag. Filter by name, industry, city, legal form, status, or registration date.

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

## Pricing

$2.00 / 1,000 company records

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/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

## Swedish Company Register (Bolagsverket + SCB)

Search and export every Swedish company from the official open data of **Bolagsverket** (the Swedish Companies Registration Office) and **SCB** (Statistics Sweden), as clean JSON, CSV, or Excel. About 1.9 million legal entities: aktiebolag, handelsbolag, kommanditbolag, ekonomiska föreningar, bostadsrättsföreningar, foundations, branches of foreign companies, and more. Built for lead generation, KYC and supplier checks, market sizing, CRM enrichment, and AI agents that need Swedish company facts without paying for a data broker.

### What you get

For every company: organisation number, registered name and secondary business names, legal form, registration date, deregistration date and reason, ongoing liquidation, bankruptcy, reorganisation or merger, the registered business description, and the registered postal address. With **Add SCB data** on (default), each record also carries SNI industry codes, whether SCB considers the company active (registered for VAT, F-tax, or as an employer), the visiting address, and the marketing opt-out flag.

```json
{
  "org_number": "5164028846",
  "org_number_formatted": "516402-8846",
  "name": "Wipro Sweden filial till Wipro Ltd, Indien",
  "secondary_names": ["Wipro, importprodukter"],
  "legal_form_code": "FL",
  "legal_form": "Filial",
  "registered_at": "2000-03-24",
  "deregistered_at": null,
  "ongoing_proceedings": [],
  "business_description": "Filialens verksamhet är att biträda huvudkontoret med försäljning och marknadsföring ...",
  "postal_address": {"street": "Sveavägen 9-11, 13 tr", "care_of": null, "postcode": "11157", "city": "STOCKHOLM", "country": "SE"},
  "sni_codes": ["62100"],
  "scb_status": "active",
  "visiting_address": {"street": "SVEAVÄGEN 9  13TR", "care_of": null, "postcode": "11157", "city": "STOCKHOLM"},
  "marketing_opt_out": false
}
```

### Filters

- **Organisation numbers**: look up specific companies, with or without the dash.
- **Name contains** and **Business description contains**: free-text match, case-insensitive.
- **SNI industry codes**: prefixes such as `62` (IT), `5610` (restaurants), `41` (construction).
- **Legal forms**: AB, HB, KB, EK, BRF, and the rest.
- **Status**: registered (default), active with no ongoing proceedings, deregistered, or all.
- **Postal cities** and **Postcode prefix**.
- **Registered on or after / before**: run daily with yesterday's date to get new companies only.
- **Exclude marketing opt-outs** (default on): drops companies that have registered a reklamspärr with SCB.

### Pricing

Pay per event: one `company` event per record saved. Downloading and scanning the register costs you nothing. Set a maximum total charge and the Actor stops cleanly when it is reached.

### Data, licence, and privacy

The data comes from the bulk files Bolagsverket and SCB publish free of charge as EU high-value datasets (Regulation 2023/138), refreshed weekly, under **CC BY 4.0**. If you republish it, credit "Källa: Bolagsverket och Statistiska centralbyrån". Each run downloads the latest files, so results are at most a week old.

Sole traders (enskild näringsidkare) are always left out, because their identifier is a personal identity number. The Actor returns legal entities only. Companies that have opted out of marketing are removed by default. If you switch that off, honour the opt-out yourself, as Swedish good marketing practice requires.

# Actor input Schema

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

Stop after this many companies have been saved.

## `orgNumbers` (type: `array`):

Look up specific companies by organisation number, with or without the dash (556012-2063 or 5560122063). Leave empty to search the whole register.

## `nameContains` (type: `string`):

Keep companies whose registered name or secondary business name contains this text (case-insensitive).

## `descriptionContains` (type: `string`):

Keep companies whose registered business description (verksamhetsbeskrivning, usually Swedish) contains this text, for example 'programvara' or 'restaurang'.

## `sniPrefixes` (type: `array`):

Keep companies whose SCB industry codes start with any of these prefixes, for example 62 (computer programming), 5610 (restaurants), or 41 (construction of buildings).

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

Keep only these legal forms. Empty keeps all.

## `status` (type: `string`):

registered: not deregistered. active: not deregistered and no ongoing liquidation, bankruptcy, reorganisation, or merger. deregistered: only deregistered companies. all: everything.

## `cities` (type: `array`):

Keep companies whose registered postal address is in one of these cities, for example Stockholm or Göteborg (case-insensitive).

## `postcodePrefix` (type: `string`):

Keep companies whose registered postcode starts with this, for example 11 for central Stockholm.

## `registeredAfter` (type: `string`):

YYYY-MM-DD. Handy for daily runs that only want newly registered companies.

## `registeredBefore` (type: `string`):

YYYY-MM-DD.

## `includeScbData` (type: `boolean`):

Join Statistics Sweden's register to add SNI industry codes, active status, visiting address, and the marketing opt-out flag. Adds about 70 MB of download and a few seconds.

## `excludeMarketingOptOut` (type: `boolean`):

Drop companies that have registered a marketing block (reklamspärr) with SCB. Keep this on if you will use the list for direct marketing. Needs SCB data.

## Actor input object example

```json
{
  "maxItems": 1000,
  "status": "registered",
  "includeScbData": true,
  "excludeMarketingOptOut": true
}
```

# Actor output Schema

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

No description

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("tapedawn/bolagsverket-company-register").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("tapedawn/bolagsverket-company-register").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 '{}' |
apify call tapedawn/bolagsverket-company-register --silent --output-dataset

```

## MCP server setup

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

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/elB8hzBEWbTaTLLCX/builds/qUynjR07EdNVGazQe/openapi.json
