# KRZ Scraper — Poland Debtor & Bankruptcy Register (`studio-amba/krz-scraper`) Actor

Search Poland's official Krajowy Rejestr Zadluznych (National Debtors Register) for bankruptcy, restructuring, and debt-enforcement proceedings against companies. Look up by company name, KRS, or NIP and get court/authority, case number, proceeding type, status, and dates. No login required.

- **URL**: https://apify.com/studio-amba/krz-scraper.md
- **Developed by:** [Studio Amba](https://apify.com/studio-amba) (community)
- **Categories:** Business, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 result scrapeds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## KRZ Scraper — Poland National Debtors Register (Bankruptcy & Restructuring)

Search [KRZ (Krajowy Rejestr Zadłużonych)](https://krz.ms.gov.pl/), Poland's official National Debtors
Register run by the Ministry of Justice. Look up a company by name, KRS (court register number), or NIP
(tax ID) and get every bankruptcy, restructuring, debt-enforcement, and business-prohibition proceeding
on file against it — the court or bailiff handling it, the official case number, the proceeding type, its
current status, and its start/end dates. No login, no account, no API key — the actor uses the same
public "guest" search the Ministry of Justice exposes on the portal itself.

KRZ is the authoritative source for whether a Polish company is or has been in financial distress. This
actor turns a company name or identifier into a clean, structured list of proceeding records you can drop
into a KYC/AML due-diligence workflow, a counterparty risk check, or a credit-control process — without
clicking through a government portal by hand.

### How to scrape KRZ data

This actor talks to the same backend API the public KRZ portal itself uses. It returns one structured
record per proceeding found (a single company can have several — a bankruptcy filing, a related
enforcement case, a restructuring proceeding), with the same information the portal shows — just
structured and bulk-exportable via the Apify API, CSV/Excel/JSON export, or scheduled runs.

#### Search by company name

Enter a company name (full or partial, Polish spelling) in **Company Name**, e.g. `Getin` or `Kowalski
Budownictwo`. KRZ matches on the registered trade/legal name.

#### Search by KRS or NIP

Set **KRS or NIP Identifier** to an exact KRS (Polish court register number, e.g. `0000304735`) or NIP
(tax ID, e.g. `1080004850`) to look up one specific company directly. This also avoids KRZ's 550-result
cap on broad name searches.

#### Result limit

**Max Results** caps how many proceeding records the actor pushes per run (default 50). Since a company
can have multiple proceedings, this is a cap on rows, not on companies — a narrow search that matches
one company with 8 proceedings on file can still return up to 8 rows.

### What data does KRZ Scraper extract?

| Field | Type | Description |
|-------|------|--------------|
| **companyName** | String | Registered company name |
| **krs** | String | KRS — National Court Register number |
| **nip** | String | NIP — Polish tax identification number |
| **legalForm** | String | Legal form (e.g. "Spółka z ograniczoną odpowiedzialnością", "Spółka akcyjna") |
| **city** | String | Registered seat / city |
| **proceedingType** | String | Proceeding type, e.g. "postępowanie o ogłoszenie upadłości przedsiębiorcy" (bankruptcy filing), "umorzone postępowanie egzekucyjne" (discontinued enforcement) |
| **proceedingTypeCode** | String | KRZ's internal short code for the proceeding type (e.g. `GU-pu`, `PE-upe`) |
| **caseNumber** | String | Official court/authority case reference (sygnatura akt) |
| **authority** | String | Court, bailiff (komornik), or tax office handling the proceeding |
| **status** | String | Current status, e.g. "w toku" (ongoing) or "zakończone" (closed) |
| **startDate** | String | Proceeding start date |
| **endDate** | String | Proceeding end date (empty if still ongoing) |
| **folderCategory** | String | KRZ's case-folder category (e.g. "Postępowania upadłościowe lub wtórne upadłościowe") |
| **proceedingId** | String | KRZ's stable external UUID for the proceeding |
| **url** | String | Link to the public KRZ search tool (KRZ's portal is a hash-routed app with no stable per-record permalink — see Limitations) |
| **scrapedAt** | String | ISO timestamp of extraction |

### Input parameters

| Parameter | Type | Default | Description |
|-----------|------|---------|--------------|
| **Company Name** | String | `Getin` | Search by company name (full or partial) |
| **KRS or NIP Identifier** | String | — | Search by an exact KRS or NIP instead of/alongside a name |
| **Max Results** | Integer | `50` | Maximum proceeding records to return (1–500) |
| **Proxy Configuration** | Object | Polish residential proxy | Proxy settings — Poland-only by default (required, see Limitations) |

### Example output

```json
{
    "companyName": "Getin Noble Bank S.A.",
    "krs": "0000304735",
    "nip": "1080004850",
    "legalForm": "Spółka akcyjna",
    "city": "Warszawa",
    "proceedingType": "postępowanie upadłościowe dla przedsiębiorcy",
    "proceedingTypeCode": "GUp-p",
    "caseNumber": "WA1M/GUp/44/2023",
    "authority": "",
    "status": "w toku",
    "startDate": "2023-07-20",
    "endDate": "",
    "folderCategory": "Postępowania upadłościowe lub wtórne upadłościowe",
    "proceedingId": "f451214a-6474-44ec-b35e-094fd6e0b635",
    "url": "https://krz.ms.gov.pl/#!/application/KRZPortalPUB/1.9/KrzRejPubGui.WyszukiwaniePodmiotow?params=JTdCJTdE&itemId=item-2&seq=0",
    "scrapedAt": "2026-08-02T09:27:42.187Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### Common use cases

- Counterparty due-diligence — check whether a prospective supplier, customer, or partner has an active
  or historical bankruptcy, restructuring, or enforcement proceeding before signing a contract.
- KYC / AML pre-checks — pull official court case numbers and proceeding status for a Polish company in
  one pass instead of searching the government portal by hand.
- Credit control — monitor existing customers for newly opened enforcement or bankruptcy proceedings.
- Portfolio screening — batch-check a list of Polish company names or KRS numbers for debtor-register
  hits.

### Cost estimate

Each run makes one headful browser page-load to complete KRZ's guest login handshake (needed once per
run, not once per company), then plain HTTP API calls for the search and each company's proceeding
detail — no browser rendering per result. A run matching 6 companies with 20 total proceedings typically
makes 1 browser load + 7 API calls.

### Limitations

- **Poland-only.** KRZ is geo-fenced — it blocks non-Polish IPs outright. The actor forces a Polish
  residential proxy regardless of what proxy settings are supplied; there is no way around this
  requirement.
- **550-result cap on broad name searches.** A very generic name (e.g. a 3-letter fragment) can match
  over a thousand companies, but KRZ itself only returns the first 550. Use a fuller name or an exact
  KRS/NIP for exhaustive coverage of a specific target.
- **No stable per-record deep link.** KRZ's public portal is a hash-routed single-page app with no
  guessable permalink per company or proceeding — the `url` field points to the public search tool
  itself, not a specific record.
- **Company-entity scope only.** This actor searches KRZ's "non-natural-person entity" register (companies,
  associations, foundations) — it deliberately does not cover the sibling registers for sole traders'
  personal proceedings or private individuals' consumer bankruptcies, which involve personal data of
  natural persons.
- Some proceedings do not have an `authority` on file (e.g. certain court-filed bankruptcy openings list
  the court elsewhere in the case folder rather than in this field) — this is a genuine gap in KRZ's own
  data, not a scraping error.

### Related scrapers

- **[German Insolvency Announcements Scraper](https://apify.com/studio-amba/insolvenzbekanntmachungen-scraper)** — Germany's official insolvency-proceedings gazette.
- **[Belgisch Staatsblad Scraper](https://apify.com/studio-amba/staatsblad-scraper)** — Belgian official gazette, company registrations and legal notices.
- **[North Data Scraper](https://apify.com/studio-amba/northdata-scraper)** — European company data across 16 countries.
- **[eInforma Scraper](https://apify.com/studio-amba/einforma-scraper)** — Spanish company register data.
- **[Registro Imprese Scraper](https://apify.com/studio-amba/registro-imprese-scraper)** — Italian company register data.

### Data source and legality

This actor reads publicly available proceeding data from KRZ, the Polish Ministry of Justice's own
public debtors register — the same "guest" search anyone can use on the portal without an account. It
does not access any login-protected area. Use the data in line with KRZ's terms and applicable
data-protection rules.

# Actor input Schema

## `searchQuery` (type: `string`):

Search by company name (full or partial, Polish spelling). Example: 'Getin', 'Kowalski Budownictwo'. Leave empty if searching by KRS/NIP identifier instead.

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

Optional. Search by an exact KRS (Polish court register number) or NIP (tax ID). Example: '0000304735' or '1080004850'. Narrows results and avoids the 550-result cap.

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

Maximum number of proceeding records to return (one row per proceeding — a single company can have several).

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

krz.ms.gov.pl is geo-fenced to Poland — non-Polish IPs are blocked outright. A Polish residential proxy is required and used by default.

## Actor input object example

```json
{
  "searchQuery": "Getin",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "PL"
  }
}
```

# 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 = {
    "searchQuery": "Getin",
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "PL"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("studio-amba/krz-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 = {
    "searchQuery": "Getin",
    "maxResults": 50,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "PL",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("studio-amba/krz-scraper").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 '{
  "searchQuery": "Getin",
  "maxResults": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "PL"
  }
}' |
apify call studio-amba/krz-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=studio-amba/krz-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/MSFgGGwGht5OdhOaK/builds/Uzd8JuO2v9c1MKgSd/openapi.json
