# Northdata Scraper (`parsebird/northdata-scraper`) Actor

Look up companies and people on North Data by name, keyword, or registration number. Get register identity, address, risk flags, financials, officers, register events, and news for each match.

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

## Pricing

from $3.00 / 1,000 record scrapeds

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

### Northdata Scraper

Look up companies and people on [North Data](https://www.northdata.com) by name, keyword, or registration number, and get back structured register data instead of a web page. Northdata Scraper searches North Data's company and person database and enriches every match with identity details, risk flags, financials, officers, register events, and news — the same data North Data shows on a company's profile page, extracted into clean JSON.

<table><tr>
<td style="border-left:4px solid #1C1917;padding:12px 16px;font-weight:600">
Search by name or registration number, filter by country and record type, and get register identity, risk flags, financials, officers, register events, and news for every company or person match — no North Data login needed.
</td>
</tr></table>

##### Copy to your AI assistant

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

```
Northdata Scraper (parsebird/northdata-scraper) — Looks up companies and people on North Data (northdata.com) by name, keyword, or registration number and returns full register records. Input: {"searchQueries": ["Volkswagen AG"], "country": "DE", "resultType": "companies", "maxResults": 25, "includeFinancials": true, "includeOfficers": true}. Key inputs: searchQueries (string array), startUrls (array of {url} — direct North Data company or search-result URLs, always scraped in full), country (2-letter code or empty for any of the 16 supported countries), resultType ("companies" | "people" | "both"), maxResults (integer, per query), includeFinancials/includeOfficers/includeRelatedCompanies/includeEvents/includeNews (booleans). Company output: recordType, url, name, status, foundingDate, corporatePurpose, registerNumber, nationalIds, leiCode, companyId, riskLevel, riskFlags, address, city, country, revenue, earnings, employees, financials, balanceSheets, officers, relatedCompanies, events, news. Person output: recordType, url, name, givenName, familyName, city, country, companies. API: POST https://api.apify.com/v2/acts/parsebird~northdata-scraper/runs?token=YOUR_TOKEN. Get token: https://console.apify.com/account#/integrations
```

### What does Northdata Scraper do?

**Northdata Scraper** turns a company name, person name, keyword, or registration number into structured company and person records pulled from [North Data](https://www.northdata.com), which aggregates official trade-register filings, financial statements, and ownership data for companies across Germany, Austria, Switzerland, the UK, and 12 other European countries. Enter your search terms and the actor:

- 🔍 Searches by name, keyword, or registration number, or replays a North Data URL you already have
- 🏢 Filters results to companies only, people only, or both, and to a single country
- 📇 Returns register identity for every company — legal name, status, founding date, register number, national IDs (SIREN, KVK, KRS, LEI, EUID, and more), and corporate purpose
- ⚠️ Includes North Data's risk report — sanctions, anti-trust proceedings, and other flagged risk categories with their severity
- 💶 Adds published financials (revenue, earnings, employees, balance-sheet breakdown) where North Data has them on file
- 👤 Adds officers — directors, managing directors, and other registered signatories — with their roles
- 🔗 Adds a preview of linked companies and people through shared officers or ownership
- 📜 Adds register events (incorporations, capital changes, mergers, insolvencies) and news/publication mentions
- 🎯 Accepts direct North Data profile or search-result URLs to target exact companies you already know

### What data can you extract with Northdata Scraper?

| Field | Description |
|-------|-------------|
| `name` | Registered legal name |
| `status` | Lifecycle status: Active, In Liquidation, Insolvency, or Terminated |
| `registerNumber` | Register court and number (e.g. "Wolfsburg HRB 100484") |
| `nationalIds` | National identifiers on file — SIREN, KVK, KRS, EUID, LEI, and more |
| `riskLevel` / `riskFlags` | Overall risk rating plus the individual risk report rows behind it |
| `address`, `city`, `country` | Registered office location |
| `revenue`, `earnings`, `employees` | Latest published financial figures |
| `financials` | Full year-by-year time series behind each figure |
| `officers` | Directors and other registered officers with their roles |
| `relatedCompanies` | Companies and people linked through ownership or shared officers |
| `events` | Register events — incorporation, capital changes, mergers, insolvencies |
| `news` | News and publication mentions indexed for the company |

Person records return `name`, `givenName`, `familyName`, `city`, `country`, and `companies` — every company North Data lists them as an officer of.

### How to look up companies and people with Northdata Scraper

1. Open [Northdata Scraper](https://apify.com/parsebird/northdata-scraper) on Apify
2. Enter one or more **Search Queries** — a company name, person name, keyword, or registration number
3. Or paste a **Start URL** — a North Data company or search-result URL — to target an exact profile
4. Pick a **Country** to narrow results, and a **Result Type** (companies, people, or both)
5. Choose which detail collections to add: **Financials**, **Officers**, **Related Companies**, **Events**, **News**
6. Set **Max Results** to control how many records each query returns
7. Click **Start** and wait for results
8. Export your data as **JSON, CSV, or Excel** from the dataset tab

**Quick start input:**

```json
{
    "searchQueries": ["Volkswagen AG"]
}
```

**Search within one country, companies only:**

```json
{
    "searchQueries": ["Siemens Energy", "BMW"],
    "country": "DE",
    "resultType": "companies",
    "maxResults": 25
}
```

**Full profile with every collection:**

```json
{
    "searchQueries": ["Volkswagen AG"],
    "includeFinancials": true,
    "includeOfficers": true,
    "includeRelatedCompanies": true,
    "includeEvents": true,
    "includeNews": true,
    "maxResults": 10
}
```

**Target an exact company by URL:**

```json
{
    "startUrls": [
        { "url": "https://www.northdata.com/Volkswagen+AG,+Wolfsburg/HRB+100484" }
    ],
    "includeFinancials": true,
    "includeOfficers": true
}
```

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchQueries` | string array | No\* | `["Volkswagen AG"]` | Company names, person names, keywords, or registration numbers to look up |
| `startUrls` | array of `{url}` | No\* | — | Direct North Data company or search-result URLs. Always scraped in full, not capped by Max Results |
| `country` | string | No | any | 2-letter code to restrict search to one of 16 supported countries |
| `resultType` | string | No | `companies` | `companies`, `people`, or `both` |
| `includeFinancials` | boolean | No | true | Add revenue, earnings, employees, and balance-sheet history |
| `includeOfficers` | boolean | No | true | Add directors and other registered officers |
| `includeRelatedCompanies` | boolean | No | false | Add linked companies and people |
| `includeEvents` | boolean | No | false | Add register events |
| `includeNews` | boolean | No | false | Add news/publication mentions |
| `maxResults` | integer | No | 50 | Maximum records to scrape per search query |
| `proxyConfiguration` | object | No | Apify Proxy | Proxy settings for requests to North Data |

\* At least one of `searchQueries` or `startUrls` is required.

### Output example

```json
{
    "recordType": "company",
    "url": "https://www.northdata.com/VOLKSWAGEN%20AG,%20Wolfsburg/Amtsgericht%20Braunschweig%20HRB%20100484",
    "name": "VOLKSWAGEN AG",
    "status": "Active",
    "foundingDate": "1961-04-27",
    "corporatePurpose": "The object of the company is the manufacture and sale of vehicles and engines of all kinds...",
    "registerNumber": "District Court of Braunschweig HRB 100484",
    "nationalIds": [
        { "source": "Global Legal Entity Identifier Foundation (LEI numbers)", "value": "529900NNUPAGGOMPXZ31, 549300PSVDV3P50KHS39" }
    ],
    "leiCode": "529900NNUPAGGOMPXZ31",
    "companyId": "4562491040071680",
    "riskLevel": "yellow",
    "riskFlags": [
        { "name": "Sanctioned", "level": "green", "evaluation": null },
        { "name": "Anti-trust proceedings", "level": "yellow", "evaluation": "Anti-trust proceedings" }
    ],
    "address": { "street": "Berliner Ring 2", "postalCode": "38440", "city": "Wolfsburg", "country": "DE" },
    "city": "Wolfsburg",
    "country": "DE",
    "revenue": 321792431000,
    "earnings": 7320257000,
    "employees": 106123,
    "financials": [
        { "metric": "Revenue", "values": [ { "year": 2025, "value": 321792431000, "formattedValue": "€322B", "consolidated": false, "estimate": false, "publicationTitle": "Stock exchange listed companies - Financial Data", "publicationDate": null } ] }
    ],
    "balanceSheets": [
        { "section": "Assets", "date": "2025-12-31", "lines": [ { "name": "Total Assets", "value": 665541635000, "formattedValue": "€665.5B", "level": 0 } ] }
    ],
    "officers": [
        { "name": "Blume, Oliver Ingo", "givenName": "Oliver Ingo", "familyName": "Blume", "role": "CEO", "url": "https://www.northdata.com/Blume,%20Oliver%20Ingo,%20Stuttgart/qme" }
    ],
    "relatedCompanies": [],
    "events": [],
    "news": []
}
```

### Use cases

- **KYC and due diligence** — Pull register identity, risk flags, and officers before onboarding a business partner
- **Sanctions and risk screening** — Check North Data's risk report for sanctions and anti-trust flags across a list of companies
- **Lead generation** — Build a list of companies in a country with officer contacts for B2B outreach
- **Competitor monitoring** — Track financials, employee counts, and officer changes for named competitors
- **Corporate structure research** — Trace ownership and officer links between companies
- **Academic and market research** — Collect structured company-register data across European jurisdictions

### How much does it cost to look up companies on North Data?

Northdata Scraper uses [pay-per-event pricing](https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event). You are charged per company or person record saved to the dataset — no compute fees on top.

| Event | Price per event | Price per 1,000 |
|-------|------------------|------------------|
| `record-scraped` | $0.0036 | **$3.60** |

Each record pushed to the dataset counts as one event (pricing shown is the Free plan rate; Bronze, Silver, and Gold subscribers pay less per event). For example, scraping 100 company records costs $0.36 on the Free plan.

[Apify's Free plan](https://apify.com/pricing) includes monthly platform credits — a free way to try the actor before committing to a paid plan.

### Integrations and API access

Use Northdata Scraper programmatically via the [Apify API](https://docs.apify.com/api/v2), [JavaScript client](https://docs.apify.com/api/client/js), or [Python client](https://docs.apify.com/api/client/python).

**Python:**

```python
from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("parsebird/northdata-scraper").call(run_input={
    "searchQueries": ["Siemens Energy", "BMW"],
    "country": "DE",
    "resultType": "companies",
    "maxResults": 25,
})

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

**JavaScript:**

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

const client = new ApifyClient({ token: "YOUR_API_TOKEN" });

const run = await client.actor("parsebird/northdata-scraper").call({
    searchQueries: ["Siemens Energy", "BMW"],
    country: "DE",
    resultType: "companies",
    maxResults: 25,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => console.log(item.name, item.status, item.riskLevel));
```

You can also connect Northdata Scraper to [Google Sheets](https://apify.com/integrations/google-sheets), [Slack](https://apify.com/integrations/slack), [Zapier](https://apify.com/integrations/zapier), [Make](https://apify.com/integrations/make), and other tools via [Apify integrations](https://apify.com/integrations). Use [Apify Schedules](https://docs.apify.com/platform/schedules) to re-run a watchlist of companies daily or weekly and track status, risk, or officer changes over time.

### Is it legal to scrape North Data?

Scraping publicly available data is generally considered legal, based on the [2022 US appeals court ruling](https://blog.apify.com/is-web-scraping-legal/) in *hiQ Labs v. LinkedIn*. This actor only reads company and person information that North Data already shows to any visitor without logging in — itself aggregated from official, publicly filed trade-register and financial-disclosure sources. It does not log in, bypass authentication, or access North Data's paid Premium features.

Always review [North Data's Terms of Service](https://www.northdata.com/terms) and comply with applicable data-protection law in your jurisdiction, especially when processing data about identifiable individuals (officers, shareholders). For general guidance, see [Apify's guide to web scraping legality](https://blog.apify.com/is-web-scraping-legal/).

### Related Actors

- [Pappers.fr Company Scraper](https://apify.com/parsebird/pappers-scraper) — French company register data from Pappers.fr
- [Website Contact Finder](https://apify.com/parsebird/website-contact-finder) — Find emails, phone numbers, and social links on any company website

### FAQ

**Why are `revenue`, `earnings`, and `financials` sometimes empty?**
North Data publishes detailed year-by-year financials for free mainly for stock-exchange-listed companies. Most private companies only have their register filings (name, address, officers) publicly available for free; detailed financial statements for those companies are part of North Data's paid Premium plan, which this actor does not access. When a figure isn't publicly available, the field is `null` rather than a guess.

**Why is `relatedCompanies` sometimes short or empty?**
North Data's full interactive company network is a Premium feature. This actor returns the free preview of that network (typically up to around 10 connections), so `relatedCompanies` reflects a sample, not the complete ownership graph. Relationship labels in this field come directly from North Data and may appear in German for German-registered companies.

**What's the difference between `events` and `news`?**
`events` covers register-filed changes — incorporation, capital changes, role changes, mergers, insolvencies. `news` covers other indexed mentions such as patent/trademark filings and public funding awards. The split follows North Data's own topic tagging.

**Why do some companies show `status: "Active"` with no explicit status text?**
North Data only marks a company's heading when it's inactive (e.g. "(liq)" for in liquidation, "(term.)" for terminated). No marker means the company is active, so the actor reports `"Active"` by default.

**Can I look up a person and see every company they're linked to?**
Yes. Set `resultType` to `people` or `both`. Person records include a `companies` list with every company North Data shows on that person's profile as one they're an officer of.

**Can I schedule recurring runs?**
Yes. Use [Apify's scheduling feature](https://docs.apify.com/platform/schedules) to re-run a watchlist of companies daily, weekly, or at any custom interval.

**Can I use this with my AI assistant or MCP server?**
Yes. Copy the AI assistant block from the top of this page into ChatGPT, Claude, or Cursor. You can also connect this actor to any agent framework via the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp).

**Something isn't working. How do I get help?**
Open an issue in the [Issues tab](https://apify.com/parsebird/northdata-scraper/issues) on the actor page. Include your input configuration and any error messages.

# Actor input Schema

## `searchQueries` (type: `array`):

Company names, manager names, keywords, or registration numbers to look up. Each query returns its matching records, fully enriched.

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

Direct North Data company or search-result URLs. Use these to target exact companies you already know. Always scraped in full and do not count toward Max Results.

## `country` (type: `string`):

Restrict search to one country. Leave empty to search all supported countries.

## `resultType` (type: `string`):

What to keep from a search.

## `includeFinancials` (type: `boolean`):

Add published financial figures and balance-sheet history — revenue, equity, balance-sheet total, profit/loss, employees. Only published for some companies (mainly stock-listed ones); North Data does not disclose full financial history for free on every company.

## `includeOfficers` (type: `boolean`):

Add directors, managing directors, and other registered officers with their roles.

## `includeRelatedCompanies` (type: `boolean`):

Add companies linked through shared officers, ownership, or register-filed relationship events.

## `includeEvents` (type: `boolean`):

Add register events such as incorporations, name changes, capital changes, mergers, and insolvencies.

## `includeNews` (type: `boolean`):

Add news mentions and publication references indexed for the company.

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

Maximum records to scrape per search query. Direct company URLs are always scraped in full and do not count toward this limit.

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

Proxy servers to use for requests to North Data. Using Apify Proxy is recommended for larger runs to avoid rate limiting.

## Actor input object example

```json
{
  "searchQueries": [
    "Volkswagen AG"
  ],
  "startUrls": [],
  "country": "",
  "resultType": "companies",
  "includeFinancials": true,
  "includeOfficers": true,
  "includeRelatedCompanies": false,
  "includeEvents": false,
  "includeNews": false,
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# 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 = {
    "searchQueries": [
        "Volkswagen AG"
    ],
    "startUrls": [],
    "maxResults": 10,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/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 = {
    "searchQueries": ["Volkswagen AG"],
    "startUrls": [],
    "maxResults": 10,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("parsebird/northdata-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 '{
  "searchQueries": [
    "Volkswagen AG"
  ],
  "startUrls": [],
  "maxResults": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call parsebird/northdata-scraper --silent --output-dataset

```

## MCP server setup

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