Poland KRS Company Extractor (Official API) avatar

Poland KRS Company Extractor (Official API)

Pricing

from $4.00 / 1,000 company extracteds

Go to Apify Store
Poland KRS Company Extractor (Official API)

Poland KRS Company Extractor (Official API)

Extracts company data from the official Polish KRS business register open API: name, legal form, NIP, REGON, address, share capital, PKD activities and website. Look up KRS numbers or list the companies registered or changed on a given day. No account, no scraping.

Pricing

from $4.00 / 1,000 company extracteds

Rating

0.0

(0)

Developer

UHQxx

UHQxx

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Categories

Security

Limited permissions

Share

What is Poland KRS Company Extractor?

Poland KRS Company Extractor reads the official open API of the Polish business register (KRS, Krajowy Rejestr Sądowy) and turns it into a clean table: one row per company, with the name, legal form, NIP, REGON, address, share capital, PKD activity codes, website and registration dates. Give it a list of KRS numbers, or give it a day and get the companies registered on that day (or every company that changed that day). Export the result as JSON, CSV or Excel.

It uses the register's own open API, published by the Polish Ministry of Justice: no scraping, no login, no account, no proxy.

This Actor is an independent tool. It is not affiliated with, or endorsed by, the Polish Ministry of Justice.

What can this KRS extractor do?

  • Extract company data from the KRS register of entrepreneurs for any list of KRS numbers (with or without leading zeros).
  • List the new companies of a given day (by reading that day's official bulletin), for example to feed a B2B lead list or a market watch.
  • List every company that changed on a given day (new filings, address changes, capital changes...).
  • Return flat, ready-to-use columns: address split into street, number, postal code and city; PKD activity codes; share capital as a number; dates in ISO format.
  • Optionally add the management board members (name and role). Off by default.
  • Skip the KRS numbers and the people in your exclusion lists.
  • Report honestly what it could not read, with a clear status for each number.

Who is it for?

  • Sales and marketing teams building lists of new Polish companies.
  • Compliance, KYB and credit teams checking a company against the official register.
  • Researchers and analysts following company creation by region or by activity (PKD code).
  • Developers who need Polish register data in a simple API call.

3 ways to use it

  1. Watch new companies every day. Schedule a run with yesterday's date and "New companies": you get the companies registered that day, with address, activity and capital.
  2. Check a list of suppliers or customers. Paste their KRS numbers and get legal form, NIP, REGON, address, capital and the date of the last entry.
  3. Enrich a spreadsheet. Turn a column of KRS numbers into a full table.

Example output

Fictional company, real structure:

{
"krs": "0000000123",
"status": "ok",
"statusDetail": null,
"name": "EXEMPLE SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
"legalForm": "SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
"nip": "0000000000",
"regon": "000000000",
"registrationDate": "2026-10-30",
"lastEntryDate": "2026-10-30",
"lastEntryNumber": 1,
"statementAsOf": "2026-10-30",
"voivodeship": "WIELKOPOLSKIE",
"county": "POZNAŃ",
"municipality": "POZNAŃ",
"city": "POZNAŃ",
"street": "UL. PRZYKŁADOWA",
"houseNumber": "1",
"apartmentNumber": "2",
"postalCode": "60-000",
"website": "WWW.EXEMPLE.PL",
"shareCapital": 5000,
"shareCapitalCurrency": "PLN",
"mainActivityCode": "62.01.Z",
"mainActivity": "DZIAŁALNOŚĆ ZWIĄZANA Z OPROGRAMOWANIEM",
"otherActivityCodes": ["62.02.Z", "93"],
"board": null
}

How to use it

  1. Open the Actor on Apify.
  2. Fill KRS numbers (one per line) and/or a Bulletin date (YYYY-MM-DD, after 2021-12-08).
  3. With a bulletin date, choose New companies or All companies changed that day.
  4. Set Maximum number of companies (100 by default).
  5. Click Start, then open the Results table or export it as JSON, CSV or Excel. A short summary (totals only) is saved in the SUMMARY record of the key-value store.

You can also run it through the Apify API, on a schedule, or from integrations such as Make, Zapier or n8n.

Input

FieldMeaningDefault
krsNumbersKRS numbers to extract. 19193 and 0000019193 are the same.none
bulletinDateA day (YYYY-MM-DD, after 2021-12-08, not in the future). Adds that day's companies. The bulletin of the current day may be incomplete.empty
bulletinScopenewCompanies (registered that day) or allChanges (every company changed that day).newCompanies
maxCompaniesSafety limit per run, 1 to 5,000.100
includeBoardAdds name and role of the management body members and registered proxies. Never includes PESEL numbers or shareholders.off
excludedKrsKRS numbers that must NOT be processed.empty
excludedPeopleFull names removed from the board list (when includeBoard is on). Ignores case, accents and the order of the words; a first name + surname is enough.empty
requestsPerSecondHow fast the official API is queried, 1 to 5.2

You need at least krsNumbers or bulletinDate.

Output columns

ColumnMeaning
krs, status, statusDetailThe KRS number, the status of the row (see below) and an explanation when it is not ok.
name, legalFormCompany name and legal form (in Polish, as in the register).
nip, regonTax identification number and statistical number.
registrationDate, lastEntryDate, lastEntryNumber, statementAsOfRegistration date, date and number of the last entry, and the date the data is valid as of.
voivodeship, county, municipalityAdministrative location of the registered seat.
city, street, houseNumber, apartmentNumber, postalCodeAddress.
websiteWebsite as written in the register (often empty).
shareCapital, shareCapitalCurrencyRegistered share capital as a number, and its currency.
mainActivityCode, mainActivity, otherActivityCodesPKD activity codes (for example 62.01.Z) and the description of the main activity.
boardOnly with includeBoard: list of {name, role}. Otherwise null.

Missing information is always null: nothing is guessed or filled in.

What the statuses mean

  • ok: the company was extracted. Only these rows are charged.
  • not_found: the number is not in the register of entrepreneurs (the register answered "not found"). It may exist in the other KRS register (associations and foundations), which is not covered.
  • no_data: the register answered without any content for this number. We do not guess why.
  • error: the request failed or the answer could not be used (for example an empty or broken answer). Run it again later.

FAQ

Is this scraping? Is it allowed?

No scraping: the Actor calls the official open API of the Polish business register, which the Ministry of Justice publishes for reuse (the page cites the Polish law on open data and the reuse of public sector information, and refers to the GDPR). We have not found a published rate limit, so the Actor is deliberately gentle (2 requests per second by default) and stops if the API keeps failing. You remain responsible for how you reuse the data.

Can I search companies by name or by city?

No. The official API only answers by KRS number, or by the daily bulletin. If you do not know the KRS number, you can use the bulletin of a day to list that day's companies and filter the table afterwards.

How reliable is "New companies"?

It is best effort. KRS numbers follow the order of registration, so the newest companies are at the top of the day's bulletin. The Actor reads the bulletin from the top and stops after 150 older companies in a row. On the day we tested, this worked, but companies registered a day earlier can be mixed in near the boundary, so a few new companies could be missed. Use "All companies changed that day" if you need everything.

Does it give e-mail addresses or phone numbers?

No. The register data we saw contains no e-mail address or phone number, only an optional website. Nothing else is collected.

How long does a run take?

At the default speed of 2 requests per second, about 500 companies take 4 to 5 minutes and 5,000 companies about 40 minutes. A bulletin run reads more numbers than it keeps (numbers that give nothing, and older companies that mark the boundary). Set the run timeout of your run high enough for the number of companies you ask.

What data is as of when?

Each row has statementAsOf: the date the data is valid as of in the register. It can be a few days old.

Honest limits

  • Only the KRS register of entrepreneurs is read. Entities that are listed only in the other KRS register (associations, foundations and similar) are not covered; their numbers come back as not_found. Some foundations and cooperatives do appear in the register of entrepreneurs, and are returned.
  • Lookup by KRS number or by day only (no search by name).
  • Tested on 400 companies of one day's bulletin: limited liability companies, joint-stock companies, general, limited and professional partnerships, cooperatives, foundations, associations, craft guilds and branches of foreign companies. Fields that do not exist for a legal form come back as null. A form that did not appear in this sample could still have a different structure.
  • shareCapital is only filled for entities that have a share capital: general partnerships, foundations and cooperatives have none in this field and return null.
  • nip or regon can be empty: in our test, 13 of 400 rows lacked a REGON and 2 lacked a NIP (we did not verify why).
  • The "New companies" mode is best effort (see the FAQ).
  • The bulletin of the current day can be incomplete.
  • Part of the numbers listed in a bulletin give nothing usable (not_found or no_data). In our test, reading one day's bulletin, 123 of 524 numbers (about 23%) were in that case. They are counted in the summary (bulletinSkipped) and are not saved as rows. The Actor therefore reads more numbers than it keeps, which takes time but costs you nothing: only ok rows are charged.
  • Text values (names, addresses, activities) are in Polish and in capital letters, as in the register.
  • Run time limit. If the run timeout you set is about to be reached, the Actor stops early instead of being cut off: the companies already saved are kept, the others are not extracted and not charged, and the status message says so (the SUMMARY record has the totals). Start a new run for the rest, or raise the run timeout.

Data and GDPR: please read

Data processed. Public data about companies, taken from the official register. If you turn on includeBoard, the output also contains the names and roles of the people who manage or represent the company, which are personal data published in the register under Polish law. The Actor never outputs PESEL numbers (the API already masks them), shareholders or partners who are private individuals, e-mail addresses, phone numbers or private addresses.

Minimisation. includeBoard is off by default: leave it off unless you need it.

What leaves the Actor. Only the KRS number or the bulletin date you asked for is sent to the official API. No other service is used. Logs contain totals only, never names or numbers.

What is kept. The Actor keeps nothing of its own. Your results and your run input (including exclusion lists) are stored by Apify with your run, according to Apify's own retention rules. You can delete them from the Console.

You are responsible for your use. You decide why and how the data is used, so you are responsible for compliance with the GDPR and Polish law. In particular:

  • Have a valid legal basis for any processing of personal data, and inform the people concerned when required.
  • Honour objections and other requests. Use Excluded people and Excluded KRS numbers so that people who objected are never processed again.
  • Follow the rules on business prospecting in your country (for e-mail, phone or post).
  • Do not use the data to harass, profile or discriminate against people.

This is general information, not legal advice. We have not reviewed the Polish data protection authority's guidance on reusing public register data.

En bref (français)

Lit l'API officielle ouverte du registre du commerce polonais (KRS) et la transforme en tableau : nom, forme juridique, NIP, REGON, adresse, capital, codes d'activité PKD, site web, dates. Vous donnez des numéros KRS, ou une date pour obtenir les sociétés créées ce jour-là (au mieux) ou toutes celles modifiées ce jour-là. Pas de scraping, pas de compte. Les dirigeants (nom et fonction) sont une option désactivée par défaut ; jamais de PESEL, d'associés personnes physiques, d'e-mails ni de téléphones. Une liste d'exclusion (sociétés et personnes) est disponible. Limites : recherche par numéro ou par jour seulement, registre des entrepreneurs seulement, mode « nouvelles sociétés » au mieux. Vous restez responsable de l'usage des données (RGPD, droit polonais, prospection).

Pricing

You pay per company extracted. The price is shown in the Pricing tab of the Actor.

  • Charged: each company whose row has the status ok.
  • Never charged: rows with the status not_found, no_data or error, duplicates, numbers in your exclusion list, and companies beyond your maxCompanies limit.
  • A small fixed fee per run start may also apply, as shown in the Pricing tab.
  • You can cap what a run can spend with the maximum cost setting of the run. The Actor stops cleanly when the cap is reached; results already saved are kept.