Poland Court & Business Gazette API – MSiG Announcements
Pricing
from $2.40 / 1,000 announcements
Poland Court & Business Gazette API – MSiG Announcements
Daily Monitor Sądowy i Gospodarczy (Polish Court and Business Gazette) notices about companies and other legal entities: bankruptcy, restructuring, liquidation, mergers, transformations, creditor calls, with KRS and court. Natural persons excluded. JSON, CSV, Excel.
Pricing
from $2.40 / 1,000 announcements
Rating
0.0
(0)
Developer
Kamil Kaczmarek
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
Poland MSiG API – Company Bankruptcy & Liquidation Notices
Daily Monitor Sądowy i Gospodarczy notices about legal entities (companies, foundations, associations, cooperatives and other registered forms): bankruptcy, liquidation, mergers, demergers, transformations, KRS dissolution and creditor calls. Each row has the issue date and number, Poz. position, chapter, kind, entity name, legal form, KRS when present, court and case signature when present, a link to the official PDF, and a short description.
Natural-person notices (consumer bankruptcy, sole traders, surname-and-forename TOC lines) are dropped. Full notice text is off by default because it often names liquidators and shareholders.
Data is read from the official daily PDFs listed at wyszukiwarka-msig.ms.gov.pl. The actor does not mass-query the Ministry search API.
Who it is for
Lead generation
A buyer who sells services to companies in bankruptcy, liquidation, or a merger gets the entity name, the legal form, the KRS when the header has it, the court, the case signature, and pdfUrl. The actor does not return a phone number, an email, an address, or a lead score. A row is a court notice. It is not a qualified lead.
Compliance watch
A buyer who monitors a portfolio filters with krsNumbers or announcementKinds. The kinds for this job are bankruptcy, liquidation, merger, and creditor_call. The actor infers announcementKind from the table of contents and the opening of the notice. A miss lands in other. A demerger is the separate kind demerger, and it does not come back as merger. Not every sentence about creditors is creditor_call. keywords matches the entity name, the legal form, the chapter, the subsection, the kind, and the KRS. It does not search the notice body.
Use with AI agents (MCP)
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=enterprising_hamster/polish-company-announcements-msig"}}}
- "Liquidation notices for Polish companies from today's MSiG" →
{"lastDays": 1, "announcementKinds": ["liquidation"], "maxItems": 50} - "Bankruptcy and restructuring of companies in the last three issues" →
{"lastDays": 3, "announcementKinds": ["bankruptcy", "restructuring"], "maxItems": 200} - "Anything for this KRS this week" →
{"lastDays": 7, "krsNumbers": ["0000577818"]} - "Merger notices from today's MSiG" →
{"lastDays": 1, "announcementKinds": ["merger"], "maxItems": 50} - "Creditor calls from today's MSiG" →
{"lastDays": 1, "announcementKinds": ["creditor_call"], "maxItems": 50}
What data can you get
| Field | Meaning |
|---|---|
id | {monitorNumber}-{position}, for example 215/2026-50873 |
monitorDate, monitorNumber | Cover date and issue number |
position | Poz. number in that issue |
chapter, subsection | Table-of-contents headings |
announcementKind | liquidation, merger, demerger, transformation, bankruptcy, restructuring, dissolution, creditor_call, or other |
entityName, legalForm | Name and detected form (spółka z o.o., fundacja, …) |
krs | 10-digit KRS from the notice header, or null |
court, caseSignature | Registry court and sygn. akt when the header has them |
pdfUrl | Official PDF for the whole issue |
description | Subsection title plus entity name from the table of contents. Never the notice body |
fullText | null unless fullText is true |
Example row (2026-11-02, issue 213/2026):
{"id": "213/2026-50354","monitorDate": "2026-11-02","monitorNumber": "213/2026","position": 50354,"announcementKind": "liquidation","entityName": "DEA CAPITAL REAL ESTATE POLAND SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ W LIKWIDACJI w Warszawie","legalForm": "spółka z o.o.","krs": "0000786172","court": "SĄD REJONOWY DLA M.ST. WARSZAWY W WARSZAWIE, XII WYDZIAŁ GOSPODARCZY KRAJOWEGO REJESTRU SĄDOWEGO","pdfUrl": "https://wyszukiwarka-msig.ms.gov.pl/api/Monitor/Download?id=9008&fileId=true","fullText": null}
Input
| Field | Default | Meaning |
|---|---|---|
lastDays | 1 | Issues with cover date on or after today minus N-1 days. Ignored when dateFrom or dateTo is set |
dateFrom, dateTo | none | Inclusive ISO dates (YYYY-MM-DD) |
announcementKinds | [] | Optional kind filter |
keywords | [] | Match on name, legal form, chapter, subsection, kind or KRS. The notice body is not searched |
krsNumbers | [] | Optional 6–10 digit KRS list |
fullText | false | Store the full notice. GDPR warning in the input schema. Leave false unless you have a lawful basis |
maxItems | 50 | Maximum saved rows |
onlyNew, stateKey | false | Skip ids already stored for that key |
maxRequestsPerSecond | 1 | Spacing of GetFiles and PDF downloads |
{} reads today's issue and saves up to 50 legal-entity rows. A local empty-input run on 2026-11-04 finished in 13 s with 50 rows from issue 215/2026 (227 TOC entries in that PDF).
Daily alert of new notices
- Save a task with
onlyNew: true,lastDays: 1and your ownstateKey. - Schedule it (for example
0 7 * * 1-5). - Send the dataset onward with an integration.
{"lastDays": 1,"onlyNew": true,"stateKey": "pl-msig-daily","maxItems": 200,"maxRequestsPerSecond": 1}
Run the public example task
- Open https://apify.com/enterprising_hamster/polish-company-announcements-msig/examples/daily-poland-liquidations-bankruptcies-alert
- Choose Try for free, or open https://console.apify.com/create-task-from-example/SfcwRvaSQJtQolhbT if you already signed in.
- Start the copied task. It uses
lastDays1, the kindsbankruptcy,restructuring, andliquidation,maxItems200,onlyNewtrue, andmaxRequestsPerSecond1. The task already has a state key. Leave that key in place so each notice comes back once. - Schedule that task on weekdays if a daily list is the goal. Integrations on the task page send the dataset on.
The separate public example daily-poland-mergers-creditor-calls-alert uses kinds merger and creditor_call, lastDays 1, onlyNew true, and maxItems 200. Copy it from https://console.apify.com/create-task-from-example/lEG0PUc9IBZfeeZrO.
For your own task, paste examples/mergers.json or examples/creditor-calls.json.
How long a run takes
Local runs on 2026-11-04, parsing the real PDFs:
| Input | Wall time | TOC rows | Dropped as natural persons | Saved rows |
|---|---|---|---|---|
{} (today, maxItems 50) | 13 s | 227 | 12 (stop at maxItems) | 50 |
dateFrom/dateTo 2026-11-02..04, maxItems 2000 | 40 s | 753 | 188 | 565 |
Weekday issues in this sample were 72–90 pages. A longer dateFrom/dateTo window downloads one extra PDF per extra issue.
Pricing (pay per event)
Each saved announcement costs $0.003.
| Event | Price (USD) | When |
|---|---|---|
announcement | 0.003 | Each saved legal-entity row |
50 announcements cost $0.15. Higher Apify plans pay less: SILVER $0.0027 and GOLD $0.0024 per announcement (same FREE/BRONZE/SILVER/GOLD/PLATINUM/DIAMOND ratios as our Prozorro tender event: $0.003/$0.003/$0.0027/$0.0024/$0.0024/$0.0024). Rows skipped by onlyNew, by filters, or as natural persons are not charged. Set a maximum charge per run to cap spending.
FAQ
What does one announcement cost? $0.003 for each saved legal-entity row. Rows dropped by filters, onlyNew, or the natural-person check are not charged. 50 saved rows cost $0.15 at that rate.
How do I start the example task? Open https://apify.com/enterprising_hamster/polish-company-announcements-msig/examples/daily-poland-liquidations-bankruptcies-alert and start from Try for free. You get a copy with the input already set.
How do I watch mergers or creditor calls? Set announcementKinds to merger or creditor_call and use examples/mergers.json or examples/creditor-calls.json as pasteable inputs. announcementKind is inferred from the table of contents and the start of the notice, so some rows land in other or in an earlier kind.
Why are natural persons missing? Only table-of-contents lines with a legal form are saved. Consumer bankruptcy and sole traders are dropped. Keep fullText false unless you have a basis to store names of liquidators and shareholders.
Limitations
- Two-column body text is reconstructed by a mid-page crop. A rare layout change can mangle
courtorcaseSignaturewhile TOC name and kind still work. - Section XV (bulk KRS dump, separate Poz. series) is skipped.
- Kind is inferred from chapter, subsection and wording. Edge cases land in
other. - The only-new memory keeps 50,000 ids per
stateKey.
Disclaimer
Unofficial tool. Not affiliated with or endorsed by the Polish Ministry of Justice. Always read the source PDF before you act on a notice. MSiG is an official journal. Check the current Ministry terms before commercial reuse. Every row carries pdfUrl back to the source PDF.
Development
python3 -m venv .venv.venv/bin/pip install -r requirements.txt -r requirements-dev.txt.venv/bin/python -m pytest -q
PDF layout notes: docs/source.md.