Poland KRS Company Registry Scraper avatar

Poland KRS Company Registry Scraper

Pricing

from $0.05 / 1,000 krs record extracteds

Go to Apify Store
Poland KRS Company Registry Scraper

Poland KRS Company Registry Scraper

Extract public Polish KRS company registry records by KRS number. Export names, IDs, addresses, representatives, activities, and capital.

Pricing

from $0.05 / 1,000 krs record extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

Extract public Polish KRS company registry records by KRS number. The actor accepts one or many KRS numbers and returns normalized company identity, address, registration, representative, shareholder/partner, business activity, and capital fields from the official public registry response.

What you can do with it

  • Enrich B2B lead lists with Polish company names, NIP, REGON, legal form, and address.
  • Check compliance records for known KRS numbers in repeatable batches.
  • Build market research datasets from official public registry extracts.
  • Normalize pasted KRS numbers from spreadsheets into machine-readable JSON, CSV, or Excel exports.

Who is it for?

Compliance teams, sales operations, B2B data vendors, researchers, and analysts who already have KRS numbers and need structured company registry exports without manually opening registry pages one by one.

Input recipes

This example section can be pasted into the Apify Console input editor or sent through the API.

Look up two entrepreneurs-register companies

{
"krsNumbers": ["0000123456", "0000247804"],
"register": "P",
"maxConcurrency": 2,
"delayMs": 250
}

Paste KRS numbers from a spreadsheet

{
"krsNumbersText": "123456\n247804",
"register": "P",
"includeRawOdpis": false
}

Input

FieldTypeDescription
krsNumbersarray of stringsKRS numbers to look up. Leading zeros are optional.
krsNumbersTextstringOptional pasted newline/comma/semicolon/space-separated KRS numbers.
registerstringP for entrepreneurs (default) or S for associations/foundations.
includeRawOdpisbooleanInclude the full raw official response for successful records.
maxConcurrencyintegerParallel requests, 1-5. Default is 2.
delayMsintegerDelay before each request. Default is 250 ms.

Output

Each dataset item represents one requested KRS number. Successful records have status: "active"; missing or failed records include status and errorMessage.

{
"krsNumber": "0000123456",
"register": "P",
"snapshotDate": "20.11.2025",
"legalName": "RODENSTOCK POLSKA SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
"legalForm": "SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
"nip": "6342373405",
"regon": "27676445600000",
"address": {
"country": "POLSKA",
"voivodeship": "MAZOWIECKIE",
"city": "WARSZAWA",
"street": "AL. ALEJE JEROZOLIMSKIE",
"houseNumber": "123A",
"postalCode": "02-017"
},
"registrationDate": "25.07.2002",
"lastEntryDate": "01.07.2025",
"court": "SYSTEM",
"status": "active",
"representatives": [
{ "firstName": "V*****", "lastName": "N******", "function": "WICEPREZES ZARZĄDU SPÓŁKI" }
],
"shareholdersOrPartners": [
{ "name": "RODENSTOCK BETEILIGUNGEN AUSLAND GMBH", "shares": "1200 UDZIAŁÓW O ŁĄCZNEJ WARTOŚCI 1.200.000 PLN" }
],
"businessActivities": [
{ "code": "46.90.Z", "description": "SPRZEDAŻ HURTOWA NIEWYSPECJALIZOWANA", "isPrimary": true }
],
"shareCapital": { "amount": "1200000,00", "currency": "PLN" },
"sourceUrl": "https://api-krs.ms.gov.pl/api/krs/OdpisAktualny/0000123456?rejestr=P&format=json",
"scrapedAt": "2026-07-07T09:00:00.000Z"
}

Output fields

krsNumber, register, snapshotDate, legalName, legalForm, nip, regon, address, registrationDate, lastEntryDate, court, status, representatives, shareholdersOrPartners, businessActivities, shareCapital, rawOdpis (optional), sourceUrl, scrapedAt, and errorMessage for failed lookups.

Pricing

The actor uses pay-per-event pricing:

  • Start: $0.005 per run.
  • KRS record extracted: $0.000079009 per successful registry extract on the BRONZE tier, with standard Apify tier discounts for higher plans.

Missing or failed KRS numbers are saved with an error status but are not charged as successful extracts.

API usage

Run the actor from the Apify API.

cURL

curl "https://api.apify.com/v2/acts/fetch_cat~poland-krs-company-registry-scraper/runs?token=$APIFY_TOKEN" \
-H 'Content-Type: application/json' \
-d '{"krsNumbers":["0000123456"],"register":"P"}'

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/poland-krs-company-registry-scraper').call({
krsNumbers: ['0000123456'],
register: 'P',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
import os
client = ApifyClient(os.environ['APIFY_TOKEN'])
run = client.actor('fetch_cat/poland-krs-company-registry-scraper').call(run_input={
'krsNumbers': ['0000123456'],
'register': 'P',
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

MCP / agent usage

Use this actor from AI agents through Apify MCP:

https://mcp.apify.com/?tools=fetch_cat/poland-krs-company-registry-scraper

Add it to Claude Desktop or Claude Code:

$claude mcp add apify-krs --url "https://mcp.apify.com/?tools=fetch_cat/poland-krs-company-registry-scraper"

Example MCP server JSON configuration:

{
"mcpServers": {
"apify-krs": {
"url": "https://mcp.apify.com/?tools=fetch_cat/poland-krs-company-registry-scraper"
}
}
}

Example prompts:

  • "Look up KRS 0000123456 in the entrepreneurs register and summarize the company identity fields."
  • "Extract KRS records for these numbers and return a CSV-ready table with KRS, name, NIP, REGON, address, and status."

Legality

This actor extracts publicly available Polish KRS registry records for KRS numbers you provide. Use the data in line with applicable privacy, compliance, and database-use rules, especially when combining registry data with other personal or commercial datasets.

Tips and limits

  • Use the correct register: most companies are in P; associations and foundations are usually in S.
  • Keep maxConcurrency low for large batches to avoid unnecessary pressure on the public registry service.
  • KRS numbers are normalized to 10 digits automatically.
  • Personal identifiers in the official response can be masked by the registry; the actor returns what is publicly provided.

FAQ

Do I need a Polish registry account?

No. This actor is designed for public KRS registry extracts available without login.

Can I search by company name?

Not in version 1. This actor is optimized for exact KRS-number lookups.

What should I include in a support request?

Please include the run ID or run URL, your input JSON, expected output, and actual output. If a specific KRS number failed, include that number and the selected register.

Support

If something looks wrong, open an issue on the actor page with the run ID/run URL, input JSON, expected output, and actual output so we can reproduce it quickly.

Changelog

  • Initial version: KRS-number lookup, normalized company fields, optional raw response, and batch input support.