# Allabolag Scraper (`solidcode/allabolag-scraper`) Actor

\[💰 $1.4 / 1K] Extract Swedish company data from allabolag.se — names, organisation numbers, contacts, addresses, industries, and headline financials. Search by keyword and location, or by allabolag.se search URLs.

- **URL**: https://apify.com/solidcode/allabolag-scraper.md
- **Developed by:** [SolidCode](https://apify.com/solidcode) (community)
- **Categories:** Developer tools, Lead generation, Automation
- **Features:** Limited permissions
- **Stats:** 39 total users, 6 monthly users, 99.6% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.40 / 1,000 results

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

## Allabolag Scraper

Pull Swedish company records from allabolag.se at scale — organisation numbers, phone and email contacts, websites, registered addresses, headline revenue and profit in SEK, employee counts, industry classifications, and director contacts in one clean row per company. Built for B2B sales teams, market researchers, recruiters, and M\&A analysts who need structured Swedish business intelligence without copying it out of allabolag.se one company page at a time.

### Why This Scraper?

- **Organisation number (orgnr) on every record** — the unique Bolagsverket identifier that lets you dedupe, enrich, and join against any other Swedish business dataset.
- **Headline financials in SEK** — revenue and profit (in thousands SEK), reporting currency, employee count, and the accounting period (YYYY-MM) the figures cover, all delivered as numbers ready to sort and filter.
- **A direct contact route on 2 in 3 listings** — phone numbers, email addresses, and company websites pulled straight from each listing, ready to drop into an outbound prospecting list.
- **Named director contact** — the registered contact person's name, role (e.g. "Extern verkställande direktör"), and business-person flag on each company.
- **All 21 Swedish counties (län), 290 municipalities (kommuner)** — filter by any län, then narrow to a specific kommun to target a precise geography.
- **Two registered addresses** — visiting address and postal address, each with street, ZIP code, and postal town, plus county/municipality and map coordinates.
- **Full industry classification** — every SNI branch the company is registered under, plus its primary current industry, by name.
- **Distress flags and trust marks** — dated bankruptcy, liquidation and merger remarks (e.g. "Konkurs inledd 2025-03-19") on the companies in proceedings, plus UC Sigill and UC Growth Certificate marks on roughly 1 in 5.
- **Keyword search or paste a URL** — search by business or industry keyword across all of Sweden, or paste any allabolag.se search-result URL to reuse the site's own filters; each search returns up to 10,000 companies, and you can queue as many searches and URLs as you like in one run.

### Use Cases

**Lead Generation**

- Build targeted prospect lists with phone, email, and website per company
- Filter to a single county or municipality to canvass a sales territory
- Score leads by revenue, profit, or headcount before outreach
- Attach the registered director contact name and role to each account

**Market Research**

- Map how many companies operate in an industry across Sweden's 21 counties
- Compare revenue and employee distributions between regions
- Spot bankruptcy and liquidation proceedings within a sector
- Size a market by counting active companies in a kommun

**Recruitment**

- Find employers by industry and location with headcount data
- Build candidate-sourcing target lists of companies in a region
- Identify growing firms by revenue and employee figures
- Reach hiring managers via the registered director contact

**Investment & M\&A Due Diligence**

- Screen acquisition targets by revenue, profit, and employee count
- Pull organisation numbers to order full credit and ownership reports
- Flag distressed targets via dated bankruptcy and liquidation remarks
- Build a longlist of companies within a target industry and geography

**Competitive Intelligence**

- Monitor competitors and their registered financials over time
- Map the full set of companies in a niche by industry classification
- Benchmark a firm's revenue and headcount against its peers
- See which competitors carry UC Sigill or growth certifications

### Getting Started

#### Search by Keyword

The simplest way to start — a single business or industry keyword:

```json
{
    "searchTerm": "restaurang",
    "maxResults": 100
}
```

#### Filter by County and Municipality

Narrow a keyword search to a specific Swedish location:

```json
{
    "searchTerm": "bygg",
    "county": "stockholm",
    "municipality": "Huddinge",
    "maxResults": 50
}
```

#### Paste a Search URL

Reuse the filters from any allabolag.se search-result page — just paste the URL:

```json
{
    "startUrls": [
        "https://www.allabolag.se/bransch-sök?q=konsult&county=Skåne&municipality=Malmö"
    ],
    "maxResults": 200
}
```

### Input Reference

#### What to Scrape

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `startUrls` | array | `[]` | Paste allabolag.se search-result URLs. Any filters already in the URL (industry, location, etc.) are applied automatically. Leave empty if you'd rather build a search using the fields below. |
| `searchTerm` | string | `"restaurang"` | A business or industry keyword, or a company name to search for (e.g. `bygg`, `restaurang`, `IKEA`). Leave empty if you're using Search URLs above. |

#### Search Filters

These apply only to the Search Term. When using Search URLs, all filters come from the URL itself.

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `county` | string | `null` | Limit results to a Swedish county (län). Choose from all 21 counties — Stockholms län, Västra Götalands län, Skåne län, and the rest. Leave blank to search all of Sweden. |
| `municipality` | string | `""` | Limit results to a Swedish municipality (kommun), e.g. `Stockholm`, `Göteborg`, `Malmö`. Leave blank for the whole county. |

#### Options

| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `maxResults` | integer | `100` | Maximum number of companies to return across all searches and URLs. Set to `0` to collect everything a search can reach. allabolag.se serves at most 10,000 companies per search or URL. Tip: start with 10-50 to test, then increase. |

### Output

Each company is returned as one flat record. Empty fields are omitted to keep results clean.

```json
{
    "name": "Vägfas AB",
    "legalName": "Vägfas AB",
    "orgNumber": "5566322938",
    "url": "https://www.allabolag.se/foretag/vagfas-ab/2K21M9MI5YDOJ",
    "statusRemarks": [
        { "desc": "Konkurs inledd", "date": "2025-03-19", "code": null }
    ],
    "description": "Vägfas - det marknadsledande företaget inom vägunderhåll.",
    "industries": ["Datautveckling och datakonsulttjänster"],
    "currentIndustry": "Datautveckling och datakonsulttjänster",
    "revenue": 10178,
    "profit": 1082,
    "currency": "SEK",
    "employees": 7,
    "accountsLastUpdated": "2024-12",
    "phone": "0850276103",
    "phone2": "0850118000",
    "mobile": "0701234567",
    "email": "sales@vagfas.se",
    "homePage": "https://vagfas.se",
    "contactPerson": {
        "type": "Person",
        "name": "Fredrik Ekersund",
        "role": "Extern verkställande direktör",
        "id": "12947629",
        "birthDate": "22.03.1985",
        "businessPerson": true
    },
    "location": {
        "countryPart": "Hela Sverige",
        "county": "Stockholm",
        "municipality": "Norrtälje",
        "coordinates": [
            { "coordinateSystem": "EPSG:4326", "xcoordinate": 18.699713, "ycoordinate": 59.739105 }
        ]
    },
    "visitorAddress": {
        "addressLine": "Gäddvägen 5",
        "boxAddressLine": null,
        "zipCode": "761 48",
        "postPlace": "Norrtälje"
    },
    "postalAddress": {
        "addressLine": "Box 142",
        "boxAddressLine": null,
        "zipCode": "761 22",
        "postPlace": "Norrtälje"
    },
    "certificates": [
        { "type": "UC_SIGILL", "subType": "5", "startDate": "2026-05-29" }
    ],
    "logo": "https://www.allabolag.se/images/7098269",
    "fromUrl": "https://www.allabolag.se/bransch-sök?q=konsult"
}
```

#### Company Identity

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Company display name |
| `legalName` | string | Registered legal name |
| `orgNumber` | string | Swedish organisation number (orgnr) |
| `url` | string | Link to the company's allabolag.se profile page |
| `statusRemarks` | array | Dated bankruptcy, liquidation or merger remarks, each with `desc`, `date`, and `code` — carried by the ~2% of companies in proceedings |
| `description` | string | Short company description |

#### Contact Details

| Field | Type | Description |
|-------|------|-------------|
| `phone` | string | Primary phone number — on about 2 in 3 listings |
| `phone2` | string | Secondary phone number — rarely published (about 3% of listings) |
| `mobile` | string | Mobile number — where published (about 7% of listings) |
| `email` | string | Contact email — on about 4 in 10 listings |
| `homePage` | string | Company website — on about 4 in 10 listings |
| `fax` | string | Fax number — rarely published (under 1% of listings) |
| `contactPerson` | object | Registered contact: `name`, `role`, `type`, `id`, `birthDate`, `businessPerson` |

#### Financials

| Field | Type | Description |
|-------|------|-------------|
| `revenue` | number | Headline revenue, in thousands SEK |
| `profit` | number | Headline profit, in thousands SEK |
| `currency` | string | Reporting currency (e.g. SEK) |
| `employees` | number | Number of employees |
| `accountsLastUpdated` | string | Accounting period the figures cover (YYYY-MM) |

#### Location & Address

| Field | Type | Description |
|-------|------|-------------|
| `location` | object | `county`, `municipality`, `countryPart`, and map `coordinates` |
| `visitorAddress` | object | Visiting address: `addressLine`, `zipCode`, `postPlace`, `boxAddressLine` |
| `postalAddress` | object | Postal address, same shape as the visiting address |

#### Classification & Metadata

| Field | Type | Description |
|-------|------|-------------|
| `industries` | array | All registered industry branch names (SNI) |
| `currentIndustry` | string | Primary current industry, by name |
| `certificates` | array | UC Sigill and UC Growth Certificate marks, each with `type`, `subType`, `startDate` — on about 1 in 5 companies |
| `logo` | string | Link to the company logo image |
| `fromUrl` | string | The search URL or filter set this record came from |

### Tips for Best Results

- Start with `maxResults` set to 10-50 to preview the data, then raise it once the search looks right.
- A keyword in `searchTerm` runs the broadest industry-and-name match — try a sector word like `bygg` or `konsult` rather than an exact company name for the widest coverage.
- Combine `county` and `municipality` to zoom from a whole län down to a single kommun; leave both blank to cover all of Sweden.
- Power-user tip: filter a search on allabolag.se exactly how you want it, then copy the page URL straight into `startUrls` — the actor reuses every filter in that URL, so you never have to rebuild it here.
- `revenue` and `profit` are reported in thousands SEK — multiply by 1,000 for the figure in kronor.
- allabolag.se serves at most 10,000 companies per search or URL. To go deeper on a broad keyword like `bygg`, split it into several county or kommun searches in the same run rather than raising `maxResults`.
- Mix `startUrls` and a `searchTerm` in the same run to pull several distinct searches in one go — `maxResults` is the shared cap across them all.

### Pricing

**From $1.40 per 1,000 results** — pay only for the company records you get, with automatic discounts as your Apify loyalty tier rises. Gold, Platinum, and Diamond subscribers all pay the lowest rate.

| Results | No discount | Bronze | Silver | Gold |
|---------|-------------|--------|--------|------|
| 100 | $0.17 | $0.16 | $0.15 | $0.14 |
| 1,000 | $1.65 | $1.60 | $1.50 | $1.40 |
| 10,000 | $16.50 | $16.00 | $15.00 | $14.00 |
| 100,000 | $165.00 | $160.00 | $150.00 | $140.00 |

One result is one company record. **No compute charges — you only pay per result returned.** The tiered rates above take effect on 6 September 2026; until then every plan pays $1.40 per 1,000 results. Apify platform fees are additional and depend on your plan.

### Integrations

Export data in JSON, CSV, Excel, XML, or RSS. Connect to 1,500+ apps via:

- **Zapier** / **Make** / **n8n** — Workflow automation
- **Google Sheets** — Direct spreadsheet export
- **Slack** / **Email** — Notifications on new results
- **Webhooks** — Trigger custom workflows on run completion
- **Apify API** — Full programmatic access

### Legal & Ethical Use

This actor collects publicly available business-information data from allabolag.se for legitimate purposes such as market research, lead generation, recruitment, and due diligence. You are responsible for using the data in compliance with allabolag.se's terms of service, applicable data-protection laws (including the GDPR), and any restrictions on the use of personal data. Do not use the data for spam, harassment, or any unlawful purpose. Always respect the rights of the individuals and companies whose data you collect.

# Actor input Schema

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

Paste allabolag.se search-result URLs. Any filters already in the URL (industry, location, etc.) are applied automatically. Leave empty if you'd rather build a search using the fields below.

## `searchTerm` (type: `string`):

A business or industry keyword, or a company name to search for (e.g. 'bygg', 'restaurang', 'IKEA'). Leave empty if you're using Search URLs above.

## `county` (type: `string`):

Limit results to a Swedish county. Leave blank to search all of Sweden. Only applies to the Search Term above (not to Search URLs).

## `municipality` (type: `string`):

Limit results to a Swedish municipality, e.g. 'Stockholm', 'Göteborg', 'Malmö'. Spell it exactly as it appears on allabolag.se, including Swedish letters (å, ä, ö). Leave blank for the whole county. Only applies to the Search Term above.

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

Maximum number of companies to return across all searches and URLs. Set to 0 to collect everything a search can reach. allabolag.se serves at most 10,000 companies per search or URL, so add more searches or URLs to go past that. Tip: start with 10-50 to test, then increase.

## Actor input object example

```json
{
  "startUrls": [],
  "searchTerm": "restaurang",
  "municipality": "",
  "maxResults": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of extracted companies with key fields.

# 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 = {
    "startUrls": [],
    "searchTerm": "restaurang",
    "municipality": "",
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("solidcode/allabolag-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 = {
    "startUrls": [],
    "searchTerm": "restaurang",
    "municipality": "",
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("solidcode/allabolag-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 '{
  "startUrls": [],
  "searchTerm": "restaurang",
  "municipality": "",
  "maxResults": 100
}' |
apify call solidcode/allabolag-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,solidcode/allabolag-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/iDrTUQ9HgFDXUgLlA/builds/DIgLCecIbuc6s65OH/openapi.json
