Data Sources
Poland uses a hybrid approach with two different registries and APIs, routing company lookups based on entity type. For a given entity, data comes from a single source determined by the registration prefix.KRS companies (legal entities)
- KRS (Krajowy Rejestr Sadowy / National Court Register) — Operated by the Ministry of Justice, the KRS is the primary source for all legal entities: limited liability companies (sp. z o.o.), joint-stock companies (S.A.), partnerships, associations, foundations, cooperatives, and other registered entities. Data is retrieved from two complementary API endpoints (
odpisaktualnyfor current extracts anddanepodmiotufor entity-level data), fetched in parallel with automatic failover. Provides company name, legal form, status, address, capital, activity codes (PKD), management board members, procurators, and shareholders (sp. z o.o. only). - CRBR (Centralny Rejestr Beneficjentow Rzeczywistych / Central Register of Beneficial Owners) — Poland’s official UBO registry, mandatory for all entities registered in KRS. Provides ultimate beneficial owner data including ownership percentages, control types (direct/indirect), and management positions. Accessed programmatically.
- eKRS Financial Documents Portal (ekrs.ms.gov.pl) — Official portal for financial documents filed by KRS companies. Provides annual financial statements, consolidated statements, management reports, auditor opinions, and approval resolutions. Documents may be in XML format (automatically converted to PDF).
CEIDG sole proprietors (individual businesses)
- biznes.gov.pl API — Government API for the Central Register and Information on Business Activity (CEIDG). Used for search across both registers (KRS + CEIDG) and as the sole data source for sole proprietors. Provides company name, owner name, address, PKD activity codes, status, and basic contact information.
Dual Register System: Poland maintains two separate registers — KRS for legal entities (companies, non-profits, cooperatives) and CEIDG for sole proprietors (individual businesses). Our system uses prefixed identifiers (
krs- / nip-) to route requests to the correct register and API.How does the API choose between KRS and CEIDG?
How does the API choose between KRS and CEIDG?
krs-{number}prefix: Routes to the KRS API. Used for all legal entities registered in the National Court Register (companies, associations, foundations, cooperatives).nip-{number}prefix: Routes to the biznes.gov.pl API. Used for sole proprietors registered in CEIDG.
Company Identifiers
Query Identifiers
| Company Type | Source | Format | Example | Notes |
|---|---|---|---|---|
| KRS legal entities | KRS | krs- + 10 digits | krs-0001010154 | Padded with leading zeros |
| CEIDG sole proprietors | CEIDG | nip- + 10 digits | nip-1234567890 | NIP (tax identification number) |
Identifiers in API Response
Once you retrieve company data, theidentifiers object contains all available identifiers for that entity:
| Identifier Type | Format | Example | Found In |
|---|---|---|---|
krs | 10 digits | 0001010154 | KRS legal entities only |
nip | 10 digits | 1234567890 | Most KRS entities and all CEIDG entities |
regon | 9 digits (or 14 for branches) | 003295237 | Most entities across both registers |
vatNumber | 10 digits (same as NIP) | 1234567890 | Entities with NIP |
Search Capabilities
| Search Type | Pattern | Example | Match Type | Expected Results |
|---|---|---|---|---|
| By KRS Number | 1-10 digits | 0001010154 | Exact | Single company (1 result) |
| By NIP Number | 10 digits | 1234567890 | Exact | Single company (1 result) |
| By REGON Number | 9 or 14 digits | 003295237 | Exact | Single company (1 result) |
| By Name | Text string | "Topograph" | Contains | Multiple results across KRS + CEIDG |
Search queries multiple sources in parallel. For identifier searches, the system queries KRS by KRS number, KRS by NIP, CEIDG by NIP, and CEIDG by REGON simultaneously. Results are deduplicated by ID, with KRS results taking precedence over CEIDG when both match.
Company Status
Company status is determined from KRS register data and enhanced with AI mapping. CEIDG (sole proprietor) statuses use a separate mapping path.KRS Companies (primary path)
Status is derived from multiple KRS data points: deletion indicators, bankruptcy proceedings, merger records, and name-based liquidation detection.| Local Status (Polish) | English | Standardized Status | Detection Method |
|---|---|---|---|
| AKTYWNA | Active | Active | Default (no closure indicators) |
| W LIKWIDACJI | In Liquidation | Closed | Company name contains “W LIKWIDACJI” |
| WYKRESLONA Z REJESTRU | Deleted from Register | Closed | Deletion entries in KRS extract header or dzial6 |
| W UPADLOSCI | In Bankruptcy | Under Insolvency Proceeding | Bankruptcy announced but not completed |
| UPADLOSC ZAKONCZONA | Bankruptcy Completed | Closed | Bankruptcy proceedings have completion date |
| PRZEJETA PRZEZ INNA SPOLKE | Acquired by Another Company | Closed | Merger/acquisition records in dzial6 |
| DZIALALNOSC ZAWIESZONA | Activity Suspended | Under Insolvency Proceeding | Suspension date present without resumption |
| Scenario | Standardized Closure Reason |
|---|---|
| Deletion from KRS/RP register | Administrative Dissolution |
| Bankruptcy proceedings | Bankruptcy |
| Liquidation (name-based detection) | Liquidation |
| Merger/acquisition | Merger |
CEIDG Sole Proprietors
| Local Status (Polish) | English | Standardized Status |
|---|---|---|
| AKTYWNY | Active | Active |
| WYKRESLONY | Deleted | Closed |
Closure Date Priority
The system prioritizes closure dates in the following order:- Deletion finalization date (
dataUprawomocnieniain extract header) — highest priority - Register deletion dates (
dataWykresleniafrom dzial6 KRS/RP deletion records) - Bankruptcy completion date (
dataZakonczeniaPostepowania) - CEIDG cancellation/cessation dates (for sole proprietors)
Status classification is AI-enhanced. The local Polish status name from KRS is always preserved verbatim. The AI analyzes the status in context to provide standardized mapping. Deterministic rules (deletion, bankruptcy, liquidation) take precedence before AI enrichment.
Legal Forms
Poland uses KRS register data for legal form names. The mapping from Polish names to standardized forms and ISO 20275 (ELF) codes is AI-enriched — there is no static deterministic lookup table. The AI adds an English translation, a standardized company type, and an ISO 20275 code.Because legal form standardization and ISO 20275 assignment are AI-enriched, exact mappings may evolve. The local Polish legal form name from KRS is always preserved verbatim.
Key Business Forms
| Polish Name | Abbr. | English Translation | Standardized |
|---|---|---|---|
| Spolka z ograniczona odpowiedzialnoscia | sp. z o.o. | Limited Liability Company | Limited Liability Company |
| Spolka akcyjna | S.A. | Joint-Stock Company | Corporation |
| Spolka komandytowa | sp.k. | Limited Partnership | Partnership |
| Spolka komandytowo-akcyjna | S.K.A. | Limited Joint-Stock Partnership | Corporation |
| Spolka jawna | sp.j. | General Partnership | Partnership |
| Spolka partnerska | sp.p. | Professional Partnership | Partnership |
| Prosta spolka akcyjna | P.S.A. | Simple Joint-Stock Company | Corporation |
Sole Entrepreneurs (CEIDG)
| Polish Name | English Translation | Standardized |
|---|---|---|
| Dzialalnosc gospodarcza osoby fizycznej | Individual Entrepreneur | Sole Proprietorship |
Non-Profits & Other Entities (KRS)
| Polish Name | English Translation | Standardized |
|---|---|---|
| Stowarzyszenie | Association | Nonprofit Organization |
| Fundacja | Foundation | Nonprofit Organization |
| Spoldzielnia | Cooperative | Cooperative |
| Zwiazek zawodowy | Trade Union | Nonprofit Organization |
Legal Representatives
Legal representatives are extracted from two KRS data sections: the management board (reprezentacja.sklad) and procurators (prokurenci). Role classification is AI-enriched — the AI analyzes each role in the context of the company’s legal form to assign ISO 5009 codes.
KRS Management Board Roles
Management Board Roles (Zarzad)
Management Board Roles (Zarzad)
| Polish Role | English Translation | Standardized Role |
|---|---|---|
| PREZES ZARZADU | President of the Board / CEO | Manager |
| WICEPREZES ZARZADU | Vice President of the Board | Manager |
| CZLONEK ZARZADU | Board Member | Director |
| CZLONEK RADY NADZORCZEJ | Supervisory Board Member | Director |
| PREZES RADY NADZORCZEJ | Chairman of Supervisory Board | Director |
Procurator Roles (Prokura)
Procurator Roles (Prokura)
| Polish Role | English Translation | Standardized Role |
|---|---|---|
| PROKURENT | Procurator (Authorized Signatory) | Other |
| PROKURENT SAMOISTNY | Independent Procurator | Other |
| PROKURENT LACZNY | Joint Procurator | Other |
CEIDG Owner Role
CEIDG Owner Role
| Polish Role | English Translation | Standardized Role |
|---|---|---|
| Wlasciciel | Owner | Owner |
PESEL-Based Data Extraction
For KRS management board members and procurators, birth dates and gender are extracted from PESEL numbers (Polish Personal Identification Number, 11 digits) when available.PESEL format and extraction details
PESEL format and extraction details
PESEL format:
YYMMDDCCCSS (11 digits)YY— Year (last 2 digits)MM— Month (with century indicator: 01-12 = 1900s, 21-32 = 2000s)DD— Day of birthCCC— Serial numberS— Gender digit (even = female, odd = male)S— Checksum digit
Procurators (authorized signatories) from KRS are mapped as additional legal representatives with the
PROKURENT role and standardized as Other. For CEIDG sole proprietors, the entrepreneur is automatically mapped as the sole legal representative with role “Wlasciciel” (Owner).Other Key Persons
Other key persons are not currently extracted from Polish registries. All management board members and procurators are mapped as legal representatives.Shareholders
Shareholders are extracted from the KRS register for sp. z o.o. (Limited Liability Companies) only, from thewspolnicySpzoo section (Section 1 of the KRS extract).
Extraction Logic
| Source | When Used | Data Extracted |
|---|---|---|
KRS wspolnicySpzoo | sp. z o.o. companies only | Name, share count, corporate identifiers (KRS, NIP, REGON) |
Share Count Parsing
Share counts are parsed from Polish KRS text strings using a combination of regex (fast path) and AI (complex cases):| Example Text | Parsed Value |
|---|---|
93.387 UDZIALOW O WARTOSCI 4.669.350,00 ZL | 93,387 shares |
1 UDZIAL O WARTOSCI 50,00 ZL | 1 share |
500 UDZIALOW | 500 shares |
10.000 AKCJI | 10,000 shares |
Polish number format: Poland uses dot (
.) as thousands separator and comma (,) as decimal separator. The parser handles this automatically. Share percentages are not directly available from KRS — only absolute share counts are extracted.Shareholder Type Detection
| Indicator | Shareholder Type |
|---|---|
| Has KRS/NIP/REGON identifiers | Company |
| Name contains legal form suffix (AG, SA, GMBH, SP. Z O.O., LTD, etc.) | Company |
KRS number is all zeros (0000000000) | Foreign company (no Polish ID) |
| No corporate indicators | Individual |
Limitations
| Legal Form | Shareholder Data Available? | Notes |
|---|---|---|
| sp. z o.o. (LLC) | Yes | Individual and corporate shareholders with share counts |
| S.A. (Joint-Stock) | No | Shareholders not listed in public KRS register |
| sp.k. / sp.j. (Partnerships) | No | Partner data not structured in shareholder format |
| Associations / Foundations | No | Not applicable |
| CEIDG (Sole Proprietors) | No | Not applicable |
For corporate shareholders, Polish identifiers (KRS, NIP, REGON) are included when available. Foreign corporate shareholders without Polish identifiers are included with name only. Share percentages are not directly available from KRS; only share counts are extracted.
Activity Code Mapping
Poland uses the PKD (Polska Klasyfikacja Dzialalnosci) classification, which is the Polish adaptation of the European NACE Rev. 2 standard. PKD codes are structurally identical to NACE codes and are mapped directly without transformation.| Classification | Source | Example | AI Inferred? |
|---|---|---|---|
| PKD / NACE | KRS (przedmiotDzialalnosci) or CEIDG (mainPkd / otherPkd) | 62.01.Z | No (official) |
| ISIC | Derived from NACE or AI-inferred | 6201 | Sometimes |
przedmiotPrzewazajacejDzialalnosci) and secondary activities (przedmiotPozostalejDzialalnosci). CEIDG provides mainPkd (primary) and otherPkd[] (additional).
AI Enrichment: When ISIC codes cannot be derived from NACE via formal mapping tables, the system uses an LLM to match activity descriptions to ISIC Rev. 4 codes. Every activity item includes an
isAIInferred flag. PKD/NACE codes are never AI-inferred for Poland.Activity Codes by Source
| Source | Classifications returned | Notes |
|---|---|---|
| KRS | NACE + ISIC | From dzial3.przedmiotDzialalnosci (main + secondary PKD codes) |
| CEIDG | PKD + NACE + ISIC | From mainPkd and otherPkd fields, AI-analyzed |
Data Availability Matrix
| Data Type | KRS Companies | CEIDG (Sole Proprietors) | Notes |
|---|---|---|---|
| Company Profile | Async | Async | Full data for KRS, limited for CEIDG |
| Legal Representatives | Yes | Yes | KRS: board + procurators; CEIDG: owner only |
| Shareholders | Yes (sp. z o.o. only) | No | Only for Limited Liability Companies |
| Other Key Persons | No | No | Not currently extracted |
| Ultimate Beneficial Owners | Yes | No | From CRBR (Central Register of Beneficial Owners) |
| Activity Codes | Yes | Yes | PKD codes from KRS or CEIDG |
| Documents | Yes | Yes | Different document sets per register type |
| Financial Statements | Yes | No | From ekrs.ms.gov.pl, automatic XML-to-PDF conversion |
| Establishments | No | No | Not currently extracted |
Documents by Company Type
KRS Companies (prefix: krs-)
| Document Type | API Category | Format | SKU | Availability | Notes |
|---|---|---|---|---|---|
| Current KRS Extract | tradeRegisterExtract | pol-register-extract | Active companies only | Aktualny odpis z KRS | |
| Historical KRS Extract | otherDocuments[] | pol-historical-register-extract | All companies | Pelny odpis historyczny z KRS (full history) | |
| UBO Extract | otherDocuments[] | pol-ubo-extract | When UBO data exists | Wyciag z CRBR o beneficjentach rzeczywistych | |
| Financial Statements | financialStatements[] | PDF (auto-converted from XML) | pol-financial-statements | When filed | Various types from ekrs.ms.gov.pl |
CEIDG Sole Proprietors (prefix: nip-)
| Document Type | API Category | Format | SKU | Availability | Notes |
|---|---|---|---|---|---|
| CEIDG Certificate | tradeRegisterExtract | pol-register-extract | All entities | Zaswiadczenie z CEIDG | |
| Representatives Document | otherDocuments[] | pol-representatives | All entities | Informacja o pelnomocnikach |
Financial Document Types
Available financial document types from the eKRS portal include:- Roczne sprawozdanie finansowe — Annual Financial Statements
- Skonsolidowane roczne sprawozdanie finansowe — Consolidated Annual Financial Statements
- Sprawozdanie z dzialalnosci — Management Reports
- Opinia bieglego rewidenta — Auditor’s Opinions
- Uchwaly o zatwierdzeniu sprawozdan — Approval Resolutions
- Uchwaly o podziale zysku — Profit Distribution Resolutions
Automatic XML-to-PDF Conversion: Financial documents in Poland are often published in XML format using the Ministry of Finance schema. We automatically convert these XML files to human-readable PDF format using the official Polish government visualization tool at e-sprawozdania.mf.gov.pl. Both the original XML and the converted PDF are stored and accessible. If conversion fails, the original XML file is still returned.
Example API Responses
All examples use placeholder data. Query:POST /company with { "id": "<id>", "countryCode": "PL", "dataPoints": ["companyProfile"] }
Active sp. z o.o. (KRS Company) -- with Shareholders
Active sp. z o.o. (KRS Company) -- with Shareholders
Closed KRS Company (Dissolved)
Closed KRS Company (Dissolved)
danepodmiotu endpoint only when the full extract (odpisaktualny) is not available. Shareholders are not available in this case. Only the historical trade register extract is available as a document.CEIDG Sole Proprietor
CEIDG Sole Proprietor
UBO Response (dedicated datapoint)
UBO Response (dedicated datapoint)
Query with Note: UBOs are fetched from the CRBR (Central Register of Beneficial Owners). Three control types are recognized: (1) direct ownership of shares/assets, (2) indirect control through controlling entity, (3) senior management position under AML law. Ownership amounts may be in PLN (monetary) or percentage.
"dataPoints": ["ultimateBeneficialOwners"]:Available Documents (KRS Company)
Available Documents (KRS Company)
Documents are returned when
For inactive KRS companies:
For CEIDG entities:
"dataPoints": ["documents"] is requested.For active KRS companies:| API Category | Document | Notes |
|---|---|---|
tradeRegisterExtract | Aktualny odpis z KRS | Current extract, active companies only |
otherDocuments[] | Pelny odpis historyczny z KRS | Full historical extract |
otherDocuments[] | Wyciag z CRBR | UBO extract, when UBO data exists |
financialStatements[] | Various financial documents | From ekrs.ms.gov.pl |
| API Category | Document | Notes |
|---|---|---|
otherDocuments[] | Pelny odpis historyczny z KRS | Full historical extract (only document available) |
| API Category | Document | Notes |
|---|---|---|
tradeRegisterExtract | Zaswiadczenie z CEIDG | CEIDG certificate |
otherDocuments[] | Informacja o pelnomocnikach | Representatives document |
Quirks & Gotchas
| Quirk | Details |
|---|---|
| Prefixed identifiers required | Company IDs must use krs- or nip- prefixes to route to the correct register. Without a prefix, the system returns an error. |
| KRS and NIP can collide | Both KRS and NIP are 10-digit numbers. The prefix system prevents ambiguity. Not all KRS entities have a NIP (e.g., associations, foundations). |
| Shareholders only for sp. z o.o. | Only Limited Liability Companies have shareholder data in KRS. Joint-stock companies, partnerships, and CEIDG entities do not expose shareholder information. |
| Share percentages unavailable | KRS provides only absolute share counts (e.g., “93.387 shares”), not ownership percentages. The parser extracts the count from Polish text using regex + AI. |
| Liquidation detected from company name | Companies in liquidation are identified by “W LIKWIDACJI” appearing in the legal name, not from a dedicated status field in KRS. |
| Legal forms are AI-enriched | Polish legal forms are standardized via AI. The local Polish name from KRS is always preserved. ISO 20275 codes and English translations may evolve. |
| PESEL extraction from representatives | Birth dates and gender of legal representatives are extracted from PESEL numbers when available. This is the only source of birth date data for KRS representatives. |
| Procurators as legal representatives | Procurators (authorized signatories) from KRS are mapped as additional legal representatives with the PROKURENT role, standardized as Other. |
| Financial documents may be XML | Financial statements from the Ministry of Finance portal may be in XML format. The system automatically converts XML to PDF, but the format is unknown until download. |
| KRS API resilience | The KRS API uses parallel request attempts (3 concurrent per endpoint) with automatic failover. Both odpisaktualny and danepodmiotu endpoints are fetched in parallel for maximum data coverage. |
| CEIDG data is limited | CEIDG (sole proprietor) profiles have significantly less structured data than KRS companies. No shareholders, UBOs, or financial statements are available. The owner is mapped as the sole legal representative. |
| PKD codes = NACE codes | Polish PKD classification is structurally identical to NACE Rev. 2. PKD codes are mapped directly as NACE codes without transformation. |
| Dissolved companies use fallback endpoint | When a company is dissolved, the full KRS extract (odpisaktualny) may not be available. The system falls back to danepodmiotu which provides limited data (no shareholders, limited representatives). |
| Current extract only for active companies | The Aktualny odpis z KRS (current trade register extract) is unavailable for closed/dissolved companies. Use the historical extract instead. |
| UBO data from CRBR | UBO data is fetched from the CRBR registry. This may occasionally be slower than direct API calls. |
- Activity Mapping - NACE/ISIC classification system