# New Polish Companies Leads from KRS (Daily) (`donzely/krs-new-companies-leads`) Actor

Daily list of newly registered companies in Poland from the official KRS register: name, NIP, REGON, address, email, website, PKD codes, share capital, board and shareholders. Filter by voivodeship, city, PKD and legal form. Fresh B2B leads every day.

- **URL**: https://apify.com/donzely/krs-new-companies-leads.md
- **Developed by:** [Grzegorz Pryjma](https://apify.com/donzely) (community)
- **Categories:** Lead generation, Automation
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$2.90 / 1,000 companies

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

## New Polish Companies Leads from KRS (Daily)

**Get every company registered in Poland yesterday, today or in any date range, straight from the official KRS register.** Each lead comes with name, NIP, REGON, full address, email and website (when published), PKD activity codes, share capital, management board, shareholders and representation rules. Filter by voivodeship, city, PKD code and legal form, and schedule the Actor daily to get fresh B2B leads every morning.

🇵🇱 *Nowo zarejestrowane firmy z KRS codziennie: nazwa, NIP, REGON, adres, e-mail, strona www, PKD, kapitał, zarząd i wspólnicy. Filtry: województwo, miasto, PKD, forma prawna.*

### Why new companies?

A company registered this week needs an accountant, a bank account, insurance, a website, an office, software, a leasing deal and suppliers. Reaching it first is the best moment to sell. Around **300–500 new companies** are registered in KRS on a typical working day.

### Who uses it

- Accounting offices and payroll firms looking for new clients
- Banks, leasing, insurance and fintech sales teams
- Web agencies, software houses, marketing and office-space providers
- B2B data and CRM enrichment, market research, competitor monitoring
- Due diligence: monitor all register changes (board, address, capital) in a date range

### Data source

The official public **KRS API of the Polish Ministry of Justice** (`api-krs.ms.gov.pl`): the daily bulletin of register entries plus the current extract (odpis aktualny) of each company. No scraping of websites, no CAPTCHAs, no login. Data is as fresh as the register itself.

### Input

| Field | Description |
|---|---|
| `lastDays` | Scan the last N days, including today (default 5) |
| `dateFrom` / `dateTo` | Explicit registration date range instead of `lastDays` |
| `onlyNewRegistrations` | `true`: only companies registered in the range. `false`: every company with any register change in the range |
| `voivodeships` | e.g. MAZOWIECKIE, MAŁOPOLSKIE |
| `cities` | e.g. Warszawa, Kraków |
| `pkdPrefixes` | e.g. `62` (IT), `43.21` (electrical installation), `68` (real estate) |
| `legalForms` | Sp. z o.o., PSA, S.A., jawna, komandytowa, fundacja, stowarzyszenie... |
| `requireEmail` / `requireWebsite` | Keep only companies with an email / website in KRS |
| `maxItems` | Maximum number of companies |

Example: new IT companies in Mazowieckie from the last 7 days.

```json
{ "lastDays": 7, "voivodeships": ["MAZOWIECKIE"], "pkdPrefixes": ["62"], "legalForms": ["SP_ZOO"], "maxItems": 500 }
```

### Output

```json
{
  "krs": "0001277275",
  "nip": "1182339146",
  "regon": "546107301",
  "name": "KTC SOFTWARE SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
  "legalForm": "SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
  "registrationDate": "2026-11-04",
  "fullAddress": "UL. MICHAŁA WOŁODYJOWSKIEGO 21, 05-082 STARE BABICE",
  "voivodeship": "MAZOWIECKIE",
  "city": "STARE BABICE",
  "email": "biuro@example.pl",
  "website": "www.example.pl",
  "mainPkd": { "code": "58.29.Z", "description": "DZIAŁALNOŚĆ WYDAWNICZA W ZAKRESIE POZOSTAŁEGO OPROGRAMOWANIA" },
  "pkdCodes": ["58.29.Z", "62.10.B", "62.20.B"],
  "shareCapital": 5000,
  "representationBody": "ZARZĄD",
  "representationMethod": "W PRZYPADKU ZARZĄDU JEDNOOSOBOWEGO ...",
  "boardMembers": [{ "name": "K**** T***** C******", "function": "PREZES ZARZĄDU" }],
  "shareholders": [{ "name": "K**** T***** C******", "shares": "100 UDZIAŁÓW O ŁĄCZNEJ WARTOŚCI 5000 PLN" }],
  "isNewRegistration": true
}
```

The **New companies** table view shows the key fields. Export to Excel, CSV or JSON, or push to your CRM via API, Make, Zapier or n8n.

### Schedule it daily

Create a schedule in Apify Console with `lastDays: 1` and run it every evening. You get only that day's new companies, and you pay only for what you receive.

### Pricing

Pay per company: you pay only for companies in your results. There is no start fee, and filtering happens before charging, so filtered-out companies are free.

### Limits and GDPR

- The public KRS API **masks personal names** of board members and shareholders (e.g. `K**** T*****`). Functions, number of board members, share structure and representation rules are complete. Company data (name, NIP, address, email, website, PKD, capital) is not masked.
- Email and website are present only if the company published them in KRS (roughly 15–25% of new companies).
- REGON is sometimes assigned a few days after registration and may be empty for the newest companies.
- KRS covers companies, foundations, associations and cooperatives. Sole proprietorships (JDG) are in CEIDG, not KRS.
- **GDPR:** the data comes from a public register. If you use it for direct marketing, you are the data controller and you are responsible for a lawful basis, informing the recipients and respecting objections (GDPR, Polish electronic communications law).

### FAQ

**How fresh is the data?** Entries appear in the KRS bulletin on the day they are made by the court. Running with `lastDays: 1` in the evening gives that day's registrations.

**Can I get changes, not only new companies?** Yes. Set `onlyNewRegistrations` to `false` to get every company with any register entry in the range, e.g. a new board member, a new address or a capital increase.

# Actor input Schema

## `lastDays` (type: `integer`):

Scan register entries from the last N calendar days, including today. Ignored when 'Date from' is set.

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

Start of the registration date range (YYYY-MM-DD).

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

End of the range (YYYY-MM-DD). Defaults to today.

## `onlyNewRegistrations` (type: `boolean`):

Output only companies registered in the date range. Turn off to get every company with any register change (address, board, capital...) in the range.

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

Keep only companies seated in these voivodeships.

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

Keep only companies in these cities, e.g. Warszawa, Kraków.

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

Keep companies with any PKD code starting with these prefixes, e.g. "62" (IT), "43.21" (electrical installation), "68" (real estate). New KRS entries use PKD 2025 codes (e.g. software development is 62.10.B). A 2-digit prefix such as "62" matches the whole division. Dots are optional.

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

Keep only these legal forms.

## `requireEmail` (type: `boolean`):

Keep only companies that published an email address in KRS.

## `requireWebsite` (type: `boolean`):

Keep only companies that published a website in KRS.

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

Maximum number of companies to output.

## `maxConcurrency` (type: `integer`):

Parallel requests to the KRS API.

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

Not needed for the official API. Optional.

## Actor input object example

```json
{
  "lastDays": 5,
  "onlyNewRegistrations": true,
  "requireEmail": false,
  "requireWebsite": false,
  "maxItems": 50,
  "maxConcurrency": 8,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

## `results` (type: `string`):

No description

# 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 = {
    "lastDays": 5,
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("donzely/krs-new-companies-leads").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 = {
    "lastDays": 5,
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("donzely/krs-new-companies-leads").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 '{
  "lastDays": 5,
  "maxItems": 50
}' |
apify call donzely/krs-new-companies-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,donzely/krs-new-companies-leads"
        }
    }
}
```

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/6eTNaR75WYGdvpT4w/builds/bNvFaCiuXma0ijRZa/openapi.json
