What this is
A searchable database of Poland's accounting firms, companies whose main
registered business is bookkeeping, accounting and tax work. In Poland every company declares
an industry code called a PKD code (Polska Klasyfikacja Działalności, the
"Polish Classification of Activities", the official list of business-activity categories).
The code for accounting/bookkeeping is 69.20.Z, and this database covers the
companies whose main PKD code is that. Each row is one company, with who they are, where they
are, how big they are, how profitable they are, and how old their owner is.
Who is included (scope)
Only incorporated companies, businesses that are their own legal entity,
such as a sp. z o.o. (spółka z ograniczoną odpowiedzialnością = a private
limited-liability company, the Polish equivalent of an "Ltd" or "LLC"). These are registered
in the KRS (Krajowy Rejestr Sądowy = the National Court Register, Poland's
official register of companies). There are ~17,157 such accounting firms.
Not included: sole proprietors (one-person businesses, called
JDG, jednoosobowa działalność gospodarcza), which are registered in a
separate system called CEIDG. They are excluded because they do not file
public financial statements (so there would be no revenue/profit data for them anyway), and
accessing that register requires a Polish national identity we do not have.
Where the data comes from (sources)
- Rejestr.io: a commercial company-data service that indexes the Polish
registers. We use it for the initial list of accounting firms and for owners' birth
dates.
- KRS Open API: the free official company-register service run by the
Ministry of Justice. We use it for each company's legal form, registered address, and
business-activity codes.
- RDF / e-sprawozdania: the RDF (Repozytorium
Dokumentów Finansowych = "Financial Documents Repository") is the official government
portal where companies file their yearly accounts electronically. An
e-sprawozdanie finansowe is that filing: a standardized digital (XML)
financial statement defined by the Ministry of Finance, containing the balance sheet
and the profit-and-loss account. We use it for revenue, profit, assets, etc.
- GUS / REGON: GUS (Główny Urząd Statystyczny =
Poland's Central Statistical Office) runs the REGON business register.
We use it for the official employment-size band and precise geographic codes. (Being
connected; not yet live.)
A few more terms
- NIP: Numer Identyfikacji Podatkowej = the company's tax identification
number (like a VAT/tax ID). We use it as the reliable key to match a financial
statement to the right company.
- REGON: the national statistical number every business has.
- Voivodeship (województwo): Poland's top-level region, like a state or
province. Below it come the powiat (county) and gmina
(municipality).
- Size class: under Polish accounting law companies are grouped as
mikro / mała / duża-średnia (micro / small / medium-large) based on
thresholds of assets, revenue and headcount.
What each company record contains
- Identity: name, KRS / NIP / REGON numbers, legal form, and status
(active, suspended, in liquidation, bankrupt, or deregistered).
- Location: region, then county, municipality and city.
- Size: the accounting size class above.
- Financials (latest filed year, in Polish złoty / PLN): revenue,
operating profit, gross profit, net profit, total assets, equity, cash, and short- and
long-term liabilities. A
last_available_year field says which year the
numbers are from.
- Owner age: the age of the company's lead owner (worked out from their
birth date).
- Coverage flags (
has_financials,
has_owner_age, ...): tell you whether we have that piece of data for a
company, so a blank reads as "not collected yet", never as "zero".
Current coverage (2026-07-17)
- 17,157 companies total; 15,258 active.
- Identity, status, size class: ~100%.
- Geography: ~92% (the rest are mostly deregistered companies with no
current registry extract).
- Owner age (lead owner): ~21%.
- Financials: ~4% and rising. The financial-statement collection is
running now and coverage climbs continuously.
- Employment size (REGON): pending an access key.
Target coverage
- Identity / geography / status / size: ~100% (essentially
complete).
- Financials: every active company that has filed a digital statement.
Note that not all do; deregistered firms and some very small ones file on paper or not
at all, so full coverage means "all that exist to collect", realistically a large
majority of active firms.
- Owner age: expand from the lead owner to all firms with a known owner,
and later to every shareholder of each firm (to support succession
analysis, e.g. finding firms whose owners are near retirement).
- Employment size: 100% once the statistics-office connection is
live.
Methodology (how it is built)
- We start from the official list of accounting companies and enrich each one from the
sources above.
- Financial statements are downloaded from the government portal and read from their
official XML format.
- Every statement is attributed to the company named inside the document
(matched by its tax ID / NIP), not by how the file was retrieved. This means a
financial figure is always tied to the correct company, or left blank, never shown
against the wrong one.
- Money figures are in PLN (Polish złoty) and come from each company's
most recently filed statement; the year is shown per company.
- The data refreshes periodically as new filings appear.
Caveats / limitations
- Financials are the latest single year we can find per company (mostly
2024-2025, with an older tail for companies that stopped filing).
- Owner age is the lead owner only for now (one person per company);
full multi-owner data is a planned enhancement.
- Sole proprietors are excluded (see scope); this is a database of
incorporated accounting firms.
- Some companies have no digital financial statement at all; they appear
with identity and location but blank financials, flagged accordingly.
- PKD 69.20 also covers in-house shared-service and bookkeeping centers of larger
corporate groups (Pandora, Carlsberg, Stellantis and similar). They carry the same
registry code as client-facing accounting firms, so they appear in this dataset.
The "Shared-service centers" filter excludes them by default using a name
heuristic (about 51 firms). The heuristic is imperfect: set it to "Only SSCs"
to audit what it catches.
- The USD toggle uses a fixed NBP exchange rate stored in config.yaml, not a live
rate.