KRS Financial Statements Scraper — Poland Company Filings
Pricing
from $8.00 / 1,000 financial statement records
KRS Financial Statements Scraper — Poland Company Filings
Get Polish KRS financial statement filings by KRS number: company name, NIP, REGON, document type, reporting period and filing date. USD 10 per 1,000 records.
Pricing
from $8.00 / 1,000 financial statement records
Rating
0.0
(0)
Developer
Muhammad Afzal
Maintained by CommunityActor stats
0
Bookmarked
8
Total users
7
Monthly active users
0.8 hours
Issues response
17 days ago
Last modified
Categories
Features
Share
KRS Financial Statements Scraper returns the financial statement filings of Polish companies from the official National Court Register (Krajowy Rejestr Sądowy, KRS): company name, NIP, REGON, document type, reporting period and filing date for every filed document, looked up by KRS number. It is built for credit analysts, due-diligence teams and B2B researchers who need sprawozdania finansowe KRS records in bulk, and it costs USD 10.00 per 1,000 records on the FREE tier (USD 8.00 per 1,000 on GOLD).
Figures and files are not included (checked 2026-10-27). Balance-sheet and profit-and-loss figures, XML fields and document files are held in the Ministry of Justice financial documents repository (Repozytorium Dokumentów Finansowych), which blocks automated access. The Actor does not try to get around that block, so every record comes from the KRS register's filing entries with standardizedFields: null and no saved files, and the run summary says so. No file event is charged.
What data does the KRS financial statements scraper return?
Each dataset row is one filed document for one company:
| Field | What it contains |
|---|---|
companyName | Legal name from the current KRS register extract, for example ORLEN SPÓŁKA AKCYJNA |
krs | 10-digit KRS number |
nip, regon | Tax identification number and statistical number from the register |
documentType | financial_statement, approval_resolution, audit_report, activity_report or sustainability_report |
periodMajorYear | Reporting year, taken from the end of the period |
periodFromDate, periodToDate | Reporting period as YYYY-MM-DD |
filingDate | Date the document was filed with the register |
isCorrection | false for register filing entries |
preparationDate, isIasCompliant, schemaName, schemaVersion | Repository details; null for register filing entries |
standardizedFields | Reserved for six figures from the filed XML (totalAssets, totalEquity, totalLiabilities, netRevenue, netProfitLoss, operatingProfitLoss); null while the repository blocks automated access |
extractedFields | Reserved for every XML value as a flat map; null while the repository blocks automated access |
mainDocument, savedFiles | Source file name and saved-file keys; null and empty for register filing entries |
language, recordId, source, sourceUrl, scrapedAt | Language code, stable record ID, data source label, source link and collection time |
The run summary is saved as OUTPUT in the default key-value store: outcome (DATA, PARTIAL, EMPTY, FAILED or REJECTED), records and files delivered, charged events, a per-company breakdown and warnings.
How do I get the financial statements of a Polish company by KRS number?
Enter one or more KRS numbers, choose the reporting years and run. Leading zeros and spaces are optional; 28860 becomes 0000028860.
- KRS numbers: 1 to 50 per run. Duplicates are removed.
- First and last reporting year: an inclusive window, for example 2023 to 2025.
- Document types: keep the default
financial_statement, add others such asaudit_report, or clear the list to get every filed document. - Maximum results: total records across all companies, 1 to 5,000 (default 100).
- Save document files, Include standardized financial fields and Include all extracted XML fields are kept for compatibility. While the repository blocks automated access they return nothing, nothing is charged for files, and the run summary carries a warning.
Default input (one company, three years):
{"krsNumbers": ["0000028860"],"fromYear": 2023,"toYear": 2025,"documentTypes": ["financial_statement"],"includeStandardizedFields": true,"includeExtractedFields": false,"downloadFormat": "none","maxResults": 100}
Several companies with every document type:
{"krsNumbers": ["0000028860", "0000005239"],"fromYear": 2021,"toYear": 2025,"documentTypes": [],"maxResults": 500}
The default input returned three records (2023, 2024 and 2025 statements) in about 6 seconds in a cloud run on 2026-10-27.
Does it return balance sheet and profit-and-loss figures?
No. The figures are in the filed XML documents, which only the financial documents repository serves, and that repository blocks automated access. The Actor does not try to get around the block. You get the company, document type, period and filing date from the register's filing entries, with standardizedFields and extractedFields set to null and a warning in OUTPUT. Each record's source is Official KRS Register (Ministerstwo Sprawiedliwości).
When should I use it, and when not?
Use it when you need a list of which financial documents Polish companies filed, for which periods and when, for credit monitoring, KYC files, supplier checks or research datasets.
Use another Actor when:
- You need bankruptcy, restructuring or debtor records for a Polish company, searchable by KRS or NIP: Poland KRZ National Debtor Registry Scraper.
- You need US company registry records: Sunbiz Scraper for Florida, New York Business Entity Search Scraper for New York, or Multi-State Corporate & Business Entity Registry for Colorado, Connecticut and Oregon.
- You need parsed financial figures or the statement files: this Actor cannot read them while the repository blocks automated access.
- You only know a company name or NIP: this Actor looks up KRS numbers only.
How do I run it from code?
JavaScript with apify-client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('muhammadafzal/poland-krs-financial-statements-scraper').call({krsNumbers: ['0000028860'],fromYear: 2023,toYear: 2025,documentTypes: ['financial_statement'],maxResults: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) console.log(item.companyName, item.periodMajorYear, item.filingDate);
Python with apify-client:
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("muhammadafzal/poland-krs-financial-statements-scraper").call(run_input={"krsNumbers": ["0000028860", "0000005239"],"fromYear": 2022,"toYear": 2025,"documentTypes": [],})for item in client.dataset(run.default_dataset_id).iterate_items():print(item["krs"], item["documentType"], item["periodMajorYear"], item.get("filingDate"))
Use it from an AI assistant
KRS Financial Statements Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add the single-tool URL https://mcp.apify.com/?tools=muhammadafzal/poland-krs-financial-statements-scraper to your client and ask, for example: "List the financial statement filings for KRS 0000028860 from 2023 to 2025 with their filing dates." Each record is charged at the prices below, so mention a result limit for large lists.
What does the output look like?
Two records from the 2026-10-26 run (shortened):
[{"recordId": "0000028860-financial_statement-2024-193","krs": "0000028860","nip": "7740001454","regon": "61018820100000","companyName": "ORLEN SPÓŁKA AKCYJNA","documentType": "financial_statement","filingDate": "2025-06-17","periodMajorYear": 2024,"periodFromDate": "2024-01-01","periodToDate": "2024-12-31","isCorrection": false,"standardizedFields": null,"savedFiles": [],"source": "Official KRS Register (Ministerstwo Sprawiedliwości)","scrapedAt": "2026-10-26T07:49:02.477Z"},{"recordId": "0000028860-financial_statement-2025-210","krs": "0000028860","companyName": "ORLEN SPÓŁKA AKCYJNA","documentType": "financial_statement","filingDate": "2026-06-16","periodMajorYear": 2025,"periodFromDate": "2025-01-01","periodToDate": "2025-12-31","standardizedFields": null,"savedFiles": []}]
How much does it cost to pull KRS financial statements?
The Actor uses pay-per-event pricing, and platform usage is included in the event prices.
| Event | FREE | BRONZE | SILVER | GOLD | PLATINUM / DIAMOND |
|---|---|---|---|---|---|
| Financial statement record (one dataset row) | USD 0.010001 | USD 0.00975 | USD 0.0095 | USD 0.008 | USD 0.008 |
| Saved document file (only when a file is saved) | USD 0.005001 | USD 0.004875 | USD 0.00475 | USD 0.004 | USD 0.004 |
| Actor start (per started GB of allocated memory) | USD 0.006251 | USD 0.006094 | USD 0.005938 | USD 0.005 | USD 0.005 |
Worked totals on the FREE tier at the default 512 MB memory (one start event):
- Default input, 3 records: 3 × USD 0.010001 + USD 0.006251 = USD 0.036254
- 100 records, no files: 100 × USD 0.010001 + USD 0.006251 = USD 1.006351
A KRS number with no matching documents charges no record events. Set a maximum cost per run in Apify Console to cap spending; the Actor stops when the limit is reached.
What are the limits?
- KRS numbers only: 1 to 50 per run, up to 5,000 records in total.
- The year filter uses the end year of each reporting period.
- Register filing entries do not include the preparation date, IFRS flag, figures or files.
- Saved files over 50 MiB are skipped with a warning.
- A register error for one company is recorded in
OUTPUT.warnings, and the run continues with the next KRS number; records already delivered are kept.
FAQ
Is KRS financial statement data free?
The Ministry of Justice's document browser is free for manual lookups. This Actor charges per delivered record at the prices above, and you can run it on Apify's free plan.
Can I search by company name or NIP?
No. The Actor takes KRS numbers. Find the KRS number in the official KRS search first, then run the Actor in bulk.
Why did the default run return only three records?
ORLEN filed one annual financial statement for each of 2023, 2024 and 2025, and the default filter keeps only financial_statement. Clear Document types to also get resolutions, audit reports and activity reports.
Can I download the PDF or XML files?
Not at the moment. Files come from the financial documents repository, which blocks automated access, so the Save document files option saves nothing and no file event is charged.
What happens when a company has no filings in my years?
The company is listed in OUTPUT.companies with zero records, and no record event is charged for it. If no company matches, the run ends with outcome EMPTY.
Which document types can I filter on?
financial_statement, approval_resolution, audit_report, activity_report and sustainability_report.
Related Actors
- Poland KRZ National Debtor Registry Scraper: Polish insolvency and restructuring records by KRS or NIP
- Sunbiz Scraper: Florida business entities, officers and registered agents
- New York Business Entity Search Scraper: active New York corporations and LLCs by name or DOS ID
- TDLR License Scraper and Oregon CCB Contractor License Scraper: US state license registries
Legal and compliance
The Actor reads public records that the Polish Ministry of Justice publishes from the National Court Register. It does not log in or bypass access controls, and when a source refuses access it returns no invented data. Verify material decisions against the official register, and follow GDPR when records contain personal data. This is not legal or financial advice.
Last verified: 2026-10-27