DEV Community

Cover image for MSiG Scraper: Monitor Sądowy od 2001 Roku
Peter
Peter

Posted on • Originally published at apify.com

MSiG Scraper: Monitor Sądowy od 2001 Roku

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']}")
Enter fullscreen mode Exit fullscreen mode

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}`);
});
Enter fullscreen mode Exit fullscreen mode

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)