TL;DR
- MSiG (Monitor Sądowy i Gospodarczy) to oficjalny dziennik sądowy publikowany codziennie od 2001 roku
- Zawiera każde zgłoszenie upadłości, likwidacji, restrukturyzacji i zmianę w KRS z ponad 20 lat
- Portal rządowy nie ma oficjalnego API - ale nieudokumentowany endpoint REST istnieje za frontendem jQuery DataTables
- Zbudowałem aktora na Apify, który odpytuje API bezpośrednio i zwraca JSON za $0.01 za wynik
Czym jest MSiG i dlaczego ma znaczenie dla wywiadu biznesowego
MSiG - Monitor Sądowy i Gospodarczy - to polski odpowiednik dziennika sądowego. Publikowany przez Ministerstwo Sprawiedliwości od 2001 roku, jest autorytatywnym źródłem prawnym zdarzeń korporacyjnych w Polsce. Każde otwarcie postępowania upadłościowego, zatwierdzenie planu restrukturyzacji, zarządzenie likwidacji, zmiana w KRS (Krajowy Rejestr Sądowy) - jest publikowane w MSiG.
To czyni MSiG jednym z najcenniejszych zbiorów danych dla każdego zajmującego się polskim wywiadem biznesowym. Archiwum obejmuje ponad dwie dekady codziennych publikacji i setki tysięcy ogłoszeń. Każda upadłość w Polsce od 2001 roku jest tutaj. Każda zmiana w zarządzie, podwyższenie kapitału, fuzja - opublikowana.
Dla każdego w ryzyku kredytowym, windykacji, usługach prawnych lub wywiadzie konkurencyjnym, monitorowanie MSiG jest niezbędne. Ale portal na wyszukiwarka-msig.ms.gov.pl jest zaprojektowany do ręcznego wyszukiwania:
- Jedna firma na raz
- Wyniki w paginowanym HTML
- Brak eksportu
- Brak dokumentacji API
Jeśli musisz monitorować setki lub tysiące firm albo analizować historyczne trendy niewypłacalności, podejście ręczne się nie skaluje.
MSiG monitor sądowy scraper: jak działa ukryte API
Portal MSiG używa jQuery DataTables z REST API pod spodem, które akceptuje parametry wyszukiwania JSON i zwraca ustrukturyzowane dane.
Dwa ciekawe szczegoly techniczne:
1. Dynamiczne rozwiazywanie URL API
Bazowy URL API nie jest zahardcodowany - jest pobierany w runtime z dedykowanego endpointu (home/getapiurl). Oznacza to, że rząd może przenieść API bez zmian we frontendzie. Scraper obsługuje to, najpierw rozwiązując aktualny URL API przed wykonaniem jakichkolwiek zapytań.
2. Literowka w produkcyjnym API
Endpoint do pełnego tekstu to /Monitor/Detalis - tak, "Detalis" zamiast "Details". Ta literówka działa w rządowym API od lat. Scraper używa błędnego URL, ponieważ to właśnie on działa.
Endpoint wyszukiwania /Monitor/Search akceptuje zakresy dat, nazwy podmiotów, numery KRS/NIP, sygnatury spraw i wyszukiwanie pełnotekstowe w treści ogłoszeń. Wyniki są zwracane jako JSON z metadanymi (daty publikacji, numery monitora, klasyfikacja rozdziałów) i opcjonalnie pełnym tekstem każdego ogłoszenia.
Pobieranie pełnego tekstu to oddzielne wywołanie API na każde ogłoszenie. Dla dużych zbiorów wyników oznacza to wiele requestów. Aktor grupuje je efektywnie i obsługuje limitowanie ze strony serwerów rządowych.
Jak używać MSiG monitor sądowy scrapera
Python
from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("minute_contest/msig-scraper").call(
run_input={
"dateFrom": "2026-01-01",
"dateTo": "2026-03-31",
"searchType": "A", # A = ogłoszenia, B = wpisy KRS
"entityName": "Getin",
"fetchDetails": True, # dołącz pełny tekst ogłoszenia
"maxResults": 100
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
for entry in items:
print(f"{entry['entityName']} | {entry.get('chapterName')}")
print(f" Sygnatura: {entry['signatureOfCase']}")
print(f" Data publikacji: {entry['dateOfPublication']}")
JavaScript (Node.js)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('minute_contest/msig-scraper').call({
dateFrom: '2026-01-01',
dateTo: '2026-03-31',
searchType: 'A',
entityName: 'Getin',
fetchDetails: true,
maxResults: 100
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(e => {
console.log(`${e.entityName} | ${e.chapterName}`);
console.log(` Sygnatura: ${e.signatureOfCase}`);
});
Dane z MSiG scrapera: co dostajesz
| Pole | Przykład |
|---|---|
| entityName | GETIN NOBLE BANK S.A. W UPADŁOŚCI |
| krs | 0000019193 |
| nip | 1080000568 |
| signatureOfCase | XVIII GUp 25/23 |
| chapterName | Postępowania upadłościowe |
| monitorNumber | MSiG 48/2026 |
| dateOfPublication | 2026-03-11 |
| numberOfNotice | 12345 |
| textInPosition | Nagłówek ogłoszenia |
| textInBody | Pełny tekst ogłoszenia sądowego |
MSiG monitor sądowy: tryby wyszukiwania
| searchType | Co obejmuje |
|---|---|
| A (Ogłoszenia) | Upadłości, restrukturyzacje, likwidacje |
| B (Wpisy KRS) | Nowe rejestracje, zmiany w zarządzie, podwyższenia kapitału, połączenia |
Można łączyć filtry: zakres dat + nazwa podmiotu + NIP + sygnatura sprawy + wyszukiwanie pełnotekstowe.
Przykład z praktyki: monitoring portfela ryzyka kredytowego
Firma faktoringowa zarządza portfelem 2000 polskich klientów biznesowych. Co kwartał ich zespół ryzyka musi sprawdzić, czy któryś z klientów złożył wniosek o upadłość, wszedł w restrukturyzację lub miał istotne zmiany w KRS.
Bez automatyzacji analityk otwiera portal MSiG, wpisuje nazwę każdej firmy, przegląda wyniki i dokumentuje ustalenia. Przy 3-5 minutach na firmę, screening całego portfela zajmuje 100-170 godzin - około miesiąca pracy jednej osoby.
Z MSiG Monitor Sądowy scraperem ten sam zespół uruchamia zaplanowane zadanie, które odpytuje aktora numerem KRS lub NIP każdego klienta, z filtrem na ostatnie 90 dni. Wyniki trafiają bezpośrednio do systemu zarządzania ryzykiem. Każde nowe zgłoszenie upadłości lub ogłoszenie restrukturyzacji uruchamia automatyczny przegląd.
To redukuje screening portfela z tygodni do minut. Co ważniejsze, umożliwia ciągły monitoring zamiast okresowych kontroli - wychwytując problemy w ciągu dni od publikacji, a nie kwartałów.
Kto potrzebuje danych z MSiG Monitora Sądowego
- Monitoring upadłości - alerty gdy firmy z Twojego portfela składają wniosek o upadłość
- Windykacja - śledzenie postępowań dotyczących dłużników
- Ryzyko kredytowe - screening nowych klientów pod kątem historii niewypłacalności
- Badania prawne - wyszukiwanie ogłoszeń sądowych po sygnaturze sprawy
- Analiza rynku - trendy niewypłacalności według sektora lub regionu z 20+ lat danych
- Monitoring zmian KRS - wykrywanie zmian w zarządach, podwyższeń kapitału, fuzji
FAQ
Czy mogę szukać po numerze KRS lub NIP zamiast po nazwie firmy?
Tak. Aktor akceptuje entityName, krs, nip i signatureOfCase jako parametry wyszukiwania. Można użyć dowolnej kombinacji. Wyszukiwanie po KRS i NIP jest dokładne (exact match) i jest najbardziej niezawodnym sposobem na znalezienie ogłoszeń dla konkretnej firmy, ponieważ nazwy firm mogą się różnić między zgłoszeniami (skróty, sufiksy formy prawnej itp.).
Co robi parametr fetchDetails?
Gdy fetchDetails jest ustawiony na true, aktor wykonuje dodatkowe wywołanie API dla każdego wyniku, aby pobrać pełny tekst ogłoszenia sądowego (textInBody). Bez niego dostajesz tylko metadane (nazwa podmiotu, daty, rozdział, sygnatura). Włącz go, gdy potrzebujesz faktycznej treści ogłoszeń - na przykład aby wydobyć listy wierzycieli lub warunki restrukturyzacji. Wyłącz dla szybszych wyników, gdy interesuje Cię tylko to, czy ogłoszenie istnieje.
Jak daleko wstecz sięga archiwum MSiG?
Cyfrowe archiwum na wyszukiwarka-msig.ms.gov.pl sięga do 2001 roku. Scraper może odpytywać dowolny zakres dat w tym okresie. Daje to dostęp do ponad 20 lat zgłoszeń upadłości, zmian KRS i innych zdarzeń korporacyjnych - cenny zbiór danych do analizy historycznych trendów lub due diligence długo istniejących firm.
Ceny
| Metoda | Koszt |
|---|---|
| Ręczne wyszukiwanie na portalu MSiG | Darmowe (po jednym, bez eksportu) |
| MGBI API MSiG | 900-2200 zł/mies. subskrypcja |
| Ten aktor | ~20 zł za 1000 wyników |
Darmowe $5 kredytów Apify = ~900 wyników MSiG za darmo.
Wypróbuj: apify.com/minute_contest/msig-scraper
Ten artykuł jest częścią serii Polish Business Data APIs o programistycznym dostępie do polskich rejestrów publicznych.
Top comments (0)