# North Data Scraper - EU Company Register, Officers & Financials (`sian.agency/northdata-company-scraper`) Actor

Scrape northdata.com for European company data: register court and number, LEI, EUID, officers, year-by-year revenue and earnings with their source filing, and the corporate network.

- **URL**: https://apify.com/sian.agency/northdata-company-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** Business, Lead generation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.52 / 1,000 company profiles

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?

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

## North Data Scraper — EU Company Register, Officers & Financials 🏛️

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Email & Contact Lead Scraper](https://img.shields.io/badge/Store-Email%20%26%20Contact%20Leads-1AE392)](https://apify.com/sian.agency/email-contact-lead-scraper?fpr=sian) [![Local Business Data Scraper](https://img.shields.io/badge/Store-Local%20Business%20Data-1AE392)](https://apify.com/sian.agency/local-business-data-scraper?fpr=sian) [![USPTO Trademark Scraper](https://img.shields.io/badge/Store-USPTO%20Trademarks-1AE392)](https://apify.com/sian.agency/uspto-trademark-scraper?fpr=sian)

#### 🎉 Every financial figure arrives with the filing it came from — year, publication date, auditor, and whether it is an estimate

##### For due-diligence, KYC and M\&A teams who have to say where a number came from

***

### 🔎 What is the North Data Scraper — and when should you use it?

The **North Data Scraper** turns European company register records from North Data, across 26 countries into clean, structured rows you can filter, export and feed straight into a spreadsheet, database or AI agent. No account, no portal API key, no browser automation to maintain.

**Use it when you need:** a company's register record rather than its website: register court and number, LEI, EUID, legal status, registered address and coordinates. Ask for more and each row adds officers with their roles and their own record links. Financials come as revenue and earnings by year, with the filing each figure came from and a flag for whether it was estimated. Deeper still: balance-sheet totals, dated register events such as capital changes and insolvency filings, patent and trademark publications, and parent and subsidiary links with the published ownership percentage.

**Use something else when:** you need something other than the filed register record. Use [Email & Contact Lead Scraper](https://apify.com/sian.agency/email-contact-lead-scraper?fpr=sian) for email addresses and contact details for people at a company, where this actor returns officers as names and roles only. Use [Local Business Data Scraper](https://apify.com/sian.agency/local-business-data-scraper?fpr=sian) for a trading location's phone, hours and reviews, where this actor returns the legal entity behind it. Use [USPTO Trademark Scraper](https://apify.com/sian.agency/uspto-trademark-scraper?fpr=sian) for US trademark filings and their owners, where this actor covers European company registers. This actor returns what North Data shows an anonymous visitor. The four panels North Data sells at 49 euros a month are out of scope: the full legal-representative detail, ownership relations, key performance indicators and the interactive financial statements. Free search is also capped by North Data itself — 45 companies per query unfiltered, 15 with a country filter — so this is a lookup and enrichment tool rather than a way to download a country. North Data's terms forbid producing credit assessments from the data.

### 🤖 Use with AI agents

Already connected to the [Apify MCP server](https://mcp.apify.com)? Just ask for this Actor by name: sian.agency/northdata-company-scraper

**Your agent can pay for its own runs.** This Actor is eligible for [agentic payments](https://docs.apify.com/platform/actors/publishing/monetize), so an agent can discover it, run it and settle the bill over [x402](https://www.x402.org/) (USDC on Base) or [Skyfire](https://www.skyfire.xyz/) — without an Apify account or API token of its own. Billing is the same either way: per successful row, never for errors.

Otherwise copy this prompt into Claude, ChatGPT, Cursor or any MCP-enabled assistant:

```text
I want check a European company's register record before we deal with them using the Apify Actor `sian.agency/northdata-company-scraper`.

Use it when I need: a company's register record rather than its website: register court and number, LEI, EUID, legal status, registered address and coordinates. Ask for more and each row adds officers with their roles and their own record links. Financials come as revenue and earnings by year, with the filing each figure came from and a flag for whether it was estimated. Deeper still: balance-sheet totals, dated register events such as capital changes and insolvency filings, patent and trademark publications, and parent and subsidiary links with the published ownership percentage.

Don't use it when: you need something other than the filed register record — use email-contact-lead-scraper or local-business-data-scraper or uspto-trademark-scraper instead.

How to call it: set `operation` to `search` and give `queries` a list of company names, optionally narrowed by `countries` (ISO-2 codes from a fixed list of 26; filtered searches return up to 15 companies per query, unfiltered ones up to 45). That returns identity rows. Set `fetchProfiles` to true to expand every hit into a full dossier, which bills the profile rate instead. To expand pages you already have, set `operation` to `detail` and pass `companyUrls`. The `includeOfficers`, `includeFinancials`, `includeEvents`, `includeNetwork` and `includePublications` toggles decide how much each dossier carries.

Start with this input:
{
  "operation": "search",
  "queries": [
    "Bayerische Motoren Werke"
  ],
  "countries": [
    "DE"
  ],
  "maxResults": 10,
  "fetchProfiles": true,
  "includeNetwork": true
}

Ask me which company and which country, and whether they want identity rows only or the full dossier with officers and financials, then run the Actor and summarise the results as a table.
```

**Things you can ask your agent for:**

- *Check whether these twelve German suppliers are still trading and flag any with a liquidation or insolvency entry in the last two years.*
- *Pull nine years of revenue and earnings for this group and tell me which figures are estimates rather than filed numbers.*
- *Map the ownership around this company: who controls it, what it controls, and at what percentage.*

Machine-readable API, MCP config and OpenAPI definition for this Actor are published at [apify.com/sian.agency/northdata-company-scraper.md](https://apify.com/sian.agency/northdata-company-scraper.md).

### 📋 Overview

**Register data is easy to find and hard to trust.** This Actor pulls company records from North Data across 26 European countries and returns them as flat rows, with the provenance attached to the numbers that need it.

**What you get:**

- ✅ **26 countries in one Actor**: Germany, the UK, France, Austria, Switzerland, the Benelux, the Nordics, the Baltics and Central Europe — one input shape for all of them.
- 📊 **Financials with provenance**: every yearly figure carries its source filing, that filing's publication date, the auditor where one is named, and North Data's own consolidated and estimate flags.
- 👔 **Officers with roles**: managing directors, board members and authorised signatories, each with their role, city and a permanent link to their own record.
- 🕸️ **The ownership network as rows**: parents, subsidiaries and officer links, typed, with the published ownership percentage where the register discloses one.
- 💰 **Two prices, honestly split**: a thin identity row from a search costs a fraction of a full dossier. You pay dossier price only for rows you asked to expand.
- 🔓 **No account, no key, no proxy**: give it a company name and press run.

***

### ✨ Features

- 🔍 **Name and keyword search**: turn a legal name, a trading name or a keyword into register rows.
- 🏛️ **Full company dossier**: identity, address, purpose, officers, financials, events and network in one row.
- 🌍 **Country filter that actually filters**: a multi-select over exactly the 26 countries North Data covers, and a filtered search is routed to the index that honours it. A code outside those 26 stops the run before it costs you anything, rather than quietly returning every country.
- 📅 **Dated register events**: registration, capital changes, management changes, liquidation and insolvency entries, each linked to the official source record.
- 📰 **Patent and trademark publications**: what the company has filed and when.
- 🧾 **Balance-sheet totals**: total assets broken down into current and non-current, and liabilities against equity.
- 🗣️ **English or German output**: role names, event labels and metric names in either language.
- 📄 **Run report**: an HTML summary of every run, with what succeeded, what failed and why.

***

### 🎬 Quick Start

Pick an operation, give it a company name or a North Data URL, and press Start. Search mode returns register rows for every match. Turn on **Expand each result to a full profile** when you want the whole dossier instead of the identity row.

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~northdata-company-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation":"search","queries":["Bayerische Motoren Werke"],"countries":["DE"]}'
```

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Choose what to run

**Company Search** if you have names. **Company Profile** if you already have North Data URLs.

#### Step 2: Fill in the targets

Type company names into **Company names or keywords**, or paste URLs into **North Data company URLs**. Narrow by country if you know it.

#### Step 3: Decide how deep to go

Leave **Expand each result to a full profile** off for cheap identity rows. Turn it on for officers, financials, events and the ownership network.

**That's it! In under a minute, you'll have:**

- A row per company with its register court, number, LEI and EUID
- Named officers with their roles
- Revenue and earnings by year, each tagged with the filing it came from

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `operation` | string | No | `search` or `detail`. Defaults to `search`. |
| `queries` | array | No | Company names or keywords, one search per entry. |
| `countries` | array | No | ISO-2 codes to restrict the search to. Empty means all 26 and pages to 45 rows per query; set, it returns up to 15 per query. |
| `companyUrls` | array | No | North Data company page URLs, for the `detail` operation. |
| `maxResults` | integer | No | Stop after this many companies. Default 50. |
| `fetchProfiles` | boolean | No | Expand every search hit into a full dossier. |
| `includeOfficers` | boolean | No | Return officers and their roles. Default on. |
| `includeFinancials` | boolean | No | Return the yearly financial series. Default on. |
| `includeEvents` | boolean | No | Return dated register events. Default on. |
| `includeNetwork` | boolean | No | Return parent and subsidiary links. Default off. |
| `includePublications` | boolean | No | Return patent and trademark filings. Default off. |
| `language` | string | No | `en` or `de`. Default `en`. |

**Example — search by name:**

```json
{
  "operation": "search",
  "queries": ["Bayerische Motoren Werke", "Siemens"],
  "countries": ["DE"],
  "maxResults": 30
}
```

**Example — full dossiers for URLs you already have:**

```json
{
  "operation": "detail",
  "companyUrls": [
    "https://www.northdata.com/Bayerische+Motoren+Werke+Aktiengesellschaft,+M%C3%BCnchen/HRB+42243"
  ],
  "includeNetwork": true,
  "includePublications": true
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **34 fields** including:

| Field | Type | Description |
|-------|------|-------------|
| `companyName` | string | Registered company name |
| `registerCourt` | string | Court or registrar that holds the record |
| `registerNumber` | string | Register number, e.g. HRB 42243 |
| `lei` | string | Legal Entity Identifier |
| `euid` | string | EU-wide business identifier |
| `tickers` | array | Stock tickers where the company is listed |
| `street` / `postalCode` / `city` / `country` | string | Registered address, country as ISO-2 |
| `latitude` / `longitude` | number | Coordinates of the registered address |
| `foundingDate` | string | Date of first registration |
| `corporatePurpose` | string | The purpose as filed |
| `officers` | array | Name, role, city and record URL per officer |
| `financials` | array | Metric, year, value, source filing, estimate and consolidated flags |
| `latestRevenue` | number | Most recent filed revenue |
| `balanceSheet` | object | Total assets and liabilities, broken down |
| `events` | array | Dated register events with links to the official record |
| `network` | array | Related companies and people with relation type and ownership percentage |

**Example:**

```json
{
  "companyName": "Bayerische Motoren Werke AG",
  "registerCourt": "District Court of Munich",
  "registerNumber": "HRB 42243",
  "lei": "YEH5ZCD6E441RHVHD759",
  "euid": "DED2601V.HRB42243",
  "tickers": ["BMW.DE", "BMW.SW", "BMWYY"],
  "street": "Petuelring 130",
  "postalCode": "80809",
  "city": "München",
  "country": "DE",
  "foundingDate": "1995-12-12",
  "officerCount": 123,
  "officers": [
    { "name": "Zipse, Oliver", "role": "CEO", "northdataUrl": "https://www.northdata.com/Zipse,%20Oliver,%20Kranzberg/1645" }
  ],
  "latestRevenue": 133517941913,
  "latestRevenueYear": "2025",
  "financials": [
    {
      "metric": "Revenue",
      "year": "2024",
      "value": 142380000000,
      "consolidated": true,
      "estimate": false,
      "sourcePublication": "Stock exchange listed companies - Financial Data",
      "sourceDate": "2024-12-31"
    }
  ],
  "network": [
    { "name": "BMW (UK) Ltd.", "entityType": "company", "relation": "IndirectParent", "ownershipPercent": "100 %" }
  ],
  "_operation": "search",
  "status": "success"
}
```

***

### 💼 Use Cases & Examples

#### 1. Counterparty checks before signing

**A finance or legal team confirming a company is real and current before a contract or a payment.**

**Input:** the counterparty's legal name and country
**Output:** register court and number, EUID, LEI, registered address, current officers, and the event history
**Use:** catch a liquidation entry or a management change before the money moves

#### 2. M\&A and investment screening

**A corporate development analyst sizing a target and its group.**

**Input:** the target's name, with profile expansion and the network turned on
**Output:** nine years of revenue and earnings with the filing behind each figure, balance-sheet totals, and the parent/subsidiary map
**Use:** build a first-pass view without paying for a data room

#### 3. B2B lead enrichment

**A revenue-operations manager turning a list of company names into CRM-ready rows.**

**Input:** company names, narrowed by country
**Output:** legal name, register identity, registered address, coordinates and named decision makers with roles
**Use:** fields a website scrape never has, keyed to an identifier your CRM can deduplicate on

#### 4. Supplier and vendor risk monitoring

**A procurement team watching a supplier list on a schedule.**

**Input:** the supplier URLs, run on a schedule with events on
**Output:** new register events since the last run — capital changes, management changes, address moves, insolvency filings
**Use:** an early warning that a supplier's situation has changed

#### 5. Beneficial-ownership and structure research

**A compliance analyst tracing who actually controls an entity.**

**Input:** the entity URL with the corporate network enabled
**Output:** typed relations to parents and subsidiaries with published ownership percentages, plus the officers who link entities together
**Use:** turn a network diagram into rows you can query

#### 6. Investigative journalism

**A reporter following people rather than companies.**

**Input:** a company, then the officer URLs it returns
**Output:** every officer with their own permanent record URL, and the other entities they connect to
**Use:** how a shell structure becomes visible

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/northdata-company-scraper').call({
  operation: 'search',
  queries: ['Bayerische Motoren Werke'],
  countries: ['DE'],
  fetchProfiles: true
});

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

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/northdata-company-scraper').call(
    run_input={
        'operation': 'search',
        'queries': ['Bayerische Motoren Werke'],
        'countries': ['DE'],
        'fetchProfiles': True,
    }
)

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

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~northdata-company-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"operation":"search","queries":["Bayerische Motoren Werke"],"countries":["DE"],"fetchProfiles":true}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: schedule, or a new row in your CRM
2. **HTTP Request**: call the Actor with the company name
3. **Process**: read the register number, status and event list
4. **Action**: write back to the CRM, or alert on an insolvency entry

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **25 companies** per run — full feature access, same data quality
- No credit card required
- Enough to check a shortlist end to end

#### PAID Tier (Production Ready)

- **Unlimited** companies per run
- Pay-per-result: charged only for rows that came back
- Two rates, so depth is a choice: a search identity row is a fraction of a full dossier

💰 **Priced at the middle of the market for a full dossier, and well under it for discovery.** There is no vendor to pay for on this path, so the saving is real rather than introductory.

🔗 [View current pricing](https://apify.com/sian.agency/northdata-company-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: Do I need a North Data account or an API key?**
A: No. Every page this Actor reads is public. Give it a company name and press run.

**Q: How many companies can one search return?**
A: 45 per query with no country filter, and 15 per query with one. Both are North Data's own ceilings on its free search, not ours — the country-aware index it filters against is the smaller of the two. To go wider, add more queries or run the same name one country at a time, which returns a different set for each.

**Q: Does this return the Premium data?**
A: No, and it does not try to. North Data sells four panels at €49/month: the full legal-representative detail, ownership relations, key performance indicators, and the interactive financial statements. This Actor returns what the public page shows an anonymous visitor. That still includes officers, the revenue and earnings series, register events and the network graph.

**Q: Why do some companies have no financials?**
A: Because they never published any. Small entities in most European registers file abridged accounts or none at all. The register identity is always there; the depth follows what the company actually filed.

**Q: Can I use this for credit scoring?**
A: No. North Data's terms of use prohibit producing credit assessments from their information. Counterparty verification, enrichment and monitoring are all fine.

**Q: What output formats are available?**
A: JSON, CSV and Excel — export directly from the Apify dataset.

**Q: Does it return officer email addresses or phone numbers?**
A: No. Officers come back as names with roles, cities and a link to their public record. Contact details are not published on North Data and are not invented here.

***

### 🐛 Troubleshooting

**A search returns nothing**

- Try the full legal name — "Bayerische Motoren Werke" rather than "BMW"
- Widen or clear the country filter
- Search matches company names, so a generic keyword returns companies with that word in their name, not every company in that line of business
- A row that says the search *could not be completed* is a different answer from one that says nothing matched. The first means North Data did not return a usable result page, so nothing was found or ruled out — re-run that query in a few minutes and it will resolve.

**A company row has no officers or no financials**

- That entity does not publish them. Small companies in most registers file neither
- The register identity fields are still populated, and they are the ones that are always there

**A profile URL is rejected**

- Use a company page URL, not a search page or an event permalink
- The `?id=` links inside the event list point at source records, not company pages
- Copy the URL from a search run's `northdataUrl` column and it will always resolve

**A run is slower than expected**

- Full dossiers are large pages and North Data takes several seconds to render each one
- Leave **Expand each result to a full profile** off when you only need identity rows

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what the user has chosen to share publicly. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data. Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

North Data's own terms of use prohibit producing credit assessments from their information. Please respect that when you decide what to build on these rows.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

North Data is a trademark of North Data GmbH. This Actor is not affiliated with, endorsed by, or sponsored by North Data.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- 📧 <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `operation` (type: `string`):

Company Search turns each name or keyword into register rows. Company Profile takes the North Data URLs you already have and returns the full dossier for each.

## `queries` (type: `array`):

Names or keywords to search, one search per entry. A legal name matches best; a bare keyword matches company names, so 'Solar' returns companies with Solar in the name rather than every solar business. North Data returns at most 45 companies per query, so use several specific queries rather than one broad one.

## `countries` (type: `array`):

Limit the search to these countries. Leave empty to search all 26 North Data covers. A country-filtered search runs against North Data's country-aware index, which returns up to 15 companies per query and cannot be paged; an unfiltered search pages to North Data's free ceiling of 45. So filter when you want the right 15, and leave this empty when you want the widest net. Searching one country at a time returns a different 15 for each, which is how you get past either ceiling.

## `companyUrls` (type: `array`):

Used by the Company Profile operation: North Data company page URLs to expand, e.g. https://www.northdata.com/Bayerische+Motoren+Werke+Aktiengesellschaft,+M%C3%BCnchen/HRB+42243. Copy them from a search run's northdataUrl column.

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

Stop after this many companies across all queries. Each search call returns 15 rows and each query tops out at 45, so a run needs roughly one query per 45 companies you want.

## `fetchProfiles` (type: `boolean`):

Fetch every search hit's company page to add officers, the financial series, register events and publications. Costs one extra request per company and bills the Company Profile event on top of the search row. Leave it off to pay for identity rows only.

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

Return the managing directors, board members and other officers North Data publishes for the company, each with role, city and their own North Data person URL.

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

Return the year-by-year revenue, earnings, public funding and patent counts, each figure tagged with the filing it came from, its publication date and whether North Data marked it an estimate. Only companies that publish accounts carry these.

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

Return the dated register history: registration, capital changes, management changes, liquidation and insolvency entries, each with a link to the official source record.

## `includeNetwork` (type: `boolean`):

Return the related companies and people North Data draws on the company's network graph — parent and subsidiary links with the ownership percentage where one is published, plus officer links. Adds one fast request per company and no extra charge.

## `includePublications` (type: `boolean`):

Return the patent, trademark and register announcements North Data lists for the company, with dates and categories.

## `language` (type: `string`):

Language North Data renders role names, event labels and financial metric names in. Register identifiers and numbers are the same in both.

## Actor input object example

```json
{
  "operation": "search",
  "queries": [
    "Bayerische Motoren Werke",
    "Siemens",
    "SAP"
  ],
  "countries": [
    "DE",
    "AT",
    "CH"
  ],
  "companyUrls": [],
  "maxResults": 50,
  "fetchProfiles": false,
  "includeOfficers": true,
  "includeFinancials": true,
  "includeEvents": true,
  "includeNetwork": false,
  "includePublications": false,
  "language": "en"
}
```

# Actor output Schema

## `northDataCompanies` (type: `string`):

Every company this run returned, with the fields you enabled.

## `scrapingSummary` (type: `string`):

HTML summary showing successful and failed results with key metrics

# 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 = {
    "operation": "search",
    "queries": [
        "Bayerische Motoren Werke",
        "Siemens",
        "SAP"
    ],
    "countries": [
        "DE",
        "AT",
        "CH"
    ],
    "companyUrls": [],
    "maxResults": 50,
    "fetchProfiles": false,
    "includeOfficers": true,
    "includeFinancials": true,
    "includeEvents": true,
    "includeNetwork": false,
    "includePublications": false,
    "language": "en"
};

// Run the Actor and wait for it to finish
const run = await client.actor("sian.agency/northdata-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 = {
    "operation": "search",
    "queries": [
        "Bayerische Motoren Werke",
        "Siemens",
        "SAP",
    ],
    "countries": [
        "DE",
        "AT",
        "CH",
    ],
    "companyUrls": [],
    "maxResults": 50,
    "fetchProfiles": False,
    "includeOfficers": True,
    "includeFinancials": True,
    "includeEvents": True,
    "includeNetwork": False,
    "includePublications": False,
    "language": "en",
}

# Run the Actor and wait for it to finish
run = client.actor("sian.agency/northdata-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 '{
  "operation": "search",
  "queries": [
    "Bayerische Motoren Werke",
    "Siemens",
    "SAP"
  ],
  "countries": [
    "DE",
    "AT",
    "CH"
  ],
  "companyUrls": [],
  "maxResults": 50,
  "fetchProfiles": false,
  "includeOfficers": true,
  "includeFinancials": true,
  "includeEvents": true,
  "includeNetwork": false,
  "includePublications": false,
  "language": "en"
}' |
apify call sian.agency/northdata-company-scraper --silent --output-dataset

```

## MCP server setup

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