Poland KRS Company Extractor (Official API)
Pricing
from $4.00 / 1,000 company extracteds
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Security
Limited permissionsShare
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
- 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.
- 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.
- 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
- Open the Actor on Apify.
- Fill KRS numbers (one per line) and/or a Bulletin date (
YYYY-MM-DD, after 2021-12-08). - With a bulletin date, choose New companies or All companies changed that day.
- Set Maximum number of companies (100 by default).
- Click Start, then open the Results table or export it as JSON, CSV or Excel. A short summary (totals only) is saved in the
SUMMARYrecord 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
| Field | Meaning | Default |
|---|---|---|
krsNumbers | KRS numbers to extract. 19193 and 0000019193 are the same. | none |
bulletinDate | A 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 |
bulletinScope | newCompanies (registered that day) or allChanges (every company changed that day). | newCompanies |
maxCompanies | Safety limit per run, 1 to 5,000. | 100 |
includeBoard | Adds name and role of the management body members and registered proxies. Never includes PESEL numbers or shareholders. | off |
excludedKrs | KRS numbers that must NOT be processed. | empty |
excludedPeople | Full 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 |
requestsPerSecond | How fast the official API is queried, 1 to 5. | 2 |
You need at least krsNumbers or bulletinDate.
Output columns
| Column | Meaning |
|---|---|
krs, status, statusDetail | The KRS number, the status of the row (see below) and an explanation when it is not ok. |
name, legalForm | Company name and legal form (in Polish, as in the register). |
nip, regon | Tax identification number and statistical number. |
registrationDate, lastEntryDate, lastEntryNumber, statementAsOf | Registration date, date and number of the last entry, and the date the data is valid as of. |
voivodeship, county, municipality | Administrative location of the registered seat. |
city, street, houseNumber, apartmentNumber, postalCode | Address. |
website | Website as written in the register (often empty). |
shareCapital, shareCapitalCurrency | Registered share capital as a number, and its currency. |
mainActivityCode, mainActivity, otherActivityCodes | PKD activity codes (for example 62.01.Z) and the description of the main activity. |
board | Only 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. shareCapitalis only filled for entities that have a share capital: general partnerships, foundations and cooperatives have none in this field and returnnull.niporregoncan 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_foundorno_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: onlyokrows 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
SUMMARYrecord 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_dataorerror, duplicates, numbers in your exclusion list, and companies beyond yourmaxCompanieslimit. - 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.