# Poland KYB Risk Check - Company, UBO & Insolvency (`regdata/poland-kyb-check`) Actor

Run a complete Polish KYB check from one NIP or KRS. Returns official company identity, beneficial owners from CRBR, and insolvency proceedings screened against the company AND every beneficial owner. One normalized verdict: clear, findings or partial. You only pay for a complete check.

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

## Pricing

from $250.00 / 1,000 complete kyb checks

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

## Poland KYB Risk Check - Company + Beneficial Owners + Insolvency in One Call

Give it a Polish **NIP** or **KRS**. Get back one finished KYB check:

- **Who the company is** - official identity from the state business register (REGON): legal name, KRS, legal form, registered address, registration date, and whether it still exists.
- **Who is actually behind it** - beneficial owners from the official UBO register (CRBR): names, citizenship, and the nature of their control.
- **Whether anyone in that structure is in the national debtor register** - KRZ, searched against **the company AND every single beneficial owner**, across *both* of its registers: the public register and the court announcements (obwieszczenia), where live bankruptcies are actually published.

One normalized verdict: `clear`, `findings`, `not_found`, or `partial`.

**You only pay for a complete check.** Incomplete checks and not-found lookups are never charged.

### Why screen the beneficial owners and not just the company?

Because a clean company can be owned by someone in personal bankruptcy - and that is exactly the risk a KYB check exists to find. A company-only insolvency lookup will never see it.

Running that cascade by hand is awkward: the debtor register cannot search a person by name, only by their **PESEL**. You have to pull the UBO register first to learn each owner's PESEL, then run a separate debtor search for every one of them. This actor does that for you, in one call.

Because every lookup is keyed on an exact identifier - NIP for companies, PESEL for people - there is **no fuzzy name matching anywhere in the chain**, and therefore no false-positive matches on common surnames.

### What you get back

```json
{
  "query": "1080004850",
  "verdict": "findings",
  "charged": true,
  "riskFlags": ["company-in-debtor-registry", "company-bankruptcy-or-restructuring"],
  "company": {
    "name": "GETIN NOBLE BANK SPÓŁKA AKCYJNA W UPADŁOŚCI",
    "nip": "1080004850",
    "krs": "0000304735",
    "regon": "141334039",
    "legalForm": "116 - SPÓŁKI AKCYJNE",
    "address": "Rondo Ignacego Daszyńskiego 2C 00-843 Warszawa",
    "registrationDate": "2008-04-25",
    "active": true
  },
  "beneficialOwners": [
    {
      "name": "MIROSŁAW MOZDŻEŃ",
      "pesel": "73052511914",
      "citizenship": "POLSKA",
      "natureOfControl": ["inna osoba fizyczna"],
      "debtorRegistry": { "found": false, "entries": [] }
    }
  ],
  "debtorRegistry": {
    "found": true,
    "entries": [
      {
        "caseSignature": "WA1M/GUp/44/2023",
        "kind": "bankruptcy",
        "proceedingType": "Obwieszczenie dokumentu dotyczącego składnika masy upadłości",
        "court": "Sąd Rejonowy dla m.st. Warszawy w Warszawie",
        "startedAt": "2024-09-16",
        "role": null,
        "sourceUrl": "https://krz.ms.gov.pl/"
      }
    ]
  },
  "coverage": { "identity": "OK", "ubo": "OK", "insolvency": "OK", "uboScreened": 2 }
}
````

### What do the verdicts mean?

| verdict | meaning | charged |
|---|---|---|
| `clear` | Every source answered. No insolvency proceedings against the company or any beneficial owner. | yes |
| `findings` | Every source answered, and something needs a human: see `riskFlags`. | yes |
| `not_found` | No company is registered under that identifier (usually a typo). | **no** |
| `partial` | A source registry was unreachable, so the check is incomplete. Re-run it. | **no** |

#### Risk flags

| flag | meaning |
|---|---|
| `company-in-debtor-registry` | The company appears somewhere in KRZ. **This alone does not mean it is insolvent** - see below. |
| `company-bankruptcy-or-restructuring` | A bankruptcy or restructuring case is on record for the company. |
| `ubo-in-debtor-registry` | A **beneficial owner** appears somewhere in KRZ. |
| `ubo-bankruptcy-or-restructuring` | A bankruptcy or restructuring case is on record for a beneficial owner. |
| `company-not-active` | The company has been struck off the business register. |
| `ubo-register-discrepancy-reported` | Someone has formally reported a discrepancy in the UBO filing. |

Each entry is classified by its court case signature (`WA1M/GUp/44/2023` -> `GUp` -> bankruptcy):

| `kind` | meaning |
|---|---|
| `bankruptcy` | Bankruptcy proceeding (GUp) |
| `bankruptcy-petition` | Petition to declare bankruptcy (GU) |
| `restructuring` | Restructuring proceeding (GR\*) |
| `discontinued-enforcement` | Enforcement action that was discontinued (Km / GKm) |
| `business-ban` | Ban on conducting business activity |
| `unknown` | The registry's detail lookup was unavailable - review manually |

#### Why we report the entry rather than declare "insolvent"

**KRZ does not disclose whether the entity is the debtor or a creditor in a proceeding** (the role
field is never populated). A large bank, for example, appears in enforcement cases as the *creditor*.
So this actor reports what the registry says - the case type, its signature, its status - and leaves
the legal conclusion to you. `role` is always returned as `null` rather than guessed.

### How do I run it?

Paste NIP or KRS numbers into **Company identifiers** and run. That's it - no API key, no login, nothing to configure.

#### JavaScript

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });

const run = await client.actor('regdata/poland-kyb-check').call({
    identifiers: ['6770065406', '1080004850'],
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const check of items) {
    console.log(check.query, check.verdict, check.riskFlags);
}
```

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient('YOUR_APIFY_TOKEN')

run = client.actor('regdata/poland-kyb-check').call(run_input={
    'identifiers': ['6770065406', '1080004850'],
})

for check in client.dataset(run['defaultDatasetId']).iterate_items():
    print(check['query'], check['verdict'], check['riskFlags'])
```

### FAQ

**Does this cover PEP screening or sanctions?**
No. This check covers company identity, beneficial ownership, and insolvency. It does not screen for politically exposed persons, sanctions, or adverse media, and it does not claim to.

**What happens if a government registry is down?**
You get a `partial` verdict, an explanation of which source was unreachable, and **no charge**. If three checks in a row come back incomplete, the run stops early and tells you to try again later - so a registry outage can never quietly burn through a long list.

**Does a KRZ hit mean the company is bankrupt?**
No. It means the company appears in the register. Check the `kind`: only `bankruptcy`,
`bankruptcy-petition` and `restructuring` indicate insolvency. A `discontinued-enforcement` entry is
often the company appearing as a *creditor* whose enforcement action was closed.

**Is a `clear` verdict the same as "no data found"?**
No, and the distinction is the point. `clear` means the registers were reached and returned no proceedings. If a register cannot be reached, you get `partial`, never `clear`.

**Are the beneficial owners the same as the directors?**
No. Directors are the people who run the company; beneficial owners are the people who ultimately own or control it. This actor returns beneficial owners, from the official UBO register.

**Why is a PESEL included?**
It is the identifier the debtor register requires to screen a person, and it is published in the public UBO register. It is what makes the ownership screening exact rather than name-based.

**Do you support other countries?**
This actor is Poland-only. See the related actors below for other jurisdictions.

### Related actors

Individual registry actors, if you want the raw data rather than a finished check:

- [Poland KRZ National Debtor Registry Scraper](https://apify.com/regdata/krz-debtor-scraper) - insolvency & restructuring proceedings
- [Poland CRBR Beneficial Owners Scraper](https://apify.com/regdata/crbr-beneficial-owners-scraper) - the UBO register
- [Polish REGON Scraper](https://apify.com/regdata/polish-regon-scraper) - the official business register
- [Poland KRS Financial Scraper](https://apify.com/regdata/poland-krs-financial-scraper) - filed financial statements
- [Poland MSiG Court Gazette Scraper](https://apify.com/regdata/msig-scraper) - bankruptcy & liquidation notices

Other jurisdictions: [Germany Handelsregister](https://apify.com/regdata/germany-handelsregister-scraper), [Belgium KBO/BCE](https://apify.com/regdata/belgium-kbo-company-scraper), [Spain Registro Mercantil](https://apify.com/regdata/spain-company-directory-scraper), [Italy Registro Imprese](https://apify.com/regdata/italy-registro-imprese-scraper), [France Societe.com](https://apify.com/regdata/societe-com-scraper), [Czech ISIR](https://apify.com/regdata/czech-isir-insolvency-scraper), [Slovakia RPVS](https://apify.com/regdata/slovakia-rpvs-ubo-scraper).

### Data sources & compliance

All three sources are **official, public** Polish government registers:

- REGON - Statistics Poland (GUS) business register
- CRBR - Central Register of Beneficial Owners, Ministry of Finance
- KRZ - National Register of Debtors, Ministry of Justice

The data is published by the state for public inspection. Personal data returned (names, PESEL) comes from these public registers and is intended for KYC/AML, due-diligence and credit-risk purposes. You are responsible for processing it lawfully under GDPR - in particular for having a lawful basis, and for not retaining it longer than your purpose requires.

# Actor input Schema

## `identifiers` (type: `array`):

The Polish companies to check, by NIP (10 digits) or KRS (10 digits, leading zeros). Each identifier returns one complete KYB check: identity, beneficial owners, and insolvency proceedings against the company and every beneficial owner.

## `krzConcurrency` (type: `integer`):

How many beneficial owners to screen against the insolvency register in parallel. Higher is faster; lower is gentler on the registry. Leave at the default unless a check is timing out.

## Actor input object example

```json
{
  "identifiers": [
    "6770065406",
    "5252248481"
  ],
  "krzConcurrency": 4
}
```

# Actor output Schema

## `checks` (type: `string`):

One check record per requested company in the default dataset.

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

// Run the Actor and wait for it to finish
const run = await client.actor("regdata/poland-kyb-check").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 = { "identifiers": ["6770065406"] }

# Run the Actor and wait for it to finish
run = client.actor("regdata/poland-kyb-check").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 '{
  "identifiers": [
    "6770065406"
  ]
}' |
apify call regdata/poland-kyb-check --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=regdata/poland-kyb-check",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Poland KYB Risk Check - Company, UBO & Insolvency",
        "description": "Run a complete Polish KYB check from one NIP or KRS. Returns official company identity, beneficial owners from CRBR, and insolvency proceedings screened against the company AND every beneficial owner. One normalized verdict: clear, findings or partial. You only pay for a complete check.",
        "version": "1.0",
        "x-build-id": "FTi542f7eTkUHgwnR"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/regdata~poland-kyb-check/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-regdata-poland-kyb-check",
                "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/regdata~poland-kyb-check/runs": {
            "post": {
                "operationId": "runs-sync-regdata-poland-kyb-check",
                "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/regdata~poland-kyb-check/run-sync": {
            "post": {
                "operationId": "run-sync-regdata-poland-kyb-check",
                "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",
                "required": [
                    "identifiers"
                ],
                "properties": {
                    "identifiers": {
                        "title": "Company identifiers (NIP or KRS)",
                        "type": "array",
                        "description": "The Polish companies to check, by NIP (10 digits) or KRS (10 digits, leading zeros). Each identifier returns one complete KYB check: identity, beneficial owners, and insolvency proceedings against the company and every beneficial owner.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "krzConcurrency": {
                        "title": "Beneficial-owner screening concurrency",
                        "minimum": 1,
                        "maximum": 8,
                        "type": "integer",
                        "description": "How many beneficial owners to screen against the insolvency register in parallel. Higher is faster; lower is gentler on the registry. Leave at the default unless a check is timing out.",
                        "default": 4
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
