# Allabolag Scraper - B2B Company and Leads (`parsebird/allabolag-company-scraper`) Actor

Scrape allabolag.se for Swedish company data: name, org number, revenue, employees, address, CEO. Optionally add board members, SNI code, F-skatt, VAT, and parent company. Export JSON, CSV, Excel.

- **URL**: https://apify.com/parsebird/allabolag-company-scraper.md
- **Developed by:** [ParseBird](https://apify.com/parsebird) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.80 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

### Allabolag Scraper - B2B Company and Leads

Allabolag Scraper extracts Swedish company data from [allabolag.se](https://www.allabolag.se/) by industry, keyword, or company name, including registration number, revenue, profit, employees, address, CEO, and — optionally — board members, VAT status, and parent company.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Search by industry (bransch), keyword, or company name and get 40+ structured fields per company — from core contact and financial data to board members, SNI code, F-skatt, and VAT registration when detail fetching is enabled.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```text
Use Apify Actor parsebird/allabolag-company-scraper to scrape Swedish company data from allabolag.se. Example with ApifyClient: client.actor("parsebird/allabolag-company-scraper").call(run_input={"query":"restaurang","maxResults":500}). Inputs: query string default "marketing" — industry, keyword, or company name; searchUrls string[] optional allabolag.se search-result URLs with filters already applied; fetchDetails boolean default false — opens each company profile for board, company form, SNI, F-skatt, VAT, share capital, parent company, and dates; maxResults integer default 200 (0 = no limit) — stop after this many companies across all searches; sort string enum relevance/revenueDesc/revenueAsc/numEmployeesDesc/numEmployeesAsc; maxConcurrency integer default 3 — how many searches run in parallel; useProxy boolean default true — required, allabolag.se geo-blocks non-Swedish traffic. Output fields: companyName, legalName, orgNumber, url, status, companyForm, industry, sniCode, address, zip, city, municipality, county, phone, email, homePage, ceoName, ceoRole, revenue, profit, currency, employees, accountsYear, lat, lng, shareCapital, fskatt, momsregistrerad, boardMembers, parentCompanyName, parentCompanyOrgNumber, registrationDate, foundationDate, companyId, source, scrapedAt. API docs: https://docs.apify.com/api/client/python/ and https://docs.apify.com/api/client/js/. Token: https://console.apify.com/account/integrations.
```

### What is Allabolag Scraper?

**Allabolag Scraper** is an allabolag.se scraper and Swedish company data API alternative for B2B lead generation, sales prospecting, and market research. Enter an industry (bransch), keyword, or company name — the same text you'd type into the allabolag.se search box — and the actor returns one structured row per company.

Use it to build lead lists, monitor a sector, or enrich a CRM with Swedish company data through [Apify](https://apify.com/), without manually paging through search results on the site.

### What can Allabolag Scraper do?

- 🔍 Search by industry, keyword, or company name, or paste allabolag.se search-result URLs with filters (location, industry, revenue) already applied on the site.
- 📇 Extract core company data for every result: org number, address, phone, email, CEO, revenue, profit, employees, and coordinates.
- 🏢 Optionally open each company's profile page to add board members, company form, SNI code, F-skatt status, VAT registration, share capital, parent company, and registration dates.
- 📊 Sort results by relevance, revenue, or employee count.
- 🎯 Cap total companies collected across all searches with `maxResults`.
- ⏰ Run on demand or with [Apify schedules](https://docs.apify.com/platform/schedules) for recurring lead lists.
- 🔌 Access results through the [Apify API](https://docs.apify.com/api/v2), webhooks, and [integrations](https://apify.com/integrations).
- 💾 Download datasets as JSON, CSV, Excel, XML, or HTML from Apify storage.

### What data can you extract from allabolag.se?

| Field | Description |
|-------|-------------|
| `companyName` / `legalName` | Company name and registered legal name |
| `orgNumber` | Swedish organization number (organisationsnummer) |
| `industry` / `sniCode` | Industry classification and official SNI code (detail only) |
| `address` / `zip` / `city` / `municipality` / `county` | Registered address and location |
| `phone` / `email` / `homePage` | Contact details |
| `ceoName` / `ceoRole` | CEO or top contact person and role |
| `revenue` / `profit` / `employees` | Latest reported financials, in thousands of SEK (kSEK) |
| `boardMembers` | Board and management, flattened as `Name (Role); Name (Role)` (detail only) |
| `fskatt` / `momsregistrerad` | F-skatt and VAT registration status (detail only) |
| `parentCompanyName` / `parentCompanyOrgNumber` | Parent company, when part of a group (detail only) |

### How to scrape allabolag.se company data

1. Open [Allabolag Scraper](https://apify.com/parsebird/allabolag-company-scraper) on Apify.
2. Enter a `query` — an industry, keyword, or company name — or paste one or more `searchUrls` copied from allabolag.se after applying filters on the site.
3. Set `maxResults` to cap how many companies to collect, and `sort` to order by revenue or employee count.
4. Turn on `fetchDetails` if you need board members, SNI code, F-skatt, VAT registration, share capital, or parent company data.
5. Leave `useProxy` enabled — allabolag.se blocks traffic from outside Sweden, so Apify Residential proxies are used by default.
6. Run the actor, open the dataset, and export results as JSON, CSV, Excel, or through the [Apify API](https://docs.apify.com/api/v2).

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `query` | string | No\* | `marketing` | Industry (bransch), keyword, or company name. |
| `searchUrls` | array of strings | No\* | - | allabolag.se search-result URLs copied from the site, with filters already applied. |
| `fetchDetails` | boolean | No | `false` | Open each company profile to add board, company form, SNI, F-skatt, VAT, share capital, parent company, and dates. |
| `maxResults` | integer | No | `200` | Stop after this many companies across all searches. `0` means no limit. |
| `sort` | string | No | `relevance` | `relevance`, `revenueDesc`, `revenueAsc`, `numEmployeesDesc`, or `numEmployeesAsc`. |
| `maxConcurrency` | integer | No | `3` | How many searches (query plus each search URL) to run in parallel. |
| `useProxy` | boolean | No | `true` | Route through Apify Proxy. Required — allabolag.se geo-blocks non-Swedish traffic. |
| `proxyConfiguration` | object | No | Residential | Override proxy settings. Defaults to Apify Residential proxies. |

\* Supply a `query`, `searchUrls`, or both.

Example — Swedish restaurants (lead list):

```json
{
  "query": "restaurang",
  "maxResults": 500
}
```

Example — marketing companies, biggest first:

```json
{
  "query": "marketing",
  "maxResults": 300,
  "sort": "revenueDesc"
}
```

Example — construction (bygg) with full detail (board + VAT):

```json
{
  "query": "bygg",
  "maxResults": 500,
  "fetchDetails": true,
  "sort": "numEmployeesDesc"
}
```

### Output example

One row per company — 40+ fields, exportable to JSON, CSV, Excel, or HTML. Search-list fields are always present; detail-only fields fill in when `fetchDetails` is on. Trimmed sample with `fetchDetails: true`:

```json
{
  "companyName": "iGoMoon AB",
  "legalName": "iGoMoon AB",
  "orgNumber": "5568995681",
  "url": "https://www.allabolag.se/foretag/igomoon-ab/stockholm/datautveckling-systemutveckling-programutveckling/2K3MWKHI5YDOJ",
  "status": "ACTIVE",
  "companyForm": "Aktiebolag",
  "companyFormCode": "AB",
  "industry": "Datautveckling, systemutveckling, programutveckling",
  "industryCode": "62010",
  "sniCode": "62100 Dataprogrammering",
  "address": "Birger Jarlsgatan 57A",
  "zip": "11365",
  "city": "Stockholm",
  "municipality": "Stockholm",
  "county": "Stockholms Län",
  "phone": "010-4101100",
  "email": "support@igomoon.com",
  "homePage": "https://www.igomoon.com/",
  "ceoName": "Olov Mattias Grönborg",
  "ceoRole": "Verkställande direktör",
  "revenue": "8388",
  "profit": "2",
  "currency": "SEK",
  "employees": "8",
  "accountsYear": "2025-12-31",
  "lat": 59.34122919,
  "lng": 18.06464262,
  "shareCapital": 62,
  "fskatt": "Ja, registrerad för F-skatt",
  "momsregistrerad": true,
  "boardMembers": "Olov Mattias Grönborg (Verkställande direktör); Ulf Viktor Månsson (Ordförande)",
  "parentCompanyName": "MoonRox Holding AB",
  "parentCompanyOrgNumber": "5567925242",
  "companyId": "2K3MWKHI5YDOJ",
  "source": "search+detail",
  "scrapedAt": "2026-08-21T12:00:00+00:00"
}
```

💡 `revenue`, `profit`, and `shareCapital` are in thousands of SEK (kSEK), exactly as allabolag.se publishes them. A revenue of `8388` means 8,388,000 SEK.

Download results in JSON, CSV, Excel, XML, or HTML from the Apify dataset.

### Python API example

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run = client.actor("parsebird/allabolag-company-scraper").call(run_input={
    "query": "restaurang",
    "maxResults": 500,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### JavaScript API example

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('parsebird/allabolag-company-scraper').call({
  query: 'restaurang',
  maxResults: 500,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

See Apify's official [Python client](https://docs.apify.com/api/client/python/) and [JavaScript client](https://docs.apify.com/api/client/js/) documentation for more options.

### How much does it cost to scrape allabolag.se?

**What is the price per company?**

| Plan | Price per event | Price per 1,000 |
|------|----------------|-----------------|
| Free | $0.003 | **$3.00** |
| Bronze | $0.0027 | **$2.70** |
| Silver | $0.0023 | **$2.30** |
| Gold | $0.0018 | **$1.80** |

Each `company-scraped` event means one company was extracted and pushed to the dataset. A run collecting 1,000 companies costs $3.00 on the Free plan or $1.80 on Gold. Apify's free trial credits cover test runs.

### Use cases

- Build B2B sales lead lists filtered by industry, location, revenue, or employee count.
- Monitor a sector for new company registrations or changes in size.
- Enrich a CRM or prospecting tool with Swedish company financials and contacts.
- Research competitors or suppliers within a specific bransch (industry classification).
- Screen counterparties with company form, VAT registration, and parent company data before onboarding.

### How it works

1. The actor validates `query`, `searchUrls`, and the result and sorting options.
2. For each search source — the `query` plus every `searchUrls` entry — it fetches allabolag.se's `bransch-sök` search page and reads the embedded JSON search results, paging through results up to `maxResults` or the site's own page count.
3. Multiple search sources run concurrently, bounded by `maxConcurrency`.
4. If `fetchDetails` is enabled, it opens each company's profile page and reads its embedded JSON to add board members, company form, SNI code, F-skatt, VAT registration, share capital, parent company, and dates.
5. It deduplicates companies by organization number across all searches, pushes one row per company to the default Apify dataset, and charges one PPE event per pushed company on the Apify platform.

### What are the limitations of allabolag.se scraping?

- allabolag.se blocks requests from outside Sweden; `useProxy` must stay enabled (Residential proxies by default).
- `fetchDetails` adds one extra request per company, which increases run time and proxy usage.
- Financial figures reflect the latest accounts allabolag.se has published for each company and may lag the company's actual current year.
- Some companies have limited public data (no phone, email, or website) — those fields come back empty rather than guessed.

### Is it legal to scrape allabolag.se?

**Is scraping allabolag.se legal?**

Allabolag Scraper reads publicly available company registry data that allabolag.se itself republishes from Bolagsverket (the Swedish Companies Registration Office) and other public sources. Scraping publicly available data is generally allowed in many jurisdictions, but you should review allabolag.se's terms and make sure your use case, including any use of contact details, complies with applicable laws such as GDPR. For background, read Apify's guide: [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/).

### Other B2B and company data scrapers / Related Actors

| Actor | Best for |
|-------|----------|
| [Allabolag Scraper](https://apify.com/parsebird/allabolag-company-scraper) | Swedish company data and B2B leads |
| [Northdata Scraper](https://apify.com/parsebird/northdata-scraper) | German company registry data |
| [Pappers.fr Company Scraper](https://apify.com/parsebird/pappers-scraper) | French company registry data |
| [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) | Emails and contact details from any website |

### FAQ

**Does Allabolag Scraper require an allabolag.se account or API key?**

No login or API key is required. The actor reads allabolag.se's public search and company pages.

**Why is `useProxy` on by default, and why Residential?**

allabolag.se blocks requests from outside Sweden at the network level. Apify Residential proxies use real Swedish IP addresses, which is what makes reliable access possible.

**What's the difference between running with and without `fetchDetails`?**

Without it, you get core search-result fields (name, org number, address, contact, financials) in one fast pass. With it, the actor also opens each company's profile page for board members, company form, SNI code, F-skatt, VAT registration, share capital, and parent company — at the cost of one extra request per company.

**Can I filter by location or a specific industry code?**

Yes. Set the filters you want on allabolag.se itself, copy the resulting search URL, and paste it into `searchUrls`.

**Can I schedule recurring runs to track new companies?**

Yes. Use [Apify schedules](https://docs.apify.com/platform/schedules) to run the actor daily, weekly, or at any interval.

**Where can I report issues or request fields?**

Open the Issues tab on the actor page and include your input example, run ID, and the fields you expected.

# Actor input Schema

## `query` (type: `string`):

Industry (bransch), keyword, or company name — the same text you'd type into the allabolag.se search box.

## `searchUrls` (type: `array`):

(Optional, advanced) allabolag.se search-result URLs copied from the site. Set filters like location or industry on the site, then paste the resulting URL here.

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

Open each company profile to add board members, company form, SNI code, F-skatt, VAT registration, share capital, parent company, and dates. Slower and more expensive.

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

Stop after this many companies across all searches. 0 means no limit.

## `sort` (type: `string`):

Order search results by relevance, revenue, or employee count.

## `maxConcurrency` (type: `integer`):

How many searches (query plus each search URL) to run in parallel.

## `useProxy` (type: `boolean`):

Route requests through Apify Proxy. allabolag.se blocks requests from outside Sweden, so this should stay enabled.

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

Defaults to Apify Residential proxies, which are required to reach allabolag.se. Override only if you have a working alternative.

## Actor input object example

```json
{
  "query": "marketing",
  "fetchDetails": false,
  "maxResults": 50,
  "sort": "relevance",
  "maxConcurrency": 3,
  "useProxy": true,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "query": "marketing",
    "maxResults": 50,
    "sort": "relevance"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/allabolag-company-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 = {
    "query": "marketing",
    "maxResults": 50,
    "sort": "relevance",
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/allabolag-company-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 '{
  "query": "marketing",
  "maxResults": 50,
  "sort": "relevance"
}' |
apify call parsebird/allabolag-company-scraper --silent --output-dataset

```

## MCP server setup

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