# Poland KRS Board Members & Shareholders Scraper (`regdata/krs-fullnames-scraper`) Actor

Extract full non-anonymized board member & shareholder names from Polish KRS (National Court Register). The official API censors names to "L\*\*\*\*\*\*" — this actor downloads the public PDF extract with complete names, roles, and company metadata.

- **URL**: https://apify.com/regdata/krs-fullnames-scraper.md
- **Developed by:** [getregdata](https://apify.com/regdata) (community)
- **Categories:** Lead generation, Automation, Agents
- **Stats:** 23 total users, 5 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 company processeds

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

## Poland KRS Board Members Scraper | Zarzad spolki - pelne dane z KRS

Get the **full, non-anonymized names** of board members, supervisory board, and shareholders from Poland's National Court Register (KRS). The official KRS API returns names censored to `L******` - this actor reads the official public KRS extract, which carries the complete names, and parses it into structured JSON. Beyond what the API gives you, in bulk.

**No login, no API key, nothing to configure** - paste a KRS number and get the real names back.

### What data do you get?

One record per company, with the people who actually run it:

```json
{
  "krs": "0000423987",
  "companyName": "FLEBETICA SPOLKA Z OGRANICZONA ODPOWIEDZIALNOSCIA",
  "legalForm": "SPOLKA Z OGRANICZONA ODPOWIEDZIALNOSCIA",
  "nip": "8992736629",
  "regon": "021909317",
  "address": "ul. SOSNOWA, nr 28, lok. 2, miejsc. BIELANY WROCLAWSKIE, kod 55-040",
  "registrationDate": "22.06.2012",
  "boardMembers": [
    { "fullName": "STANISLAW MICHAL LESNIAK", "firstName": "STANISLAW MICHAL", "surname": "LESNIAK", "role": "PREZES ZARZADU", "isCurrent": true },
    { "fullName": "MICHAL MACIEJ LESNIAK", "firstName": "MICHAL MACIEJ", "surname": "LESNIAK", "role": "WICEPREZES ZARZADU", "isCurrent": true }
  ],
  "supervisoryBoard": [],
  "shareholders": [],
  "shareCapital": null,
  "extractDate": "31.03.2026",
  "extractType": "aktualny"
}
```

#### Extract types

`extractType: "aktualny"` (default) returns the officers **currently** in office. Every person is
returned with `isCurrent: true`.

`extractType: "pelny"` returns the **full history** - everyone who has ever served, each flagged
with `isCurrent`. Historical entries are the ones the register has struck out. For CD Projekt
(KRS 0000006865) the full extract returns 34 board members of whom 7 are current, and 49
supervisory board members of whom 5 are current; the current set matches the `aktualny` extract
exactly. Filter on `isCurrent` if you only want the sitting board.

| Field | Description |
|-------|-------------|
| `krs` / `nip` / `regon` | Court-registry, tax, and statistical IDs |
| `companyName` / `legalForm` | Full legal name and form |
| `address` / `registrationDate` | Registered address and KRS registration date |
| `boardMembers[]` | Board members with `fullName`, `firstName`, `surname`, `role` (Prezes, Wiceprezes, Czlonek Zarzadu, etc.) |
| `supervisoryBoard[]` | Supervisory board members (Rada Nadzorcza), where present |
| `shareholders[]` | Shareholders named in the register |
| `shareCapital` | Share capital amount |
| `extractDate` / `extractType` | Extract date and type (`aktualny` = current, `pelny` = full history) |

### How much does it cost?

**Pay per result** - you are not charged for Apify platform usage, only a fixed price per company. The price drops on higher Apify subscription tiers.

| Volume | Cost |
|--------|------|
| 1 company | $0.008 |
| 100 companies | ~$0.81 |
| 1,000 companies | ~$8.01 |
| 10,000 companies | ~$80.01 |

Plus a **$0.005** start fee per run. Apify's $5 monthly free credit covers ~625 companies. No subscription, no minimum.

### Is it legal, and where does the data come from?

Data comes from the official **KRS** register at [wyszukiwarka-krs.ms.gov.pl](https://wyszukiwarka-krs.ms.gov.pl/), maintained by Poland's Ministry of Justice. Board-member and shareholder names are published as public data under the KRS Act (Ustawa o KRS, art. 4 ust. 4aa) - the register exists precisely so the public can see who runs a company. Extraction of this public data is permitted; you remain responsible for lawful, GDPR-compliant use downstream. PESEL numbers are present in the source extract but are deliberately **excluded** from the output.

### How do I use it?

Click **Try it** and paste this input:

```json
{ "krsNumbers": ["0000423987"] }
```

Pass many KRS numbers in `krsNumbers` to enrich a whole list in one run. Set `extractType: "pelny"` for the full history instead of the current state.

### Input options

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `krsNumbers` | string\[] | Yes | - | List of KRS numbers to look up |
| `extractType` | string | No | `aktualny` | `aktualny` = current state, `pelny` = full history |

### What you can do with it

- **B2B prospecting** - turn a list of KRS numbers into named decision-makers (Prezes, Wiceprezes) for sales outreach.
- **Due diligence** - verify exactly who runs a company, with roles, before doing business.
- **KYC / KYB** - capture directors and shareholders for a compliance file, with the real names the API hides.
- **Management research** - analyze the leadership of Polish companies at scale.
- **Change tracking** - re-run over a portfolio and detect board changes.

### Run it from code

```bash
## cURL - start a run and get the dataset back
curl -X POST "https://api.apify.com/v2/acts/regdata~krs-fullnames-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "krsNumbers": ["0000423987"] }'
```

```javascript
// Node.js - apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('regdata/krs-fullnames-scraper').call({ krsNumbers: ['0000423987'] });
const { items } = await client.dataset(run.defaultDatasetId).listItems();
```

```python
## Python - apify-client
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("regdata/krs-fullnames-scraper").call(run_input={"krsNumbers": ["0000423987"]})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

### Integrations

Runs anywhere Apify does: call it from the **REST API**, **schedule** recurring board pulls, pipe results into **n8n / Make / Zapier**, or use it from any **MCP client** (Claude, Cursor) via [mcp.apify.com](https://mcp.apify.com).

### FAQ

**How is this different from the official KRS API?** The official API censors personal names (`L******`, `S********`). This actor reads the official public KRS extract, which carries the **complete** first names and surnames, and returns them structured.

**Is it legal?** Yes. Board and shareholder names are public data under the KRS Act. Extraction of public data is permitted; you remain responsible for lawful, GDPR-compliant use downstream.

**Do I need a KRS account or API key?** No. No login, no key, nothing to configure - just an Apify account.

**Do you return PESEL numbers?** No. PESEL appears in the source extract but is deliberately excluded from the output.

**Current board vs full history?** `extractType: "aktualny"` (default) returns the current state; `"pelny"` returns the full historical record.

**What export formats are supported?** JSON, CSV, Excel, or XML, or read live via the API.

### Limitations

- Works for companies registered in KRS only.
- The parser targets the standard KRS extract layout; unusual layouts may not parse fully.
- PESEL numbers are intentionally not collected.

### Related actors

Part of a suite of official government registry actors - **no public API to build or maintain**, pay per result, nothing to configure.

| Country | Actors |
|---|---|
| Poland | [BDO](https://apify.com/regdata/bdo-waste-registry-scraper) · [CRBR](https://apify.com/regdata/crbr-beneficial-owners-scraper) · [KRS (financials)](https://apify.com/regdata/poland-krs-financial-scraper) · [EKW](https://apify.com/regdata/ekw-ksiegi-wieczyste-scraper) · [KNF](https://apify.com/regdata/knf-registry-scraper) · **KRS (board) (this actor)** · [KRZ](https://apify.com/regdata/krz-debtor-scraper) · [MSiG](https://apify.com/regdata/msig-scraper) · [KYB check](https://apify.com/regdata/poland-kyb-check) · [PEP (Sejm)](https://apify.com/regdata/poland-parliamentary-pep-scraper) · [REGON (sites)](https://apify.com/regdata/polish-premises-prospector) · [REGON](https://apify.com/regdata/polish-regon-scraper) · [UOKiK](https://apify.com/regdata/uokik-clauses-scraper) |
| Germany | [Insolvenzbekanntmachungen](https://apify.com/regdata/germany-insolvency-scraper) · [Handelsregister](https://apify.com/regdata/germany-handelsregister-scraper) |
| Spain | [BORME](https://apify.com/regdata/borme-corporate-acts-scraper) · [Registro Mercantil](https://apify.com/regdata/spain-company-directory-scraper) · [Registro Público Concursal](https://apify.com/regdata/spain-concursal-scraper) |
| Italy | [INI-PEC](https://apify.com/regdata/italy-pec-lookup) · [Registro Imprese](https://apify.com/regdata/italy-registro-imprese-scraper) |
| Austria | [Ediktsdatei](https://apify.com/regdata/austria-ediktsdatei-scraper) · [WKO](https://apify.com/regdata/wko-business-directory-scraper) |
| France | [Societe.com](https://apify.com/regdata/societe-com-scraper) |
| Belgium | [KBO / BCE](https://apify.com/regdata/belgium-kbo-company-scraper) |
| Czechia | [ISIR](https://apify.com/regdata/czech-isir-insolvency-scraper) |
| Slovakia | [RPVS](https://apify.com/regdata/slovakia-rpvs-ubo-scraper) |
| Cyprus | [DRCOR](https://apify.com/regdata/cyprus-drcor-company-scraper) |
| Ireland | [CRO](https://apify.com/regdata/ireland-cro-company-scraper) |
| Portugal | [Publicações MJ](https://apify.com/regdata/portugal-corporate-acts-scraper) |
| Nigeria | [CAC](https://apify.com/regdata/nigeria-cac-company-scraper) |
| Colombia | [RUES](https://apify.com/regdata/colombia-rues-company-scraper) |
| USA | [California SoS](https://apify.com/regdata/california-sos-business-scraper) · [California UCC](https://apify.com/regdata/california-ucc-lien-scraper) |
| UAE | [ADGM](https://apify.com/regdata/uae-adgm-public-register-scraper) |
| Global | [Adverse media](https://apify.com/regdata/adverse-media-screener) |

**Common combinations:** company register -> [UBO](https://apify.com/regdata/crbr-beneficial-owners-scraper) -> [insolvency/debtors](https://apify.com/regdata/krz-debtor-scraper) -> [adverse media](https://apify.com/regdata/adverse-media-screener) is the standard KYB/onboarding chain.

For Poland that whole chain is one call: [Poland KYB Risk Check](https://apify.com/regdata/poland-kyb-check) takes a NIP or KRS and returns identity, beneficial owners and insolvency - screened against the company **and every beneficial owner** - as a single verdict. The component registry lookups it runs bill as usual, plus a small orchestration fee.

> Full suite: [apify.com/regdata](https://apify.com/regdata) · Callable from any MCP client via [mcp.apify.com](https://mcp.apify.com)

### Informacje po polsku

#### Czym jest ten aktor?

Ten aktor pobiera **pelne, niezanonimizowane dane czlonkow zarzadu** z Krajowego Rejestru Sadowego (KRS). Oficjalne API KRS zwraca dane osobowe zanonimizowane - zamiast imion i nazwisk widzisz `L******`. Ten aktor korzysta z oficjalnego, publicznego odpisu KRS, ktory zawiera pelne dane osobowe, i przetwarza go na ustrukturyzowany JSON.

#### Dla kogo?

Dla **zespolow sprzedazy B2B** szukajacych osob decyzyjnych (prezesow, wiceprezesow, czlonkow zarzadu), **dzialow compliance** realizujacych due diligence i weryfikacje beneficjentow, **kancelarii prawnych** oraz analitykow KYC/AML. To narzedzie do **prospectingu B2B w Polsce** - od numeru KRS do gotowej listy kontaktow.

#### Co otrzymujesz?

Dla kazdego numeru KRS: nazwe firmy, NIP, REGON, adres, date rejestracji, kapital zakladowy, a przede wszystkim **zarzad** z imionami, nazwiskami i funkcjami, sklad rady nadzorczej oraz dane wspolnikow. Numery PESEL nie sa zbierane (zgodnie z RODO). Bez subskrypcji - placisz wylacznie za uzycie.

***

### Pelne dane osobowe z KRS - zarzad, rada nadzorcza, wspolnicy

Pobranie pelnych (nieanonimizowanych) imion i nazwisk czlonkow zarzadu, rady nadzorczej i wspolnikow z KRS. Oficjalne API cenzuruje imiona i nazwiska (np. "L\*\*\*\*\*\*"). Ten aktor korzysta z publicznego odpisu KRS i parsuje kompletne dane osobowe do formatu JSON. Idealne do prospectingu B2B, due diligence i KYC/AML.

# Actor input Schema

## `krsNumbers` (type: `array`):

List of KRS numbers to look up. Each number will be padded to 10 digits automatically.

## `extractType` (type: `string`):

Type of KRS extract to download. 'aktualny' = current state only (faster, smaller). 'pelny' = full history including former board members.

## Actor input object example

```json
{
  "krsNumbers": [
    "0000028860"
  ],
  "extractType": "aktualny"
}
```

# Actor output Schema

## `companyData` (type: `string`):

Company info (name, NIP, REGON, address) plus full names and roles of board members, supervisory board, and shareholders.

# 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 = {
    "krsNumbers": [
        "0000028860"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("regdata/krs-fullnames-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 = { "krsNumbers": ["0000028860"] }

# Run the Actor and wait for it to finish
run = client.actor("regdata/krs-fullnames-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 '{
  "krsNumbers": [
    "0000028860"
  ]
}' |
apify call regdata/krs-fullnames-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,regdata/krs-fullnames-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/R90a5BMbh0rQzu83Z/builds/ndMMxhdlPu8wWpJZF/openapi.json
