DEV Community

Cover image for EKW Scraper: Księgi Wieczyste Programistycznie
Peter
Peter

Posted on • Originally published at apify.com

EKW Scraper: Księgi Wieczyste Programistycznie

TL;DR

  • EKW (Elektroniczne Księgi Wieczyste) to oficjalny rejestr nieruchomości - 25 milionów wpisów w 352 wydziałach sądowych
  • Brak API. Portal to aplikacja JSP chroniona przez WAF blokujący wszystkie IP datacenter
  • Zbudowałem aktora na Apify, który nawiguje portal używając proxy rezydencjalnych i zwraca JSON za $0.065 za nieruchomość
  • Oficjalny odpis sądowy kosztuje 20 PLN. Ten aktor daje te same dane za 10-50x mniej

Dlaczego EKW Nie Ma API

Elektroniczne Księgi Wieczyste to cyfrowa wersja rejestru nieruchomości prowadzonego przez Ministerstwo Sprawiedliwości. System obejmuje 25 milionów wpisów zarządzanych przez 352 wydziały sądowe w całej Polsce. Każde mieszkanie, dom, działka i budynek komercyjny ma odpowiedni wpis w tym rejestrze.

Pracujesz w nieruchomościach, bankowości lub usługach prawnych - sprawdzasz księgi wieczyste codziennie. Kto jest właścicielem? Jakie są hipoteki? Służebności? Ograniczenia?

Portal ekw.ms.gov.pl pozwala sprawdzić jedną nieruchomość na raz po numerze KW (np. WA4M/00012345/6). Brak dostępu hurtowego, eksportu, API. System został zbudowany jako aplikacja JSP po stronie serwera - nie ma zapytań XHR, endpointów JSON, ukrytych API REST. Każda interakcja wymaga wypełniania formularzy HTML, klikania przycisków i parsowania wyrenderowanych tabel.

Oficjalny odpis sądowy kosztuje 20 PLN i wymaga formalnego wniosku. Przy due diligence na dziesięciach lub setkach nieruchomości - to się nie skaluje.

EKW Wyzwania Techniczne: WAF, Proxy, Cyfra Kontrolna

Ochrona WAF Blokuje IP Datacenter

W przeciwieństwie do innych polskich rejestrów (KRS, CRBR, KNF), portal EKW ma Web Application Firewall, który blokuje wszystkie IP datacenter. Standardowe proxy, VPN i serwery cloud są natychmiast blokowane. AWS, GCP, Azure, Hetzner - wszystko zablokowane.

Aktor wymaga polskich proxy rezydencjalnych. To jedyny aktor w całym zestawie polskich rejestrów z tym wymaganiem, dlatego koszt za zapytanie jest nieco wyższy niż u pozostałych aktorów w serii.

Algorytm Cyfry Kontrolnej Numeru KW

Numery KW mają format XXXX/XXXXXXXX/X, gdzie ostatni znak to cyfra kontrolna walidowana po stronie serwera. Błędna cyfra kontrolna oznacza odrzucenie zapytania.

Algorytm używa mapowania znaków (A=10, B=11, C=12... X=30, Y=31, Z=32) i powtarzającego wzorca wag [1,3,7,1,3,7,1,3,7,1,3,7]. Każdy znak kodu sądu i numeru jest konwertowany na wartość liczbową, mnożony przez odpowiednią wagę, a wyniki są sumowane. Cyfra kontrolna to suma modulo 10.

Aktor automatycznie oblicza cyfrę kontrolną, jeśli podasz tylko kod sądu i numer - nie musisz liczyć tego ręcznie.

Nawigacja Sesji i Formularzy

Ponieważ portal to tradycyjna aplikacja JSP ze stanem sesji po stronie serwera, aktor musi utrzymywać cookies i przestrzegać dokładnej sekwencji przesyłania formularzy. Pominięcie kroków lub wysłanie formularzy w złej kolejności skutkuje błędami sesji.

EKW księgi wieczyste scraper: jak używać

Python

from apify_client import ApifyClient

client = ApifyClient("YOUR_API_TOKEN")

run = client.actor("minute_contest/ekw-ksiegi-wieczyste-scraper").call(
    run_input={
        "kwNumbers": ["WA4M/00012345/6"],
        "viewType": "aktualna",  # 'aktualna' = bieżące, 'zupelna' = pełna historia
        "sections": ["I-O", "II", "III", "IV"],
        "proxyConfiguration": {
            "useApifyProxy": True,
            "apifyProxyGroups": ["RESIDENTIAL"]
        }
    }
)

items = client.dataset(run["defaultDatasetId"]).list_items().items
for prop in items:
    print(f"KW: {prop['kwNumber']} | {prop.get('propertyType')}")
    for entry in prop.get("dzialII", {}).get("entries", []):
        print(f"  Właściciel: {entry['value']}")
    for entry in prop.get("dzialIV", {}).get("entries", []):
        print(f"  Hipoteka: {entry['value']}")
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/ekw-ksiegi-wieczyste-scraper').call({
    kwNumbers: ['WA4M/00012345/6'],
    viewType: 'aktualna',
    sections: ['I-O', 'II', 'III', 'IV'],
    proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ['RESIDENTIAL'] }
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach(p => console.log(`KW: ${p.kwNumber} | ${p.propertyType}`));
Enter fullscreen mode Exit fullscreen mode

EKW dane nieruchomości: co dostajesz

Rejestr podzielony jest na 5 działów, każdy zawierający inną kategorię informacji o nieruchomości:

Dział Zawartość
Dział I-O Oznaczenie nieruchomości - powierzchnia, lokalizacja, numer ewidencyjny, przeznaczenie
Dział I-Sp Prawa związane - np. miejsce parkingowe, służebności mediów związane z nieruchomością
Dział II Własność - kto jest właścicielem, udziały, podstawa nabycia
Dział III Prawa, ograniczenia, służebności, obciążenia, roszczenia egzekucyjne
Dział IV Hipoteki - kwoty, wierzyciele, waluty, oprocentowanie

Każdy dział zwraca ustrukturyzowane pary etykieta-wartość sparsowane z tabel HTML portalu. Możesz wybrać, które działy ekstraktować - jeśli potrzebujesz tylko danych o własności, zamów sam Dział II, żeby przyspieszyć scrapowanie.

Parametr viewType kontroluje, czy dostajesz stan bieżący (aktualna) czy pełną historię (zupelna) włącznie ze wszystkimi poprzednimi właścicielami, anulowanymi hipotekami i zmianami historycznymi.

Scenariusz: Due Diligence Portfela Nieruchomości

Fundusz private equity ocenia portfel 200 nieruchomości komercyjnych w Warszawie pod kątem potencjalnej akwizycji. Przed złożeniem oferty muszą zweryfikować:

  1. Bieżąca własność (Dział II) - potwierdzenie, że sprzedający faktycznie jest właścicielem
  2. Istniejące hipoteki (Dział IV) - identyfikacja obciążeń do spłacenia przy zamknięciu transakcji
  3. Ograniczenia i służebności (Dział III) - flagi nieruchomości z roszczeniami egzekucyjnymi
  4. Oznaczenie nieruchomości (Dział I-O) - weryfikacja, czy powierzchnia i przeznaczenie zgadzają się z deklaracjami sprzedającego

Oficjalna droga: 200 odpisów po 20 PLN to koszt 4000 PLN i kilka dni ręcznych wniosków. Z tym aktorem te same dane kosztują ~55 PLN i są gotowe w mniej niż godzinę.

Kto Potrzebuje Danych z Ksiąg Wieczystych

  • Banki i kredytodawcy - weryfikacja własności i istniejących obciążeń przed udzieleniem kredytu
  • Deweloperzy - hurtowe sprawdzanie nieruchomości pod kątem obciążeń i ograniczeń przed akwizycją
  • Kancelarie prawne - due diligence transakcji nieruchomościowych, weryfikacja tytułu prawnego
  • Windykacja - identyfikacja majątku dłużników po znanych numerach KW
  • Inwestorzy - screening celów akwizycji pod kątem ukrytych zobowiązań i konkurencyjnych roszczeń

EKW Scraper Cennik vs Oficjalne Odpisy

Metoda Koszt za nieruchomość
Oficjalny odpis sądowy 20 PLN (~$5)
Ręczne sprawdzenie na portalu Darmowe (po jednym, bez eksportu)
Ten aktor ~0.27 PLN (~$0.065)

Uwaga: Wymaga planu Apify z dostępem do proxy rezydencjalnych (niedostępne na darmowym planie). Wymaganie proxy rezydencjalnych jest specyficzne dla EKW ze względu na ochronę WAF.

FAQ

Czy mogę szukać w EKW po adresie zamiast numeru KW?

Nie. Portal EKW akceptuje tylko numery KW (np. WA4M/00012345/6). Nie ma wyszukiwania po adresie. Jeśli nie znasz numeru KW, możesz go znaleźć w starostwie powiatowym (wydział geodezji) lub przez mapę ewidencyjną na geoportal.gov.pl.

Jaka jest różnica między widokiem "aktualna" a "zupelna"?

Widok aktualna (bieżący) pokazuje tylko aktywny stan - obecni właściciele, aktywne hipoteki, istniejące ograniczenia. Widok zupelna (pełny) zawiera kompletną historię - wszyscy poprzedni właściciele, anulowane hipoteki, zmiany historyczne. Pełny widok trwa dłużej i generuje więcej danych.

Jak szybko EKW scraper przetwarza nieruchomości?

Ze względu na ochronę WAF i wymaganie proxy rezydencjalnych, aktor przetwarza około 10-20 nieruchomości na minutę. To wolniej niż inne aktory w zestawie, ale wciąż o rzędy wielkości szybciej niż ręczne wyszukiwanie. Dla dużych partii (1000+ nieruchomości) czas działania to 1-2 godziny.

Wypróbuj: apify.com/minute_contest/ekw-ksiegi-wieczyste-scraper


Ten artykuł jest częścią serii Polish Business Data APIs o programistycznym dostępie do polskich rejestrów publicznych.

Top comments (0)