Financial statements of Polish companies, ready for analysis
Over 3 million full statements from the Polish company register (KRS), mapped onto one schema: 94 line items from the balance sheet, income statement and cash flow. Plug them into Claude, your BI stack or your own code. One flat monthly fee, unlimited queries.
Available via MCP SQL REST API file export
Why kwerenda
Financial data is sold today as if analysis were a cost, not the work itself
Three differences that decide how much you actually get analysed.
You pay per query
A credit model means you calculate whether you can afford an analysis before you run it. Screening 500 companies becomes a budget decision, not an analytical one.
credits per queryYou pay for access
A flat monthly fee. Screening five hundred companies costs the same as screening one. What is worth checking is the analyst's call, not the budget's.
flat feeYou get the top of the balance sheet
Revenue, profit, total assets. Everything below that (provisions, liabilities split by maturity, costs by nature, cash flows) you read by hand out of a PDF.
~15 line itemsYou get the whole statement
We parse full documents, not selected fields: from the cash flow statement to the notes. Every line item ready to query, with no PDF reading.
94 line itemsYou cannot plug it into anything
A search box in a browser and an Excel export. Your AI assistant has no access to the data, so you end up copy-pasting anyway.
Excel exportYou connect in five minutes
MCP for Claude and ChatGPT, SQL for your BI, REST API for your own code. One config entry and your agent queries the data itself.
MCP · SQL · APIAccess
One database, any form of access
MCP for AI assistants, SQL for BI and notebooks, REST API for your own code. The same data set; switch whenever you like.
{
"mcpServers": {
"kwerenda": {
"command": "npx",
"args": ["-y", "@kwerenda/mcp-server"],
"env": {
"KWERENDA_API_KEY": "pk_live_••••••••"
}
}
}
}
Find the bottom percentile of companies by pension reserves, among those with a reserve above zero, headcount above 4, and revenue above one million.
-
kwerenda.screen 14,198 companiesmetric="pension_reserve", percentile="P10", filters… 1.4 s
The database matching these conditions holds 14,198 companies. The bottom-percentile threshold (P10) is PLN 7,502.55 in reserves. About 142 companies fall below it.
| Company | KRS | Pension reserve | Headcount | Revenue |
|---|---|---|---|---|
| Bratex sp. z o.o. | 0000112837 | 15.00 | 9.7 | 5,512,579 |
| Kormatex sp. z o.o. | 0000221934 | 31.00 | 20.0 | 2,756,497 |
| Ligmet sp. z o.o. | 0000347612 | 157.63 | 16.0 | 7,208,497 |
| Norvex sp. z o.o. | 0000398201 | 252.46 | 11.4 | 2,145,689 |
| Polstal sp.k. | 0000450128 | 439.70 | 128.0 | 117,271,739 |
Prefer a file or your own instance? We also deliver full database dumps as files and dedicated instances on your infrastructure.
Data
94 line items from every statement, not fifteen
Competitors give you the top of the balance sheet. We parse the full documents and reduce them to one canonical model: the balance sheet, both variants of the income statement, the cash flow statement, bank and fund fields, and the narrative from the notes.
| Typical vendor | kwerenda | |
|---|---|---|
| Financial line items | ~15 | 94 |
| Cash flow statement | rarely | 13 fields |
| Liabilities by maturity | no | yes |
| Costs by nature | no | yes |
| Notes to the statements | no | parsed |
| Ownership structure | yes | yes |
| Connection graph | yes | yes |
| Access over MCP | no | yes |
One schema, whatever the company happened to file
Statements reach the KRS registry in several dozen XML variants, in two income statement layouts, under separate schemas for banks and funds. What comes out on our side is a single record, identical for every company and year.
- Year-over-year comparison
- Every record carries the current and the previous year in an identical structure. You can compute trends up front from a single document, without stitching filings together.
- Both income statement variants
- We support both the comparative and the calculatory layout. Our records carry both the shared line items and the ones specific to each variant.
- Banks, funds, consolidations
- Bank, investment fund and consolidated statements get extra fields in the same record, instead of a separate schema and a separate code path on your side.
- Not only numbers
- Valuation methods, how the result was determined, the going-concern assumption and the merger accounting stay with the record.
- Source documents
- Every record links back to its specific source document, available through the API and the MCP server too. You can pull the source XML in a few seconds.
{
"report_type": "JednostkaInnaWZlotych",
"schema_version": "1.2",
"is_consolidated": false,
"period_start": "2024-01-01",
"period_end": "2024-12-31",
"currency": "PLN",
"pnl_variant": "POROWNAWCZY",
"is_going_concern": true,
"average_annual_employment": "143.50",
"current_year": {
"assets": "48231000.00",
"assets_current_inventory": "6120000.00",
"equity": "21044000.00",
"liabilities_short_term_trade": "8317000.00",
"pnl_revenue_net_sales": "87412000.00",
"pnl_comp_amortization": "3180000.00",
"cash_flow_operating_net": "9903000.00"
},
"previous_year": { "…": "same structure" }
}
Balance sheet: assets 24
Balance sheet: equity and liabilities 21
Income statement 9
Income statement: comparative variant 7
Income statement: calculatory variant 4
Cash flow statement 13
Banks 7
Investment funds 4
Consolidated statements 4
Changes in equity 1
Plus metadata on every report 14
Missing a field you need?
We parse full documents, not a selection of line items. If something is in the statement but not in the model, we add it. Usually within days.
Coverage
Not only financial statements
A statement tells you what a company earned. The registers tell you who stands behind it. We take both from the same public sources and join them on the KRS number, so you query financials and owners together instead of stitching databases on company names.
Ownership structure
Shareholders and members recorded in the KRS, with the number and value of their shares. Where the holder is another company, we link it by KRS number to its own record, so an ownership chain can be walked upwards in a query rather than by hand.
Representatives
Management board, commercial proxies and supervisory board: who represents the company, in what role, and under what rules of representation. The same people can be found across every company they sit on.
Beneficial owners (UBO)
Filings from the Central Register of Beneficial Owners: the natural persons who actually control the company - including when they do so through a chain of other entities.
Same channels as the statements: MCP, SQL, REST API and file export.
Methodology
Where the data comes from and why you can trust it
Four steps from a document in the register to a record in your query.
Source
Financial statements from public sources: the Financial Document Repository (RDF), the KRS registry, CRBR.
Parsing
Statements reach the register as XML in dozens of schema variants: standard, small and micro entities, banks, funds, consolidated statements, each in several versions. Every variant has its own parser. If a document carries a field the model lacks, we add it.
Normalisation
Different statement layouts (comparative, simplified, full) are mapped onto one common schema. Line items from different years and different reporting formats are comparable, with no manual mapping.
Coverage and updates
The database covers hundreds of thousands of Polish companies and millions of statements. New statements usually reach the database within a few hours of publication; on a standard contract it can occasionally take longer than a day. For clients who need speed we bring that down to an hour. We check for updates on monitored companies every day.
Sample
Download a data sample
Download the CSV and see what our model looks like before you connect full access.
kwerenda_probka_1000_sprawozdan.csv
1,000 reports, 1.1 MB
Before you open the file
- Amounts in PLN; "in thousands" reports converted to PLN
- Empty cell: the field is not in that report type's schema. 0.00 is a reported zero
- Average fill rate 41%, depending on the reporting obligation
- No contact data or accounting-policy descriptions (both in the full database)
- One, most recent report per company; full history since 2018 in the database
| name | main_pkd_code | period_end | pnl_revenue_net_sales_cy | equity_cy |
|---|---|---|---|---|
| TERG SPÓŁKA AKCYJNA | 4754Z | 2025-03-31 | 20281953846.00 | 2026869599.28 |
| ARCELORMITTAL POLAND S.A. | 2410Z | 2025-12-31 | 19117435000 | 4739461000 |
| W.EG Polska Sp. zo.o. | 4690Z | 2025-12-31 | 1229551798.23 | 8682522.49 |
| Gdańskie Wodociągi Sp. z o.o. | 3600Z | 2025-12-31 | 391307663.11 | 38369278.13 |
| CELMA INDUKTA SPÓŁKA AKCYJNA | 2711Z | 2025-12-31 | 293574000 | 140274000 |
215 columns: registry and address data, statement metadata, and financial line items for the current (_cy) and previous (_py) year.
Use cases
What our clients use it for
Investment screening
Filter thousands of companies on any combination of financial metrics and trends, not on the three fields you happen to have.
Due diligence
A target's full financial history, ownership structure and personal connections in a single query.
Sector analysis and benchmarking
Compare a target against the full population of companies in a NACE code, not against the sample you can afford.
Portfolio monitoring
Automatic detection of new statements and changes at the companies you track.
“It works, it is current, and we do not have to count queries. That is all we need.”
Pionier Broker Sp. z o.o.
Pricing
You pay for access, not per query
A flat monthly fee, agreed individually. No credits, no counting, no overage charges.
Monthly subscription
Custom quote
We set the fee after the demo, once we know which data you need and in what form.
Included in every subscription
- MCP, SQL and REST API
- unlimited queries
- 94 financial line items per statement
- history back to 2018
- new fields on request
- source data (XML) for every record
On request
- dedicated instance
- SLA and updates within the hour
- onboarding support
- integration with your infrastructure
- full database dumps as files
Unlimited queries under fair use.
FAQ
Frequently asked questions
The questions we hear most often before a contract is signed.
Ask your own questionThe data comes from public sources: the Financial Document Repository, the KRS registry, CRBR. A commercial licence is part of the engagement: you may use the data in client reports and in your own products.
Usually within a few hours of publication; on a standard contract it can occasionally take longer than a day. If speed matters to you, the contract can bring that down to an hour. We scan the sources daily.
Every statement carries its filing date and reporting-period dates, so a missing year is visible at once. We never interpolate or synthesise data: you see exactly what the company filed, and what it did not.
Data on people holding positions in company bodies comes from the public KRS registry. Processing it for statistical purposes is fully permitted. Sensitive data such as PESEL numbers is cryptographically anonymised.
We can tailor the contract to each client. Get in touch and we'll work through the details of the arrangement together.
We parse full documents, not a selection of line items. If a field exists in the statement but not in the database, we add it, usually within days.
Setting up MCP means entering the right details into the configuration of Claude, ChatGPT, or another AI tool. From receiving your access credentials to your first query takes about 5 minutes. No code, no infrastructure, no ETL.