# Poland KRZ National Debtor Registry Scraper (`regdata/krz-debtor-scraper`) Actor

Automate bankruptcy and restructuring checks against the official public debtor registry. Nine search modes cover companies, persons, sole traders, case signatures, proceedings, shareholders, and assets. Build a credit-risk watchlist or insolvency workflow. Pay-per-result.

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

## Pricing

from $25.00 / 1,000 search sessions

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 KRZ National Debtor Registry Scraper | Krajowy Rejestr Zadluzonych

Check whether any Polish company or person has **bankruptcy, restructuring, or enforcement proceedings** in the National Debtor Registry (KRZ) - structured JSON, in bulk, beyond what the register's manual web search allows. Search by company name, NIP, KRS, REGON, PESEL, or case signature across nine search modes, from the official Ministry of Justice register that has no public API.

**No login, no API key, nothing to configure** - paste a name or tax ID and get a debtor-status record back. It is the pay-per-use alternative to commercial providers like MGBI or iMSiG (typically $200-500/month).

### What data do you get?

One record per match, linking the entity to its proceeding:

```json
{
  "entityName": "GETIN RENT SPOLKA Z OGRANICZONA ODPOWIEDZIALNOSCIA",
  "nip": "8992777278",
  "krs": "0000585174",
  "regon": null,
  "proceedingId": "96dd6ffc-191c-41ce-bcc4-998524e4efd2",
  "caseSignature": null,
  "proceedingType": null,
  "proceedingStatus": null,
  "court": null,
  "role": null,
  "searchType": "entity",
  "sourceUrl": "https://krz.ms.gov.pl/"
}
```

An `entity`/`person` search tells you *whether* a proceeding exists and returns its `proceedingId`. To pull the full case detail (type, status, court, role), pass that id back in with `searchMode: "proceedingDetails"`.

| Field | Description |
|-------|-------------|
| `entityName` | Company or person name |
| `nip` / `krs` / `regon` | Polish tax, court-registry, and statistical IDs |
| `proceedingId` | UUID for fetching full proceeding details |
| `caseSignature` | Court case signature |
| `proceedingType` | Bankruptcy, restructuring, enforcement, etc. |
| `proceedingStatus` | Current status of the proceeding |
| `court` | Court handling the case |
| `role` | The entity's role in the proceeding |
| `searchType` | The search mode used |
| `sourceUrl` | Source register URL |

### How much does the KRZ data cost?

**Pay per use** - you are not charged for Apify platform usage, only a flat fee per search plus a small fee per result returned.

| Event | Cost |
|---|---|
| Per search | $0.025 |
| Per result | $0.006 |

A search returning 6 results costs about $0.06. Most monitoring searches return few or no results, so cost is dominated by the flat per-search fee. The per-result price drops on higher Apify subscription tiers ($0.005 / $0.004 / $0.003 on Bronze / Silver / Gold). Apify's $5 monthly free credit covers roughly **200 searches**. No subscription, no minimum.

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

Data comes from the official **KRZ** portal at [krz.ms.gov.pl](https://krz.ms.gov.pl/), operated by Poland's **Ministry of Justice** under the Act on the National Debtor Registry (Ustawa z dnia 6 grudnia 2018 r. o Krajowym Rejestrze Zadluzonych). The register is public and covers all bankruptcy, restructuring, and enforcement proceedings in Poland since 1 December 2021. Extraction of this public data is permitted; you remain responsible for lawful, GDPR-compliant use of any personal data downstream. For privacy, the actor does not collect PESEL numbers into the dataset.

### How do I use it?

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

```json
{ "searchMode": "entity", "entityName": "Getin" }
```

Or screen by identifier (`{ "searchMode": "entity", "identifier": "8992777278" }`). To check a whole portfolio, run one search per counterparty (or automate via the API).

### Input options

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchMode` | string | No | `entity` | Search type (see modes below) |
| `entityName` | string | No | - | Company name, business name, or advisor surname |
| `identifier` | string | No | - | KRS, NIP, REGON, PESEL, or licence number |
| `caseSignature` | string | No | - | Case signature (CODE/REPERTORY/NUMBER/YEAR) |
| `proceedingId` | string | No | - | Proceeding UUID (from a prior search result). Used by `proceedingDetails`, and optionally by `bankruptcyEstate` to read one specific estate. |
| `estateType` | string | No | - | Deprecated - ignored. The register keys its estate inventory by proceeding, not by asset type, so `bankruptcyEstate` returns every asset class. |
| `advisorCity` | string | No | - | City filter for `advisors` mode |
| `dateFrom` / `dateTo` | string | No | - | Date range (YYYY-MM-DD), for announcements |
| `maxResults` | integer | No | 100 | Max results (0 = unlimited) |

#### Nine search modes

| Mode | Searches for | Required input |
|------|-------------|----------------|
| `entity` | Companies/organizations with proceedings | `entityName` and/or `identifier` (KRS/NIP/REGON) |
| `person` | Natural persons with proceedings | `identifier` (PESEL or NIP) |
| `soleTrader` | Sole traders (JDG) with proceedings | `entityName` and/or `identifier` |
| `signature` | Proceedings by court case signature | `caseSignature` |
| `proceedingDetails` | Full details of one proceeding | `proceedingId` (UUID from a prior search) |
| `announcements` | Court announcements and notices | `entityName`/`identifier` + `dateFrom`/`dateTo`, or `caseSignature` |
| `shareholders` | Partners in personal companies | `identifier` (KRS/NIP) or `entityName` |
| `bankruptcyEstate` | The bankruptcy-estate inventory (spis masy upadlosci) | `entityName` and/or `identifier` (the proceedings are resolved for you), or a `proceedingId` |
| `advisors` | Licensed restructuring advisors | `entityName` (surname), `identifier` (licence #), or `advisorCity` |

#### Announcements (`announcements`)

Every insolvency and restructuring notice the register publishes, searchable by date range,
entity or case signature. One row per announcement:

| Field | Description |
|-------|-------------|
| `announcementNumber` | The publication number (e.g. `20260831/00830`) |
| `publicationDate` / `decisionDate` | When the notice was published, and when the court issued the underlying order |
| `category` | What the announcement **is** - the register's own subcategory text |
| `proceedingType` | `bankruptcy`, `restructuring` or `enforcement`, decoded from the register's case-type code |
| `entityName` | The company, or the person's full name - the register splits natural persons into `firstName` / `lastName` and leaves the company field blank for them |
| `caseSignature` | Court case signature (e.g. `BI1B/GU/689/2026`) |
| `court` / `courtDivision` | The court that issued the order, and the division within it |
| `announcementId` / `documentId` | The register's UUID for the announcement, and for the underlying court document |

**On filtering by proceeding type:** use `proceedingType`, not the `category` text. The
subcategory wording is written for the bankruptcy path and reads "...wniosku o ogloszenie
upadlosci" even on restructuring cases - only the case-type code separates them.

The announcement's **full text** is not part of the search response; `documentId` identifies the
court document that carries it.

#### The bankruptcy-estate inventory (`bankruptcyEstate`)

Give it a company (or a `proceedingId`) and it finds that company's proceedings and reads the
estate inventory the trustee filed for each - **every asset class**, with the trustee's own valuations:

| Field | Description |
|-------|-------------|
| `assetCategory` | `nieruchomosc` (real estate), `ruchomosc` (movables), `srodekPieniezny` (cash), `prawoMajatkowe` (property rights), `naleznosc` (receivables) |
| `assetName` | The asset as the trustee described it (e.g. "Akcje FaktorOne S.A.", "Notebook Lenovo V15") |
| `assetType` | The trustee's own classification (e.g. "Sprzet komputerowy") |
| `quantity` / `remaining` | Quantity listed, and how much is left |
| `estimatedValue` / `currency` | The trustee's estimated valuation |
| `status` | Whether the entry is current |
| `assetCounts` | The register's own count per inventory list |
| `estateInventoryPublished` | `false` when the register reports **zero** assets for that proceeding |
| `proceedingId` / `caseSignature` / `entityName` | Which proceeding the asset belongs to |

`estateInventoryPublished: false` is a **verified** zero - it means the register itself reports no
assets for that proceeding, not that a request failed. Many proceedings have no published inventory.

### What you can do with it

- **Credit-risk checks** - before extending a facility or terms, confirm a customer, supplier, or partner has no bankruptcy or restructuring proceeding.
- **Debt collection** - verify a debtor's proceeding status before pursuing a claim, and pull the case signature and court for your file.
- **KYC / AML screening** - screen counterparties against the debtor register as part of onboarding.
- **M\&A due diligence** - check an acquisition target and its shareholders for insolvency proceedings.
- **Ongoing monitoring** - schedule a recurring batch over your portfolio and catch new filings early.
- **Distressed-asset sourcing** - use `bankruptcyEstate` mode to find assets for sale from bankruptcy estates.

### Run it from code

```bash
## cURL - start a run and get the dataset back
curl -X POST "https://api.apify.com/v2/acts/regdata~krz-debtor-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "searchMode": "entity", "entityName": "Getin" }'
```

```javascript
// Node.js - apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('regdata/krz-debtor-scraper').call({ searchMode: 'entity', entityName: 'Getin' });
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/krz-debtor-scraper").call(run_input={"searchMode": "entity", "entityName": "Getin"})
items = client.dataset(run["defaultDatasetId"]).list_items().items
```

### Integrations

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

### FAQ

**Is it legal to scrape KRZ?** Yes. KRZ is an official, public register published by Poland's Ministry of Justice for exactly this kind of debtor verification. Extraction of public data is permitted; you remain responsible for lawful, GDPR-compliant use of any personal data downstream.

**Do I need a KRZ account or an API key?** No. No login, no key, nothing to configure - the register is public and the actor handles retrieval. You only need an Apify account to run it.

**What does an empty result mean?** That the entity has no proceeding in KRZ - a clean, meaningful answer for a credit or KYC check, not a failure. You are still charged the per-search fee (the search ran) but nothing per result.

**How is this different from MGBI or iMSiG?** Same underlying register, but pay-per-use instead of a $200-500/month subscription, and returned as structured JSON you can pipe straight into your systems.

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

**How do I get the full detail of a proceeding?** An `entity` or `person` search returns each match with a `proceedingId`. Pass that id back with `searchMode: "proceedingDetails"` to get the type, status, court, and role.

### Limitations

- A single search returns up to **250 results** (the register's own per-query cap). Narrow the query or use identifiers for exact matches. When the register caps a search it says so, and the run tells you the list is **incomplete** rather than presenting it as the whole answer.
- Coverage starts **1 December 2021** (the register's own start date).
- Some proceeding types return slightly different field structures.
- Not every bankruptcy has a published estate inventory. Where the register reports none, you get `estateInventoryPublished: false` with its own zero counts - a verified "nothing here", not a failed lookup.
- If the register is down or answers with something other than data, the run **fails** rather than returning an empty result set. An outage will never be reported to you as "no proceedings found".

### 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)](https://apify.com/regdata/krs-fullnames-scraper) · **KRZ (this actor)** · [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 umozliwia automatyczne **sprawdzenie dluznika** w **Krajowym Rejestrze Zadluzonych** (KRZ) - oficjalnym rejestrze prowadzonym przez Ministerstwo Sprawiedliwosci. KRZ nie udostepnia publicznego API, a dotychczasowa alternatywa to reczne wyszukiwania na portalu krz.ms.gov.pl lub platne subskrypcje (MGBI, iMSiG). Ten aktor to **alternatywa dla MGBI** - placisz wylacznie za faktyczne uzycie, bez abonamentu.

#### Dla kogo?

Dla **firm windykacyjnych** weryfikujacych kontrahenta przed egzekucja, **dzialow ryzyka kredytowego** monitorujacych wyplacalnosc klientow i dostawcow, **kancelarii prawnych** obslugujacych upadlosci i restrukturyzacje oraz **dzialow compliance** realizujacych KYC/AML.

#### Co mozna sprawdzic?

Pelne przeszukiwanie KRZ: podmioty i osoby fizyczne z postepowaniami upadlosciowymi lub restrukturyzacyjnymi, tablica obwieszczen, masa upadlosci, doradcy restrukturyzacyjni oraz wspolnicy spolek osobowych. Wystarczy podac nazwe firmy, NIP, KRS, REGON lub sygnature sprawy - wyniki jako ustrukturyzowany JSON. Placisz tylko za wyszukiwania i wyniki; brak wynikow to nadal wazna odpowiedz.

***

### Krajowy Rejestr Zadluzonych - wyszukiwanie dluznikow online

Przeszukiwanie Krajowego Rejestru Zadluzonych (KRZ) pod katem upadlosci, restrukturyzacji i postepowan egzekucyjnych. 9 trybow wyszukiwania. Programistyczny dostep do rzadowego rejestru bez publicznego API. Alternatywa dla MGBI bez abonamentu. Niezbedne narzedzie KYC/AML do weryfikacji kontrahentow.

# Actor input Schema

## `searchMode` (type: `string`):

What to search for. 'entity' = companies by name/KRS/NIP. 'person' = natural persons by PESEL/NIP. 'soleTrader' = sole traders by name/identifier. 'signature' = by court case signature. 'announcements' = court announcements. 'shareholders' = partners in personal companies. 'bankruptcyEstate' = assets for sale from bankruptcy estates. 'advisors' = licensed restructuring advisors. 'proceedingDetails' = deep-dive into a specific proceeding.

## `entityName` (type: `string`):

Company name, business name, or advisor surname (partial match). Used for entity, soleTrader, announcements, shareholders, bankruptcyEstate, and advisors modes.

## `identifier` (type: `string`):

Entity identifier: KRS (10 digits), NIP, REGON. For persons: PESEL or NIP. For advisors: license number.

## `caseSignature` (type: `string`):

Court case signature in format: CODE/REPERTORY/NUMBER/YEAR (e.g., WA1M/GU/223/2021). Used for signature and announcements modes.

## `proceedingId` (type: `string`):

Proceeding UUID (postepowanieId), as returned in the `proceedingId` field of an entity/person search. Used by searchMode 'proceedingDetails', and optionally by 'bankruptcyEstate' to read one specific estate.

## `estateType` (type: `string`):

Deprecated - ignored. The registry keys its estate inventory by PROCEEDING, not by asset type; bankruptcyEstate now returns every asset class (real estate, movables, cash, property rights, receivables).

## `advisorCity` (type: `string`):

Filter restructuring advisors by city. Only used in advisors mode.

## `dateFrom` (type: `string`):

Start date for announcement search (YYYY-MM-DD). Only used in announcements mode.

## `dateTo` (type: `string`):

End date for announcement search (YYYY-MM-DD). Only used in announcements mode.

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

Maximum number of results to return. Default: 100. Set to 0 for unlimited.

## `disableSessionCache` (type: `boolean`):

Advanced. By default the actor caches the KRZ guest token between your own runs (the token lives ~10h) so repeated/monitoring runs skip the slow browser bootstrap and run faster. The cache is private to your account and self-healing (a stale token is detected and refreshed automatically). Turn this on only to force a fresh session every run for debugging.

## Actor input object example

```json
{
  "searchMode": "entity",
  "entityName": "Getin",
  "estateType": "",
  "maxResults": 100,
  "disableSessionCache": false
}
```

# Actor output Schema

## `searchResults` (type: `string`):

Debtor registry results with entity name, NIP, KRS, case signature, proceeding type, court, and status. Varies by search mode.

# 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 = {
    "entityName": "Getin"
};

// Run the Actor and wait for it to finish
const run = await client.actor("regdata/krz-debtor-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 = { "entityName": "Getin" }

# Run the Actor and wait for it to finish
run = client.actor("regdata/krz-debtor-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 '{
  "entityName": "Getin"
}' |
apify call regdata/krz-debtor-scraper --silent --output-dataset

```

## MCP server setup

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