# North Data Scraper — European Company Register Data (`studio-amba/northdata-scraper`) Actor

Search and extract European company data from North Data (northdata.com / northdata.de). Look up companies by name and get register ID, EUID, LEI, address, founding date, industry/purpose, and officers/directors. Covers Germany plus 15+ other European countries. No API key, no login required.

- **URL**: https://apify.com/studio-amba/northdata-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

## North Data Scraper — European Company Register Data

Search and extract European company data from North Data (northdata.com / northdata.de), the free company-intelligence directory that aggregates commercial-register filings, LEI/EUID identifiers, addresses, and officer records from Germany plus 15+ other European countries. Look up companies by name and get the register ID, EUID, LEI, registered address, founding date, business purpose or industry code, and current officers/directors for each match. No API key, no login, no cookies required.

North Data is one of the few free sources that pulls together official commercial-register data across borders — Germany's Handelsregister, Belgium's KBO, the Netherlands' KVK, France's SIREN, Denmark's CVR, and more — under one search box. This actor turns a plain company-name search into a clean, structured list of company profiles you can drop into a CRM, a due-diligence workflow, or a market-research spreadsheet.

### How to scrape NorthData company data

This actor reads North Data's own public search endpoint and company profile pages. It returns structured records for every matching company across the countries North Data covers, with the same information you'd see by clicking through the website by hand — just structured and bulk-exportable.

#### Search by company name

Enter a company name to find that business and its related entities. Example: `Siemens`, `Bosch`, `Bäckerei` (bakery, useful for a broad small-business search). North Data's own search ranks and returns the closest name matches.

#### Filter by country

Set the **Country Filter** to one or more comma-separated ISO country codes to keep only companies registered in those countries. Example: `DE` (Germany only), `DE,AT,CH` (German-speaking countries), `BE,NL` (Benelux). Leave empty to search across every country North Data covers.

#### Full profile vs. lightweight search hits

By default (**Fetch Full Company Profile** = on) the actor opens each company's North Data profile page and extracts the register ID, address, founding date, officers, and business purpose or industry code. Turn this off to get only the fast, lightweight search-result fields (name, location, URL) — useful if you just need a quick list of matching companies without the extra page-load cost per result.

### What data does North Data Scraper extract?

| Field | Type | Description |
|-------|------|--------------|
| **companyName** | String | Current registered company name |
| **formerNames** | Array | Previous names on record (mergers, rebrands, renamed legal forms) |
| **registerId** | String | Register court/authority + register number (e.g. `"Amtsgericht Ulm HRB 732923"`, `"Zentrale Unternehmensdatenbank (KBO) 0475.328.902"`) |
| **formerRegisterIds** | Array | Previous register entries (e.g. before a cross-border register change) |
| **euid** | String | European Unique Identifier, when assigned |
| **lei** | String | Legal Entity Identifier (ISO 17442), when registered |
| **foundingDate** | String | Company founding/registration date (ISO 8601), when on file |
| **address** | String | Current registered address, formatted as shown on North Data |
| **street** | String | Street and house number, when a structured address is available |
| **postalCode** | String | Postal code |
| **city** | String | City / locality |
| **country** | String | ISO 3166-1 alpha-2 country code |
| **formerAddress** | String | Previous registered address(es), when the company has relocated |
| **industryOrPurpose** | String | Free-text business purpose (Germany-style) or industry/NACE code list (Belgium-style), depending on what the source country's register publishes |
| **officers** | Array | Current officers/directors: `{ name, jobTitle, url }` |
| **officerNames** | String | Officer names joined into one string, for a flat CSV view |
| **location** | String | City/country as shown in the search-result list (fallback display field) |
| **url** | String | Link to the company's North Data profile page |
| **scrapedAt** | String | ISO timestamp of extraction |

Financial figures (revenue, profit, headcount, balance sheet) are shown on North Data only for its Premium Service customers and are **not** included in this actor's output — the free public pages this actor reads have those figures blanked out ("censored") for most companies.

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|--------------|
| **Company Name** | String | `Siemens` | Search by company name (any language North Data indexes) |
| **Country Filter** | String | — | Comma-separated ISO country codes to restrict results to |
| **Fetch Full Company Profile** | Boolean | `true` | Fetch each company's full profile page (register ID, address, officers, etc.) vs. just the lightweight search hit |
| **Max Results** | Integer | `15` | Maximum companies to return. North Data's free search returns up to 15 matches per query — a hard cap on the search box itself, not a setting this actor can raise |
| **Proxy Configuration** | Object | German residential proxy | Proxy settings |

### Example output

```json
{
    "companyName": "Bäckerei A. Zink GmbH",
    "formerNames": [],
    "registerId": "Amtsgericht Ulm HRB 732923",
    "formerRegisterIds": [],
    "euid": "DEB8537.HRB732923",
    "lei": "",
    "foundingDate": "2015-12-21",
    "address": "Hauptstr. 11, D-88367 Hohentengen",
    "street": "Hauptstr. 11",
    "postalCode": "88367",
    "city": "Hohentengen",
    "country": "DE",
    "formerAddress": "",
    "industryOrPurpose": "Der Betrieb einer Bäckerei und/oder Konditorei, Ladengeschäfte mit Bäckereiwaren, Obst, Käse, Kaffee, Lebensmittel aller Art, Tabak und Nonfoodartikel.",
    "officers": [
        {
            "name": "Zink, Andreas",
            "jobTitle": "Geschäftsführer",
            "url": "https://www.northdata.de/Zink,%20Andreas,%20Hohentengen/1bok"
        }
    ],
    "officerNames": "Zink, Andreas",
    "location": "Hohentengen",
    "url": "https://www.northdata.de/B%C3%A4ckerei%20A%C2%B7%20Zink%20GmbH,%20Hohentengen/Amtsgericht%20Ulm%20HRB%20732923",
    "scrapedAt": "2026-07-14T19:31:37.571Z"
}
````

### Common use cases

- Build B2B prospecting lists enriched with register ID, address, and officer names.
- Verify a supplier's or partner's legal identity and registration status before signing.
- Cross-border due diligence — one search box covers Germany, Benelux, France, the Nordics, and more.
- Track officer/director appointments across a group of related companies.
- Feed structured European company data into CRM enrichment or market-research pipelines.

### Cost estimate

Pricing is pay-per-result. Each search returns up to 15 companies (North Data's free-tier cap), and full-profile mode makes one additional page request per company. Because both the search and profile pages are lightweight HTML/JSON reads with no browser rendering, compute cost per run is low.

### Limitations

- North Data's free search box returns a maximum of 15 matches per query. For broader coverage, run multiple targeted queries (narrower name fragments, or combined with a country filter).
- Financial data (revenue, profit, headcount, balance sheet) is gated behind North Data's Premium Service and is not available through this actor.
- Coverage of secondary fields — officers, founding date, and industry/purpose — varies by source country and company type. A company's home register simply may not publish everything: for example, some Dutch KVK entries and informal legal vehicles (investment funds, employee share plans) carry little beyond a name, register ID, and address on North Data's free tier. Core identity fields (company name, address, city, country, register ID) are populated for the large majority of results; enrichment fields are best-effort, matching what North Data itself has managed to source.
- This actor reads the company's current registered profile. It does not enumerate the full filing history, shareholding network, or linked-entity graph North Data shows on its site.

### Related scrapers

- **Pappers Scraper** — French company data (SIREN/SIRET) from Pappers.
- **KVK Scraper** — company data from the Dutch Chamber of Commerce.
- **Registro Imprese Scraper** — Italian company register data.
- **Handelsregister Scraper** — German commercial register data.

### Data source and legality

This actor reads publicly available company data that North Data republishes from official European commercial registers, LEI/EUID registries, and other public sources. It does not access any login-protected or paid area, and it identifies itself with a standard browser user agent rather than any of the automated crawler identities North Data's robots.txt explicitly disallows. Use the data in line with North Data's terms and applicable data-protection rules.

# Actor input Schema

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

Search for a European company by name. Example: 'Siemens', 'Bosch', 'BMW'.

## `countries` (type: `string`):

Optional. Comma-separated ISO country codes to restrict results to. Example: 'DE' (Germany), 'BE' (Belgium), 'DE,AT,CH' (German-speaking countries). Leave empty to search all covered countries.

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

When enabled (default), the actor opens each company's profile page to extract register ID, address, founding date, officers, and industry/purpose. Disable to get only the lightweight search-result fields (name, location, URL) much faster.

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

Maximum number of companies to return. North Data's search returns up to 15 matches per query (a hard cap on the free search box, not a setting we can raise).

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

Select proxies to use. A German residential proxy is used by default for geo-consistent results; not required for the search/profile pages to work.

## Actor input object example

```json
{
  "searchQuery": "Siemens",
  "fetchDetails": true,
  "maxResults": 15,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "DE"
  }
}
```

# 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": "Siemens",
    "maxResults": 15,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "DE"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/northdata-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": "Siemens",
    "maxResults": 15,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "DE",
    },
}

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "North Data Scraper — European Company Register Data",
        "description": "Search and extract European company data from North Data (northdata.com / northdata.de). Look up companies by name and get register ID, EUID, LEI, address, founding date, industry/purpose, and officers/directors. Covers Germany plus 15+ other European countries. No API key, no login required.",
        "version": "0.0",
        "x-build-id": "vgyyb9DpAPhAyj5un"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/studio-amba~northdata-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-studio-amba-northdata-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~northdata-scraper/runs": {
            "post": {
                "operationId": "runs-sync-studio-amba-northdata-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~northdata-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-studio-amba-northdata-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 European company by name. Example: 'Siemens', 'Bosch', 'BMW'."
                    },
                    "countries": {
                        "title": "Country Filter",
                        "type": "string",
                        "description": "Optional. Comma-separated ISO country codes to restrict results to. Example: 'DE' (Germany), 'BE' (Belgium), 'DE,AT,CH' (German-speaking countries). Leave empty to search all covered countries."
                    },
                    "fetchDetails": {
                        "title": "Fetch Full Company Profile",
                        "type": "boolean",
                        "description": "When enabled (default), the actor opens each company's profile page to extract register ID, address, founding date, officers, and industry/purpose. Disable to get only the lightweight search-result fields (name, location, URL) much faster.",
                        "default": true
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "maximum": 15,
                        "type": "integer",
                        "description": "Maximum number of companies to return. North Data's search returns up to 15 matches per query (a hard cap on the free search box, not a setting we can raise).",
                        "default": 15
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Select proxies to use. A German residential proxy is used by default for geo-consistent results; not required for the search/profile pages to work.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ],
                            "apifyProxyCountry": "DE"
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
