# Poland KRS New Companies & Register Changes Feed (daily) (`moment-data/poland-krs-company-changes-feed`) Actor

New Polish company registrations plus KRS register events (liquidation, bankruptcy, restructuring, dissolution, deletion, merger, name/capital/address changes) from the official KRS Open API. NIP, REGON, PKD, share capital, city. Filters and 'new since last run' mode.

- **URL**: https://apify.com/moment-data/poland-krs-company-changes-feed.md
- **Developed by:** [Luke Miller](https://apify.com/moment-data) (community)
- **Features:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Poland KRS New Companies & Register Changes Feed

Daily feed of **newly registered Polish companies** and **KRS register events**: liquidation, bankruptcy, restructuring, dissolution, deletion, merger, suspension, and changes to name, capital, seat, shareholders or management. Data comes from the official **KRS Open API** of the Polish Ministry of Justice (Krajowy Rejestr Sądowy). Each record carries NIP, REGON, PKD codes, share capital, voivodeship and city, plus the court entries behind the event.

Run it on a schedule with **"New since last run"** mode and you get only events you have not seen before. That makes it a ready-made trigger for your CRM, credit-risk or KYC workflow.

### Who it's for

- **B2B sales and lead generation.** Reach new sp. z o.o. companies in their first week: accounting firms, banks, insurers, software vendors, office and fit-out suppliers, recruiters.
- **Credit risk, debt collection and trade credit insurance.** Get alerts when a counterparty enters liquidation, bankruptcy or restructuring, is dissolved or deleted, or has a debt notice entered in section 4.
- **KYC / AML and vendor monitoring.** Track name, legal form, seat and capital changes of companies you work with.
- **Market research.** Measure company formation by voivodeship, city or PKD sector.

### What you get

- `eventType` (primary) and `eventTypes` (all events on the bulletin day). Possible values: `registration`, `deletion`, `bankruptcy`, `restructuring`, `liquidation`, `dissolution`, `merger`, `suspension`, `debtNotice`, `nameChange`, `legalFormChange`, `capitalChange`, `addressChange`, `shareholderChange`, `managementChange`, `activityChange`, `financialStatement`, `otherChange`.
- Company identifiers: `krs`, `nip`, `regon`, `name`, `previousName`, `legalForm`, `status` (`active`, `inLiquidation`, `bankruptcy`, `restructuring`, `dissolved`, `suspended`, `deleted`).
- `entries`: the register entries on the day (entry number, date, description, registry court).
- Location: `voivodeship`, `county`, `municipality`, `city`, `postalCode`. Business details: `website`, `shareCapital`, `pkdMain` with description, and `pkdOther`.
- `proceeding` (court, case number, kind) for bankruptcy and restructuring, `dissolutionBasis`, `suspendedSince`, `registrationDate`, and a direct `apiUrl` to the official extract.

**Privacy by design:** the feed is entity-level only. It never outputs board members, shareholders, liquidators, PESEL numbers, e-mails or e-delivery addresses, street addresses or free-text resolutions. Partnerships (sp.j., sp.k., sp.p., S.K.A.), whose names must contain a partner's surname, are excluded unless you turn on `includePartnerships`.

### Quick start

Click **Start** with the default input `{}`. You get about 30 of the newest company registrations from the latest KRS bulletin in about 10 seconds.

Recipes:

- **Daily new IT companies in Warsaw region:** `{"mode":"sinceLastRun","voivodeships":["Mazowieckie"],"pkdPrefixes":["62","63"],"maxItems":200,"stateKey":"it-waw"}`
- **Distress alerts (liquidation, bankruptcy, restructuring, deletion):** `{"eventTypes":["bankruptcy","restructuring","liquidation","dissolution","deletion"],"maxScan":3000,"maxItems":500}`
- **Well-capitalised new companies:** `{"minShareCapital":100000,"daysBack":5,"maxItems":100}`
- **New foundations and associations:** `{"registers":["S"],"legalForms":["foundation","association"]}`

Schedule it daily (for example at 07:00 Warsaw time) in sinceLastRun mode and connect it to a webhook, Google Sheets, Make or Zapier.

### Input

| Field | Default | Notes |
|---|---|---|
| `mode` | `window` | `window` (stateless) or `sinceLastRun` (dedupes across runs per `stateKey`) |
| `eventTypes` | `["registration"]` | see list above |
| `date` / `daysBack` / `autoWiden` | yesterday (Warsaw) / 1 / true | bulletin day(s) to read |
| `registers` | `["P"]` | P = entrepreneurs, S = associations & foundations |
| `legalForms`, `voivodeships`, `cities`, `pkdPrefixes`, `nameKeywords`, `minShareCapital` | none | filters |
| `includePartnerships` | false | partnerships carry personal surnames |
| `maxItems` | 30 | up to 2,000 |
| `maxScan` | 300 | entities read per run. A weekday bulletin lists 3,000-5,000; distress events are about 2-5% of them |
| `concurrency` | 2 | 1-4, polite to the public API |

### Output example

```json
{
  "eventType": "registration",
  "krs": "0001276475",
  "name": "MERIDIS GROUP SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
  "legalForm": "SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
  "nip": "7011338373",
  "status": "active",
  "eventDate": "2026-10-31",
  "registrationDate": "2026-10-31",
  "voivodeship": "Mazowieckie",
  "city": "Warszawa",
  "postalCode": "02-308",
  "shareCapital": 5000,
  "shareCapitalCurrency": "PLN",
  "pkdMain": "71.12.B",
  "pkdMainDescription": "Pozostała działalność w zakresie inżynierii i związane z nią doradztwo techniczne",
  "entries": [{ "entryNo": 1, "date": "2026-10-31", "description": "REJESTRACJA W KRAJOWYM REJESTRZE SĄDOWYM", "court": "SĄD REJONOWY DLA M.ST. WARSZAWY W WARSZAWIE, XII WYDZIAŁ GOSPODARCZY KRAJOWEGO REJESTRU SĄDOWEGO", "final": true }],
  "apiUrl": "https://api-krs.ms.gov.pl/api/krs/OdpisAktualny/0001276475?rejestr=P&format=json"
}
```

See `sample-output.json` for full records.

### Data source and reuse

- Source: Krajowy Rejestr Sądowy, Ministry of Justice of the Republic of Poland, KRS Open API (`api-krs.ms.gov.pl`). It is public, keyless, official open data. Each record states the source and `retrievedAt`, and notes that the data was processed by this Actor, as the Polish open-data reuse conditions require.
- The NIP/REGON shown are the values recorded in KRS. A freshly registered company may have REGON still empty.
- The daily bulletin lists entities with any entry that day, including automatic system entries such as financial-statement filings. The Actor reads each entity's full extract and classifies only the entries made on the bulletin day.
- Polite access: 1-4 parallel requests, retries with backoff, and a descriptive User-Agent.

### Pricing

Pay per event. You pay only for records delivered.

| Event | Price | Charged |
|---|---|---|
| Actor start | $0.005 | once per run |
| Company record | $0.003 | per company event delivered to the dataset |

No separate platform-usage charges: compute is included in the event prices.

Example: a daily sinceLastRun schedule delivering 50 new companies costs about $0.155 per day (about $4.65 per month). A one-off pull of 1,000 registrations costs about $3.

### FAQ

**How fresh is the data?** The KRS bulletin for a day is complete the next morning, and the default reads yesterday plus earlier days as needed. Online S24 registrations also appear at weekends.

**Why is a distress scan slower?** Distress events are spread across thousands of entities with entries each day, and each needs one API call. Raise `maxScan` (about 4-8 entities per second), or schedule daily with sinceLastRun.

**Does it include people?** No. The feed is company-level data only.

### Polski skrót

Codzienny feed nowych spółek z KRS (rejestracje) oraz zdarzeń rejestrowych: likwidacja, upadłość, restrukturyzacja, rozwiązanie, wykreślenie, połączenie, zmiany nazwy, kapitału i siedziby. Dane z oficjalnego API KRS Ministerstwa Sprawiedliwości. Rekordy zawierają NIP, REGON, PKD, kapitał i miasto, bez danych osobowych.

# Actor input Schema

## `mode` (type: `string`):

window (default): events on the latest bulletin day(s), no saved state. sinceLastRun: only events not delivered before for this State key, resuming from the last bulletin day; use for daily schedules.

## `eventTypes` (type: `array`):

registration = newly registered entities (fast). Other types scan the KRS daily change bulletin (one API call per entity, see Max entities to scan).

## `date` (type: `string`):

Optional YYYY-MM-DD. Default: yesterday (Warsaw time), walking back over empty days.

## `daysBack` (type: `integer`):

Number of daily bulletins to read, newest first.

## `autoWiden` (type: `boolean`):

Window mode without a fixed date: keep reading earlier days (up to 5) until Max items is reached.

## `registers` (type: `array`):

P = register of entrepreneurs (companies, cooperatives, branches). S = associations, foundations and public health units.

## `legalForms` (type: `array`):

Aliases: sp. z o.o., S.A., P.S.A., cooperative, foundation, association, branch (sp.j., sp.k., sp.p., S.K.A. need Include partnerships). Or any text contained in the Polish legal form.

## `includePartnerships` (type: `boolean`):

Partnerships (spółka jawna, partnerska, komandytowa, komandytowo-akcyjna) must carry a partner's surname in their name, so they are excluded by default.

## `voivodeships` (type: `array`):

e.g. Mazowieckie, Małopolskie, Śląskie (diacritics optional).

## `cities` (type: `array`):

Seat city, e.g. Warszawa, Kraków, Wrocław, Gdańsk.

## `pkdPrefixes` (type: `array`):

Polish activity codes (main or other), e.g. 62 (IT), 70.22, 41 (construction), 68 (real estate).

## `nameKeywords` (type: `array`):

Any of these words in the company name, e.g. SOLAR, LOGISTICS, MED.

## `minShareCapital` (type: `integer`):

Only companies with at least this registered share capital.

## `maxItems` (type: `integer`):

Maximum records per run.

## `maxScan` (type: `integer`):

Cap on KRS extracts read per run (one API call each). A weekday bulletin lists ~3,000-5,000 entities; raise this for complete distress/change coverage (about 4-8 entities per second).

## `concurrency` (type: `integer`):

Polite parallelism towards the public API.

## `stateKey` (type: `string`):

Separate saved state per saved search in sinceLastRun mode.

## Actor input object example

```json
{
  "mode": "window",
  "eventTypes": [
    "registration"
  ],
  "daysBack": 1,
  "autoWiden": true,
  "registers": [
    "P"
  ],
  "legalForms": [],
  "includePartnerships": false,
  "voivodeships": [],
  "cities": [],
  "pkdPrefixes": [],
  "nameKeywords": [],
  "maxItems": 30,
  "maxScan": 300,
  "concurrency": 2,
  "stateKey": "default"
}
```

# Actor output Schema

## `companies` (type: `string`):

One record per KRS entity and event.

## `summary` (type: `string`):

Bulletin days scanned, filters dropped, API traffic.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("moment-data/poland-krs-company-changes-feed").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("moment-data/poland-krs-company-changes-feed").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 '{}' |
apify call moment-data/poland-krs-company-changes-feed --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,moment-data/poland-krs-company-changes-feed"
        }
    }
}
```

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/rWE0CnuybRy9nhnzD/builds/wr9fUwB40EXxArmXb/openapi.json
