Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.topograph.co/llms.txt

Use this file to discover all available pages before exploring further.

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 (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 (odpisaktualny for current extracts and danepodmiotu for 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.
  • 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.
The prefix is required because both KRS and NIP numbers are 10-digit identifiers that could collide. Not all KRS entities have a NIP (e.g., some associations and foundations), making KRS the only reliable identifier for those entities.Key Takeaway: Always use the appropriate prefix when querying. Search results from the API already include the correct prefix.

Company Identifiers

Query Identifiers

Company TypeSourceFormatExampleNotes
KRS legal entitiesKRSkrs- + 10 digitskrs-0001010154Padded with leading zeros
CEIDG sole proprietorsCEIDGnip- + 10 digitsnip-1234567890NIP (tax identification number)
Prefixed identifiers are required. Company IDs must use krs- or nip- prefixes to route to the correct register. Without a prefix, the system cannot determine the data source and will return an error.
KRS Number Padding: KRS numbers are always 10 digits with leading zeros (e.g., 0001010154). When searching by KRS number, shorter inputs are automatically padded to 10 digits.

Identifiers in API Response

Once you retrieve company data, the identifiers object contains all available identifiers for that entity:
Identifier TypeFormatExampleFound In
krs10 digits0001010154KRS legal entities only
nip10 digits1234567890Most KRS entities and all CEIDG entities
regon9 digits (or 14 for branches)003295237Most entities across both registers
vatNumber10 digits (same as NIP)1234567890Entities with NIP

Search Capabilities

Search TypePatternExampleMatch TypeExpected Results
By KRS Number1-10 digits0001010154ExactSingle company (1 result)
By NIP Number10 digits1234567890ExactSingle company (1 result)
By REGON Number9 or 14 digits003295237ExactSingle company (1 result)
By NameText string"Topograph"ContainsMultiple results across KRS + CEIDG
Search Performance: Use identifier-based searches (KRS, NIP, REGON) for best performance and exact matching. Name searches query biznes.gov.pl and may return multiple results from both KRS and CEIDG registers.
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)EnglishStandardized StatusDetection Method
AKTYWNAActiveActiveDefault (no closure indicators)
W LIKWIDACJIIn LiquidationClosedCompany name contains “W LIKWIDACJI”
WYKRESLONA Z REJESTRUDeleted from RegisterClosedDeletion entries in KRS extract header or dzial6
W UPADLOSCIIn BankruptcyUnder Insolvency ProceedingBankruptcy announced but not completed
UPADLOSC ZAKONCZONABankruptcy CompletedClosedBankruptcy proceedings have completion date
PRZEJETA PRZEZ INNA SPOLKEAcquired by Another CompanyClosedMerger/acquisition records in dzial6
DZIALALNOSC ZAWIESZONAActivity SuspendedUnder Insolvency ProceedingSuspension date present without resumption
Closure reasons (when status is Closed or Under Insolvency Proceeding):
ScenarioStandardized Closure Reason
Deletion from KRS/RP registerAdministrative Dissolution
Bankruptcy proceedingsBankruptcy
Liquidation (name-based detection)Liquidation
Merger/acquisitionMerger

CEIDG Sole Proprietors

Local Status (Polish)EnglishStandardized Status
AKTYWNYActiveActive
WYKRESLONYDeletedClosed

Closure Date Priority

The system prioritizes closure dates in the following order:
  1. Deletion finalization date (dataUprawomocnienia in extract header) — highest priority
  2. Register deletion dates (dataWykreslenia from dzial6 KRS/RP deletion records)
  3. Bankruptcy completion date (dataZakonczeniaPostepowania)
  4. 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.
Poland ships a closed enum of 51 legal forms sourced directly from the Polish registers. The enum covers the 50 distinct formaPrawna strings the KRS returns, plus one canonical entry for CEIDG sole traders. There is no AI fallback: an unknown value is rejected with invalid at ingestion time so the enum stays accurate and any new form the register introduces surfaces as a deploy blocker. Provenance:
  • KRS values were harvested from the full July 2024 snapshot of the Krajowy Rejestr Sadowy (849,757 entities across the commercial register RejP and the association register RejS). The top 13 forms cover 99.7% of the register and the full set is 50 distinct strings.
  • CEIDG sole traders are projected onto a single canonical entry (Osoba fizyczna prowadząca działalność gospodarczą), because the biznes.gov.pl API does not expose a formaPrawna field for CEIDG entries (a sole trader has no entity-level legal form under Polish law).
  • ISO 20275 (ELF) codes are attached as a cross-reference where GLEIF publishes one. Out of the 51 entries, 33 have an ELF code and 18 do not. GLEIF is not the source of the enum; the register is. We attach ELF codes opportunistically for LEI matching and nothing more.
GLEIF’s ISO 20275 list for Poland is incomplete and is not a safe source of truth. 18 of the 50 KRS-returned forms have no ELF code at all (for example the granular stowarzyszenie subtypes, public-benefit organizations, and church-related entities). This is why the enum is built from the register itself, not from ISO 20275.

Core commercial forms

Polish NameAbbr.English TranslationStandardizedISO 20275
Spółka z ograniczoną odpowiedzialnościąsp. z o.o.Limited Liability CompanyLimited Liability CompanyO7XB
Spółka akcyjnaS.A.Joint-Stock CompanyCorporationFJ0E
Prosta spółka akcyjnaP.S.A.Simple Joint-Stock CompanyCorporationB21W
Spółka jawnasp.j.General PartnershipPartnership629I
Spółka komandytowasp.k.Limited PartnershipPartnershipBSJT
Spółka komandytowo-akcyjnaS.K.A.Limited Joint-Stock PartnershipPartnershipOMX0
Spółka partnerskasp.p.Professional PartnershipPartnership3BJG
Spółka europejskaSEEuropean CompanyCorporationJ3A3
Europejskie zgrupowanie interesów gospodarczychEEIGEuropean Economic Interest GroupingPartnership85PM

Cooperatives and mutuals

Polish NameEnglish TranslationStandardizedISO 20275
SpółdzielniaCooperativeCooperative8TOF
Spółdzielnia europejskaEuropean Cooperative Society (SCE)Cooperative(no ELF)
Spółdzielcza kasa oszczędnościowo-kredytowaCredit Union (SKOK)CooperativeH7OD
Towarzystwo ubezpieczeń wzajemnychMutual Insurance Society (TUW)CooperativeWNX1

State and public-sector entities

Polish NameEnglish TranslationStandardizedISO 20275
Przedsiębiorstwo państwoweState-Owned EnterpriseGovernment-Owned EntitySMIS
Instytut badawczy (including Łukasiewicz Research Network)Research InstituteGovernment-Owned EntityKM66
Instytucja gospodarki budżetowejBudgetary InstitutionGovernment-Owned EntityCY1M
Samodzielny publiczny zakład opieki zdrowotnejIndependent Public Healthcare Institution (SPZOZ)Government-Owned Entity13ZV

Associations and foundations

Polish NameEnglish TranslationStandardizedISO 20275
StowarzyszenieAssociationNonprofit OrganizationZZKE
Związek stowarzyszeńUnion of AssociationsNonprofit OrganizationZZKE
Jednostka terenowa stowarzyszenia posiadająca osobowość prawnąRegional Unit of an Association with Legal PersonalityNonprofit Organization(no ELF)
Stowarzyszenie kultury fizycznejSports AssociationNonprofit Organization(no ELF)
Stowarzyszenie kultury fizycznej o zasięgu ogólnokrajowymNationwide Sports AssociationNonprofit Organization(no ELF)
Stowarzyszenie ogrodoweGardening AssociationNonprofit Organization(no ELF)
FundacjaFoundationNonprofit Organization96XK

Trade unions and employer associations

Polish NameEnglish TranslationStandardizedISO 20275
Związek zawodowyTrade UnionNonprofit OrganizationLT9U
Jednostka organizacyjna związku zawodowego posiadająca osobowość prawnąOrganizational Unit of a Trade UnionNonprofit OrganizationLT9U
Związek zawodowy rolników indywidualnychIndividual Farmers Trade UnionNonprofit OrganizationLT9U
Ogólnokrajowy związek międzybranżowyNational Inter-Industry UnionNonprofit OrganizationWOK7
Związek pracodawcówEmployers AssociationNonprofit OrganizationWOK7
Federacja / Konfederacja związków pracodawcówFederation or Confederation of Employer AssociationsNonprofit OrganizationWOK7

Guilds, chambers, and business organizations

Polish NameEnglish TranslationStandardizedISO 20275
Cech rzemieślniczyGuild of CraftsmenNonprofit Organization5F76
Izba rzemieślniczaChamber of CraftsNonprofit Organization5F76
Związek Rzemiosła PolskiegoPolish Crafts UnionNonprofit Organization5F76
Izba gospodarczaChamber of CommerceNonprofit Organization5F76
Inna organizacja podmiotów gospodarczychOther Business Entity OrganizationNonprofit OrganizationFQ5Y
Inna organizacja społeczna lub zawodowaOther Social or Professional OrganizationNonprofit OrganizationFQ5Y

Agricultural and transport associations

Polish NameEnglish TranslationStandardizedISO 20275
Kółko rolniczeFarmers CircleNonprofit OrganizationFANM
Rolnicze zrzeszenie branżoweAgricultural Branch AssociationNonprofit Organization6OYI
Związek rolniczych zrzeszeń branżowychUnion of Agricultural Branch AssociationsNonprofit Organization6OYI
Związki rolników, kółek i organizacji rolniczychUnions of Farmers and Farmers CirclesNonprofit OrganizationWOK7
Zrzeszenie handlu i usługTrade and Services AssociationNonprofit Organization6OYI
Ogólnokrajowa reprezentacja zrzeszeń handlu i usługNational Representation of Trade AssociationsNonprofit Organization6OYI
Zrzeszenie transportuTransport AssociationNonprofit Organization6OYI
Ogólnokrajowe zrzeszenie międzybranżoweNational Inter-Industry AssociationNonprofit Organization6OYI

Sports bodies

Polish NameEnglish TranslationStandardizedISO 20275
Związek sportowySports UnionNonprofit OrganizationWOK7
Polski związek sportowyPolish Sports UnionNonprofit OrganizationWOK7

Public-benefit organizations and church entities

Polish NameEnglish TranslationStandardizedISO 20275
Inna osoba prawna będąca organizacją pożytku publicznegoOther Legal Person Acting as a Public Benefit OrganizationNonprofit Organization(no ELF)
Nieposiadająca osobowości prawnej organizacja pożytku publicznegoPublic Benefit Organization without Legal PersonalityNonprofit Organization(no ELF)
Kościelna osoba prawna będąca organizacją pożytku publicznegoChurch Legal Person Acting as a Public Benefit OrganizationNonprofit OrganizationSP4S
Nieposiadająca osobowości prawnej instytucja kościelna będąca organizacją pożytku publicznegoChurch Institution without Legal Personality Acting as a Public Benefit OrganizationNonprofit OrganizationSP4S

Sole traders (CEIDG)

Polish NameEnglish TranslationStandardizedISO 20275
Osoba fizyczna prowadząca działalność gospodarcząSole Trader (CEIDG)Sole ProprietorshipZVVM
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.
Personal data is redacted at the source by the Polish Ministry of Justice. Verified live on 2026-04-14: every name and PESEL the KRS API returns is masked to the first character (for example W***** L******** and PESEL 6**********). This applies to both the public KRS Open API (api-krs.ms.gov.pl) and the Wyszukiwarka API (wyszukiwarka-krs-api.ms.gov.pl) we use in production. Earlier in 2026 the Wyszukiwarka API returned full unredacted personal data, but the ministry tightened the redaction policy across both endpoints.Implications for the response payload:
  • legalRepresentatives[].individual.name.firstName and lastName are first-letter masked.
  • legalRepresentatives[].individual.identifiers.pesel is first-digit masked.
  • legalRepresentatives[].individual.birthDate and gender are derived from PESEL and therefore unavailable (the masked value cannot be parsed).
  • shareholders[].individual.name is also redacted for sp. z o.o. shareholder records.
  • The role (localName and standardized), structural fields, addresses, capital, and dates are all unaffected.
If you need full unredacted board member data for AML or KYC, contact us so we can route the request through a paid Centralna Informacja KRS document order or a licensed third-party data provider. Note that the ultimate beneficial owners datapoint is sourced from CRBR (a separate Polish register) and is not redacted: UBO records still come through with full names, birth dates, and nationalities. UBOs and legal representatives answer different questions and one is not a substitute for the other.

KRS Management Board Roles

Polish RoleEnglish TranslationStandardized Role
PREZES ZARZADUPresident of the Board / CEOManager
WICEPREZES ZARZADUVice President of the BoardManager
CZLONEK ZARZADUBoard MemberDirector
CZLONEK RADY NADZORCZEJSupervisory Board MemberDirector
PREZES RADY NADZORCZEJChairman of Supervisory BoardDirector
Polish RoleEnglish TranslationStandardized Role
PROKURENTProcurator (Authorized Signatory)Other
PROKURENT SAMOISTNYIndependent ProcuratorOther
PROKURENT LACZNYJoint ProcuratorOther
Polish RoleEnglish TranslationStandardized Role
WlascicielOwnerOwner

PESEL-Based Data Extraction

For KRS management board members and procurators, birth dates and gender would normally be extracted from PESEL numbers (Polish Personal Identification Number, 11 digits). The parser is in place, but the field is currently unavailable end-to-end because the KRS API returns PESEL as a single first digit followed by 10 asterisks (6**********). Until the ministry restores full PESEL access, birthDate and gender are not populated for Polish legal representatives.
PESEL format: YYMMDDCCCSS (11 digits)
  • YY — Year (last 2 digits)
  • MM — Month (with century indicator: 01-12 = 1900s, 21-32 = 2000s)
  • DD — Day of birth
  • CCC — Serial number
  • S — Gender digit (even = female, odd = male)
  • S — Checksum digit
When unredacted PESEL becomes available, the parser will extract birth date (year, month, day) and gender for each representative without code changes.
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 the wspolnicySpzoo section (Section 1 of the KRS extract).
Individual shareholder names are redacted by the KRS API, the same way representative names are. Where the KRS used to return a full first name and surname for an individual shareholder, the API now returns first-character masks (J***** K******). Corporate shareholder records are unaffected: the company name, KRS, NIP and REGON identifiers all come through intact, and you can use those identifiers to fetch the corporate shareholder’s own profile if needed.

Extraction Logic

SourceWhen UsedData Extracted
KRS wspolnicySpzoosp. z o.o. companies onlyName, 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 TextParsed Value
93.387 UDZIALOW O WARTOSCI 4.669.350,00 ZL93,387 shares
1 UDZIAL O WARTOSCI 50,00 ZL1 share
500 UDZIALOW500 shares
10.000 AKCJI10,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

IndicatorShareholder Type
Has KRS/NIP/REGON identifiersCompany
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 indicatorsIndividual

Limitations

Legal FormShareholder Data Available?Notes
sp. z o.o. (LLC)YesIndividual and corporate shareholders with share counts
S.A. (Joint-Stock)NoShareholders not listed in public KRS register
sp.k. / sp.j. (Partnerships)NoPartner data not structured in shareholder format
Associations / FoundationsNoNot applicable
CEIDG (Sole Proprietors)NoNot 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.

Ultimate Beneficial Owners

UBO data is sourced from CRBR (Centralny Rejestr Beneficjentów Rzeczywistych), the Polish Central Register of Beneficial Owners operated by the Ministry of Finance. CRBR is a separate register from KRS, established under Polish AML law (transposing 4AMLD/5AMLD), and it is mandatory for almost every entity registered in KRS to disclose its beneficial owners there. A beneficial owner in CRBR is the natural person who ultimately owns or controls the entity, defined by the Polish AML act as direct or indirect ownership above 25%, or any other form of effective control. Where no natural person meets that threshold (typical for state-owned entities, listed companies, and complex structures), CRBR records senior managing officials as a fallback per the AML directive.
CRBR is not redacted. Unlike the KRS API, CRBR returns full first names, surnames, birth dates, nationalities, and a description of how control is exercised. The redaction policy the Ministry of Justice applies to KRS does not apply to CRBR, because the whole point of CRBR is to expose this data for AML and KYC compliance.
Each UBO record returned by the API contains:
FieldSourceNotes
name.firstName / lastName / fullNameCRBRUnredacted
birthDateCRBRDay, month, year
nationalityCRBRISO 3166-1 alpha-2
control.types[]CRBROne or more of ownership-of-shares, significant-influence-or-control, senior-management-position
control.descriptionCRBRPolish-language description of how the control is exercised, as filed by the entity
control.details[].natureCRBRdirect or indirect
control.details[].monetaryAmountCRBRWhen the filing expresses the stake as a PLN or EUR amount instead of a percentage
CRBR returns no UBOs for entities that are exempt from disclosure (state-owned enterprises, the State Treasury, certain public-benefit organizations) or for entities whose ownership chain resolves to a listed parent. In those cases the response contains an empty ultimateBeneficialOwners array, which is correct, not a gap. UBO data is fetched on demand. Use either the dedicated endpoint topo api ubo PL <krs> / GET /v2/company/{id}/ubo, or include ultimateBeneficialOwners in the dataPoints array on a profile request. The ubo_extract document SKU (pol-ubo-data) returns the full CRBR PDF excerpt for filing in compliance dossiers.

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.
PKD (Polish) = NACE Rev. 2 (European) -> ISIC Rev. 4 (International)
ClassificationSourceExampleAI Inferred?
PKD / NACEKRS (przedmiotDzialalnosci) or CEIDG (mainPkd / otherPkd)62.01.ZNo (official)
ISICDerived from NACE or AI-inferred6201Sometimes
The KRS provides both the main activity (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

SourceClassifications returnedNotes
KRSNACE + ISICFrom dzial3.przedmiotDzialalnosci (main + secondary PKD codes)
CEIDGPKD + NACE + ISICFrom mainPkd and otherPkd fields, AI-analyzed

Data Availability Matrix

Data TypeKRS CompaniesCEIDG (Sole Proprietors)Notes
Company ProfileAsyncAsyncFull data for KRS, limited for CEIDG
Legal RepresentativesYes (names redacted)YesKRS: roles + structure available; first names, surnames and PESEL are first-character masked at the source. CEIDG: owner mapped from CEIDG metadata.
ShareholdersYes (sp. z o.o. only, individual names redacted)NoOnly for Limited Liability Companies. Corporate shareholder identifiers (KRS, NIP, REGON) are intact; individual shareholder names are first-character masked.
Other Key PersonsNoNoNot currently extracted
Ultimate Beneficial OwnersYesNoFrom CRBR (Central Register of Beneficial Owners)
Activity CodesYesYesPKD codes from KRS or CEIDG
DocumentsYesYesDifferent document sets per register type
Financial StatementsYesNoFrom ekrs.ms.gov.pl, automatic XML-to-PDF conversion
EstablishmentsNoNoNot currently extracted
Legend: Yes = Available | No = Not Available | Async = Asynchronous processing

Documents by Company Type

KRS Companies (prefix: krs-)

Document TypeAPI CategoryFormatSKUAvailabilityNotes
Current KRS ExtracttradeRegisterExtractPDFpol-register-extractActive companies onlyAktualny odpis z KRS
Historical KRS ExtractotherDocuments[]PDFpol-historical-register-extractAll companiesPelny odpis historyczny z KRS (full history)
UBO ExtractotherDocuments[]PDFpol-ubo-extractWhen UBO data existsWyciag z CRBR o beneficjentach rzeczywistych
Financial StatementsfinancialStatements[]PDF (auto-converted from XML)pol-financial-statementsWhen filedVarious types from ekrs.ms.gov.pl

CEIDG Sole Proprietors (prefix: nip-)

Document TypeAPI CategoryFormatSKUAvailabilityNotes
CEIDG CertificatetradeRegisterExtractPDFpol-register-extractAll entitiesZaswiadczenie z CEIDG
Representatives DocumentotherDocuments[]PDFpol-representativesAll entitiesInformacja o pelnomocnikach
Current KRS Extract availability: The current extract (tradeRegisterExtract) is only available for active companies. Inactive, dissolved, or deleted companies can only access the historical extract (otherDocuments[]), which contains the full history including closure details.

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.
Due to technical limitations of the Polish financial documents portal, the document format (XML vs PDF) is not available in the availableDocuments listing. The format field will be undefined during listing and is only determined when the document is actually downloaded.

Example API Responses

All examples use placeholder data. Query: POST /v2/company with { "id": "<id>", "countryCode": "PL", "dataPoints": ["company", "legalRepresentatives"] }
{
  "company": {
    "id": "krs-0001234567",
    "countryCode": "PL",
    "identifiers": { "krs": "0001234567", "nip": "1234567890", "regon": "123456789", "vatNumber": "1234567890" },
    "legalName": "Przyklad Technologia sp. z o.o.",
    "registrationDate": "2018-03-20",
    "status": { "localName": "AKTYWNA", "active": true, "statusDetails": { "status": "ACTIVE" } },
    "legalForm": { "localName": "Spółka z ograniczoną odpowiedzialnością", "englishTranslation": "Limited Liability Company (sp. z o.o.)", "standardized": "Limited Liability Company", "iso20275Code": "O7XB" },
    "capital": { "amount": 50000, "currency": "PLN" },
    "activities": {
      "NACE": [
        { "code": "62.01.Z", "description": "DZIALALNOSC ZWIAZANA Z OPROGRAMOWANIEM", "isAIInferred": false },
        { "code": "62.02.Z", "description": "DZIALALNOSC ZWIAZANA Z DORADZTWEM W ZAKRESIE INFORMATYKI", "isAIInferred": false }
      ]
    },
    "legalAddress": { "addressLine1": "Aleja Jana Pawla II 29", "city": "Warszawa", "postalCode": "00-867", "countryCode": "PL" }
  },
  "legalRepresentatives": [
    { "type": "individual", "role": { "localName": "PREZES ZARZĄDU", "standardized": "Manager" }, "individual": { "name": { "fullName": "J** K*******", "firstName": "J**", "lastName": "K*******" }, "identifiers": { "pesel": "8**********" }, "nationality": "PL" } },
    { "type": "individual", "role": { "localName": "CZŁONEK ZARZĄDU", "standardized": "Director" }, "individual": { "name": { "fullName": "A*** N****", "firstName": "A***", "lastName": "N****" }, "identifiers": { "pesel": "7**********" }, "nationality": "PL" } }
  ],
  "shareholders": [
    { "type": "individual", "individual": { "name": { "fullName": "J** K*******" } }, "numberOfShares": 500, "source": "KRS" },
    { "type": "company", "company": { "id": "krs-0009876543", "countryCode": "PL", "legalName": "Holding sp. z o.o.", "identifiers": { "krs": "0009876543" } }, "numberOfShares": 500, "source": "KRS" }
  ]
}
Note: First names, surnames and PESEL of individual representatives and shareholders are first-character masked at the source by the KRS API. The example above shows the actual on-the-wire shape for a real Polish company today. PESEL-derived birthDate and gender are unavailable for the same reason.
{
  "company": {
    "id": "krs-0007654321",
    "countryCode": "PL",
    "identifiers": { "krs": "0007654321", "nip": "9876543210", "regon": "987654321", "vatNumber": "9876543210" },
    "legalName": "Stara Firma S.A.",
    "registrationDate": "2005-01-10",
    "status": { "localName": "WYKRESLONA Z REJESTRU", "active": false, "statusDetails": { "status": "CLOSED", "closureReason": "ADMINISTRATIVE_DISSOLUTION", "closureDate": "2023-06-30" } },
    "legalForm": { "localName": "Spółka akcyjna", "englishTranslation": "Joint-Stock Company (S.A.)", "standardized": "Corporation", "iso20275Code": "FJ0E" },
    "legalAddress": { "addressLine1": "Marszalkowska 10", "city": "Warszawa", "postalCode": "00-001", "countryCode": "PL" }
  },
  "legalRepresentatives": [
    { "type": "individual", "role": { "localName": "PREZES ZARZĄDU", "standardized": "Manager" }, "individual": { "name": { "fullName": "P**** W*********" }, "identifiers": { "pesel": "6**********" }, "nationality": "PL" } }
  ],
  "shareholders": []
}
Note: Dissolved companies are mapped from the 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. Personal data is first-character masked the same way as for active companies.
{
  "company": {
    "id": "nip-1234567890",
    "countryCode": "PL",
    "identifiers": { "nip": "1234567890", "regon": "123456789", "vatNumber": "1234567890" },
    "legalName": "Jan Kowalski Uslugi Informatyczne",
    "registrationDate": "2020-01-15",
    "status": { "localName": "AKTYWNY", "active": true, "statusDetails": { "status": "ACTIVE" } },
    "legalForm": { "localName": "Osoba fizyczna prowadząca działalność gospodarczą", "englishTranslation": "Sole Trader (CEIDG)", "standardized": "Sole Proprietorship", "iso20275Code": "ZVVM" },
    "activities": {
      "PKD": [
        { "code": "62.01.Z", "description": "Dzialalnosc zwiazana z oprogramowaniem" }
      ]
    },
    "legalAddress": { "addressLine1": "Krakowska 5", "city": "Krakow", "postalCode": "31-001", "countryCode": "PL" }
  },
  "legalRepresentatives": [
    { "type": "individual", "role": { "localName": "Wlasciciel", "englishTranslation": "Owner", "standardized": "Owner" }, "individual": { "name": { "fullName": "Jan Kowalski", "firstName": "Jan", "lastName": "Kowalski" }, "nationality": "PL" } }
  ],
  "shareholders": []
}
Note: CEIDG entities have the entrepreneur mapped as the sole legal representative with role “Wlasciciel” (Owner). No shareholders, UBOs, or financial statements are available.
Query with "dataPoints": ["ultimateBeneficialOwners"]:
{
  "ultimateBeneficialOwners": [
    {
      "name": { "fullName": "JAN KOWALSKI", "firstName": "JAN", "lastName": "KOWALSKI" },
      "birthDate": { "year": 1985, "month": 6, "day": 15 },
      "nationality": "PL",
      "control": {
        "types": ["ownership-of-shares"],
        "description": "WSPÓLNIK SPÓŁKI Z O.O. (2500 PLN)",
        "details": [
          {
            "nature": "direct",
            "type": "shares",
            "monetaryAmount": { "amount": 2500, "currency": "PLN", "formatted": "2500 PLN" }
          }
        ]
      }
    },
    {
      "name": { "fullName": "KLAUS RÖHRIG", "firstName": "KLAUS", "lastName": "RÖHRIG" },
      "birthDate": { "year": 1977, "month": 7, "day": 21 },
      "nationality": "AT",
      "control": {
        "types": ["significant-influence-or-control"],
        "description": "POŚREDNIA KONTROLA NAD PODMIOTEM DOMINUJĄCYM WOBEC SPÓŁKI",
        "details": [
          {
            "nature": "indirect",
            "type": "shares"
          }
        ]
      }
    }
  ]
}
Note: UBO records are unredacted and verified live. CRBR is operated by the Polish Ministry of Finance, not by the Ministry of Justice that runs KRS, and the redaction policy on KRS does not apply here. 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.
Documents are returned when "dataPoints": ["availableDocuments"] is requested.For active KRS companies:
API CategoryDocumentNotes
tradeRegisterExtractAktualny odpis z KRSCurrent extract, active companies only
otherDocuments[]Pelny odpis historyczny z KRSFull historical extract
otherDocuments[]Wyciag z CRBRUBO extract, when UBO data exists
financialStatements[]Various financial documentsFrom ekrs.ms.gov.pl
For inactive KRS companies:
API CategoryDocumentNotes
otherDocuments[]Pelny odpis historyczny z KRSFull historical extract (only document available)
For CEIDG entities:
API CategoryDocumentNotes
tradeRegisterExtractZaswiadczenie z CEIDGCEIDG certificate
otherDocuments[]Informacja o pelnomocnikachRepresentatives document

Quirks & Gotchas

QuirkDetails
Prefixed identifiers requiredCompany 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 collideBoth 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 unavailableKRS 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 nameCompanies in liquidation are identified by “W LIKWIDACJI” appearing in the legal name, not from a dedicated status field in KRS.
Legal forms are a closed enumPoland uses a closed enum of 51 legal forms sourced directly from the registers (50 from the KRS July 2024 snapshot of 849,757 entities plus one canonical CEIDG sole-trader entry). Unknown values are rejected with an invalid error at ingestion time. No AI fallback.
ISO 20275 is incomplete for PolandGLEIF’s ELF list publishes codes for 33 of the 51 forms; the remaining 18 (granular stowarzyszenie subtypes, public-benefit organizations, church entities) have no ELF. We attach ELF codes where they exist for LEI matching and ignore the gap elsewhere.
Personal data is redacted at the sourceVerified live on 2026-04-14: every name and PESEL the KRS API returns is first-character masked (W***** L********, PESEL 6**********). This applies to both the public KRS Open API and the Wyszukiwarka API we use in production. Names of board members, procurators, individual shareholders, and PESEL-derived birth date and gender are therefore unavailable until the ministry restores access. Roles, addresses, capital, identifiers, and structural fields are unaffected.
PESEL parser is dormantThe PESEL-to-birth-date and PESEL-to-gender parser is in place but unreachable in practice because PESEL is masked at the source. When unredacted PESEL becomes available again, the parser will populate birthDate and gender without code changes.
Procurators as legal representativesProcurators (authorized signatories) from KRS are mapped as additional legal representatives with the PROKURENT role, standardized as Other.
Financial documents may be XMLFinancial 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 resilienceThe 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 limitedCEIDG (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 codesPolish PKD classification is structurally identical to NACE Rev. 2. PKD codes are mapped directly as NACE codes without transformation.
Dissolved companies use fallback endpointWhen 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 companiesThe Aktualny odpis z KRS (current trade register extract) is unavailable for closed/dissolved companies. Use the historical extract instead.
UBO data from CRBRUBO data is fetched from the CRBR registry. This may occasionally be slower than direct API calls.