Dane maszynowo · JSON i CSV bez kluczy
API
Dane pochodzą z rejestru udostępnianego nieodpłatnie na mocy ustawy, więc i wyjście jest otwarte: bez kluczy, bez rejestracji, z nagłówkiem CORS. Odpowiedzi są w JSON, liczby są liczbami, daty są w formacie ISO. Jedyna prośba: nie odpytuj w pętli tysiąca gmin naraz — jest eksplorator i ranking gmin w CSV, które zrobią to jednym żądaniem. Tempo, podawanie źródła i przedstawianie się w nagłówku User-Agent opisuje regulamin.
Adres bazowy: https://ilem2.pl, na przykład
curl https://ilem2.pl/api/gmina/146501. Opis maszynowy:
OpenAPI 3.1 (/openapi.json); dla agentów AI także
serwer MCP i /llms.txt.
Od 26.09.2026 API, pliki i kafle mapy nie podają pojedynczych transakcji:
tylko statystyki z co najmniej 6 różnych nieruchomości i 6 różnych aktów, a poniżej progu napis
„mniej niż 6” („mniej niż 6 albo ukryte” przy grupach podziału i dzielnicach, „ukryte” przy całej gminie ukrytej, bo różnica
z jej miastem albo obszarem wiejskim zdradzałaby małą liczbę). Pliki z pojedynczymi aktami (/gmina/{teryt}/transakcje.csv) odpowiadają 410. Wszystkie
liczby z aktów pochodzą z miesięcznej publikacji (stan na 1.11.2026): stały katalog komórek (obszar × rodzaj × klasa ×
okres), wersja komórki zmienia się dopiero, gdy od poprzedniej weszło albo wyszło co najmniej 6 aktów, a mediany
i kwartyle mają szum 1–2%. Pole co_najmniej: true: liczba jest dolną granicą: starostwo nie publikuje pełnego rejestru (część aktów z usługi krajowej) albo - w oknie 60 miesięcy - podajemy liczbę z 24 miesięcy, żeby różnica obu okien nie zdradzała pojedynczych starszych sprzedaży; mediana bez zmian (regulamin). Przy domach pole szacowanych mówi,
ile z tych aktów ma powierzchnię szacowaną z obrysu i kondygnacji budynku (null — liczby nie podajemy:
mniej niż 6 takich aktów albo z różnicy wynikałaby mała liczba pozostałych); CSV — kolumny
akty_pow_szacowana i sprzedazy_pow_szacowana.
Gmina
GET /api/gmina/{teryt}?warstwa=lokale|dzialki|budynki
To, co pokazuje karta gminy, z komórek publikacji: gmina, dzielnica albo całe miasto (Warszawa, Kraków,
Łódź) — 24 pełne miesiące i 60 miesięcy (oba w dzisiejszych cenach), pełne lata (ceny z aktów), przekroje katalogu (rynek, metraż w 5 klasach,
izby), części (dzielnice, miasto i obszar wiejski gminy miejsko-wiejskiej), szybkie odsprzedaże, ulice i podobne gminy.
Gdy gmina ma za mało sprzedaży — szerzej: ten sam obszar z 60 miesięcy albo większy obszar tego samego typu.
/api/gmina/146501 — Warszawa · /api/gmina/226401?warstwa=dzialki — działki w Sopocie
Budynek
GET /api/budynek/{id} — id bryły z karty budynku albo z mapy.
Komórki budynku z publikacji (24 i 60 miesięcy w dzisiejszych cenach, rynek, metraż, izby, szybkie
odsprzedaże), porównanie z sąsiedztwem i okolica: komórki ulicy (tylko budynek od progu), heksu o boku 1,2 km
i gminy oraz trend z lat heksu. Budynek bez opublikowanej komórki: opublikowany: false i sama okolica.
budynek.inwestycja — identyfikator karty inwestycji, do której należy bryła (/api/inwestycja/{id}),
albo null.
/api/budynek/10063618 — Warszawa, Żupnicza 18B
Ranking gmin
GET /api/rankingi?rodzaj=M|D|B|W|U|R|L&woj=&jednostki=gminy|dzielnice|czesci&rynek=&metraz=m1…m5&min_n=&sort=&limit=
Te same warunki co na stronie rankingu — klasy katalogu publikacji (rynek albo klasa metrażu), 24 pełne
miesiące. sort: mediana, mediana_rosnaco, zmiana, zmiana_rosnaco, transakcje, cena. Dawne
pow_od i pow_do nie działają.
/api/rankingi?woj=pomorskie&min_n=50 · mieszkania do 35 m², 20 najdroższych gmin
Szacunek ceny mieszkania
GET /api/wycena?adres=&pow_m2=&pokoje=&pietro=&rynek= — albo zamiast adresu
budynek= (id z karty budynku) lub lon=&lat=.
Porównania z budynku i okolicy ważone podobieństwem (metraż, pokoje, piętro, okres budowy,
wysokość i poziom cen budynku, rynek), ceny przeliczone na dziś. Odpowiedź: wartosc_zl,
przedzial_zl (80 na 100 — kwantyle błędów sprawdzenia na aktach z przeszłości dla tej pewności
i rodzaju obszaru), najczesciej_zl_m2, pewnosc, zdanie,
porownan_po_filtrach, co_gdyby, budynki, statystyki
(budynek i ulica), trend, rozklad_zl_m2, rynek_pierwotny_obok.
Pojedynczych transakcji nie podajemy — liczby budynku i ulicy dopiero od 6 różnych mieszkań i aktów;
liczności w pasmach (mniej niż 6, 6–19, 20–99, 100–499…),
typowa_zl_m2… to średnia środkowej połowy cen, kwoty do 1 000 zł i do 100 zł/m².
Filtry (wszystkie opcjonalne, brak = auto):
zasieg = budynek | ulica | 300 | 1000 | dzielnica | gmina ·
okno = 12 | 24 | 36 | 60 | wszystkie (miesiące transakcji) ·
metraz = 10 | 20 | 35 (±procent) ·
pokoje_tol = dokladnie | 1 | dowolnie ·
pietro_tol = podobne | bez_parteru | bez_ostatniego | dowolnie ·
budynek_tol = okres | wysokosc | okres_wysokosc | dowolny ·
jeden=0 — każda sprzedaż lokalu osobno (domyślnie najnowsza) ·
bez= / tylko= — id budynków po przecinku ·
cena_oferty= — cena z ogłoszenia w zł: percentyl wśród porównań i werdykt.
Działki i domy (warstwa=dzialki albo warstwa=budynki z adresem, punktem,
budynkiem albo numerem działki w dzialka= / adres=) liczy ten sam silnik wyceny co raport,
mapa i /api/wycena/dzialka: pole wycena to jego kontrakt (rodzaj_wyniku:
dzialka — ta działka, miejsce — działka podanej wielkości w tym miejscu, okolica
— budynek albo okolica domu, gmina — typowa cena w gminie), a wartosc_zl,
przedzial_zl, mediana_zl_m2 i przedzial_zl_m2 są z niego przepisane. Dom
(budynek jednorodzinny; typ: "dom"): szacunek tego domu z modelu cen domów — środek, środkowa połowa
(przedzial_polowa_*), przedział 80 na 100, pewność, pow_m2 (podana albo szacowana z obrysu
i kondygnacji, pow_zrodlo); bez modelu w danej miejscowości — cena_obszaru: true, typowa
cena za m² w obszarze, bez kwoty za dom. Trafność: jakość wyceny
(/api/jakosc-wyceny).
Przestarzałe: sam teryt=&pow_m2= (oraz warstwa=, izby=) —
w dawnym kształcie odpowiedzi mediana i kwartyle komórki gminy z publikacji miesięcznej (gdy w gminie za mało
sprzedaży — ten sam obszar z 60 miesięcy, potem większy obszar; nazwa komórki w zasieg),
porownywalnych — pasmo, ostatni_akt — ostatni miesiąc okna komórki. Odpowiedź ma pole
metoda_przestarzala: to typowa cena w gminie razy powierzchnia, nie wycena konkretnej nieruchomości.
Działki i domy liczą się tu z komórki całego rodzaju (każda wielkość), więc większa powierzchnia nigdy nie daje
niższej kwoty; pole wycena podaje to samo w kontrakcie silnika (cena_obszaru: true). Zamiast
tego: adres albo budynek (mieszkanie), /api/wycena/dzialka (działka), /api/wycena/budynek
(budynek). Szacunek z adresem liczy się z migawki tej samej publikacji. To szacunek statystyczny,
a nie operat szacunkowy ani wycena rzeczoznawcy majątkowego (regulamin, § 9).
GET /api/wycena/budynek?budynek= (albo lon=&lat=) — dane budynku do formularza
i wycena: kontrakt silnika dla budynku — budynek z mieszkaniami: typowe mieszkanie z drugiej ręki (mediana
metrażu sprzedaży, ta sama liczba co karta budynku, panel mapy, pasek raportu i /api/wycena z tym
metrażem), dom: szacunek tego domu (jak wyżej), budynek usługowy: typowa cena w okolicy (cena_obszaru).
wycena=0 — same
dane budynku.
Kartuska 14, Gdańsk, 50 m² · ta ulica, 2 lata, cena z ogłoszenia · /api/wycena?teryt=146501&pow_m2=55&izby=3
Nowe inwestycje
GET /api/inwestycje?obszar=&pok=&cena=&m2=&pow=&blisko=&st=&sort=&limit=
Inwestycje rynku pierwotnego w obszarze (gmina, powiat, województwo, dzielnica albo
bbox), z dopasowaniem po lokalu z cennika: pokoje, cena, cena metra i metraż sprawdzane
na tym samym lokalu. Każda pozycja ma etap, cennik, akty i okolicę — te same liczby co lista i karta.
GET /api/inwestycja/{id} — pełna karta inwestycji.
GET /api/inwestycje/podsumowanie?teryt= — w sprzedaży, w budowie, zapowiedzi i mediana cenników w gminie.
GET /api/zapytaj?q= — zdanie zamienione na filtr (same reguły, bez modelu językowego).
/api/inwestycje?obszar=gdansk&limit=20 · podsumowanie Krakowa · „3 pokoje do 700 tys. w Poznaniu”
Podpowiedzi
GET /api/szukaj?q=&ile= — wyszukiwarka miejsc: miasta, dzielnice, wsie, ulice, ronda,
kody pocztowe i adresy z numerem; słowa w dowolnej kolejności, bez ogonków, z poprawką literówek.
Każdy wynik ma rodzaj, punkt, ramkę i adres strony, a gmina i ulica — medianę mieszkań z publikacji (24 pełne miesiące).
GET /api/paleta?q= — gminy, dzielnice pomocnicze i osiedla oraz ulice pasujące do frazy, z medianą mieszkań
z publikacji (24 pełne miesiące). Część miasta leżąca w dzielnicy pomocniczej albo osiedlu (np. „Jasień” w Gdańsku) ma
w wynikach /api/szukaj pole dzielnica i liczby jej komórki.
GET /api/szukaj-gminy?q=&warstwa= — same gminy, z punktem na mapie.
Kafle mapy
GET /kafle/{warstwa}/{z}/{x}/{y}.mvt — jednostki ewidencyjne z medianą, powiększenia 0–14
(warstwa = lokale | dzialki | domy).
Kafle wektorowe (Mapbox Vector Tile) w układzie Web Mercator. Każda liczba na mapie
pochodzi z miesięcznej publikacji (komórki od 6 nieruchomości i 6 aktów, mediany z szumem ±1–2%).
Warstwa gminy: gmina, miasto albo obszar wiejski gminy miejsko-wiejskiej i dzielnica — teryt,
nazwa (od powiększenia 8), stan (w — własna wartość, p — za mało
sprzedaży w jednostce: wartość większego obszaru tego samego typu, b — brak danych w rejestrze),
mediana, n (liczba aktów komórki), niepelne (starostwo nie publikuje pełnego
rejestru: „co najmniej n”). Opis wartości jednostki (nazwa obszaru, z którego jest kolor, okno, przy domach — ile
sprzedaży ma powierzchnię szacowaną: szacowanych, w kaflu stref n_szac) —
GET /api/mapa/jednostka/{TTTTTT_d}?warstwa=; progi legendy — GET /api/skala/{warstwa}
(kwantyle opublikowanych median).
GET /kafle-dzielnice/{warstwa}/{z}/{x}/{y}.mvt — dzielnice pomocnicze i osiedla miast (powiększenia 10–14):
warstwa dzielnice z polami klucz, nazwa, stan, mediana,
n, niepelne (te same trzy stany co gminy; przy p kolor jednostki pod dzielnicą);
opis — GET /api/mapa/dzielnica?klucz=&warstwa=.
GET /api/dzielnice?miasto={teryt} — same granice dzielnic i osiedli jednego miasta (GeoJSON, WGS84), bez liczb,
z licencją i atrybucją źródła. Granice z OpenStreetMap: © autorzy OpenStreetMap, udostępnione na licencji
ODbL 1.0; z danych miast — na warunkach ich źródeł.
/api/dzielnice?miasto=226101 — dzielnice Gdańska · /api/mapa/dzielnica?klucz=226101|Jasień
GET /kafle-obreby/dzialki/{z}/{x}/{y}.mvt — obręby ewidencyjne (powiększenia 11–14, tylko działki
budowlane): warstwa obreby z polami klucz („TTTTTT_d.OOOO” — przedrostek identyfikatora
działki), nazwa, stan (w — własna komórka obrębu z medianą, 24 mies., a bez niej
60 mies. w dzisiejszych cenach; p — bez własnej komórki: mniej niż 6 sprzedaży albo komórka
ukryta; b — brak danych w rejestrze), mediana, n, okres,
niepelne; opis — GET /api/mapa/obreb?klucz=. Granice: Państwowy Rejestr Granic (GUGiK).
/api/mapa/obreb?klucz=120617_2.0018 — obręb Zielonki (gmina Zielonki)
Raport i agenci AI
GET /api/analiza?cel=&sekcje= — raport w JSON (ten sam co karta miejsca /miejsce/… i PDF);
cel = dz:identyfikator działki, bud:numer budynku albo
pkt:szerokość,długość. GET /api/analiza/znajdz?q= — adres, numer działki albo współrzędne
zamienione na kandydatów do raportu. Nowy raport liczy się do limitu na adres (strony z pamięci bez limitu).
Serwer MCP (Model Context Protocol, Streamable HTTP, bez logowania): https://ilem2.pl/mcp
— narzędzia znajdz_nieruchomosc, raport, ceny_obszaru,
szacunek_mieszkania, szacunek_dzialki i inwestycje. Agenci działający na żądanie użytkownika (ChatGPT, Claude,
Perplexity, Meta AI i inni) mają te same limity na adres co ludzie i dodatkowy limit na swoją tożsamość; roboty
zbierające treść do trenowania modeli — tylko GPTBot, ClaudeBot i CCBot, pod warunkiem podawania źródła
(robots.txt; pozostałe: Content-Signal ai-train=no). Opis dla modeli: /llms.txt i
/llms-full.txt.
GET /api/wycena/dzialka?dzialka= (albo lon=&lat=, opcjonalnie pole= m²) —
szacunek działki niezabudowanej pod dom z porównań i modelu cen działek, ten sam co w raporcie działki, w dymku mapy,
w /wycena i w MCP: środek zł/m² i kwota („ok.” poniżej pewności wysokiej, pokaz_liczbe),
środkowa połowa (przedzial_polowa_*) i przedział 80 na 100; porównania tylko zbiorczo, komórka obszaru
jako odniesienie (typowa cena w okolicy, nie tej działki). Granice, położenie i pole działki — z pamięci
ewidencji; pole_zapas (i lon, lat) tylko dla działki bez granic w bazie. Dla
współrzędnych — typowa tu działka. Nie operat szacunkowy.
Nazwy obszarów: poziom h (heks stałej siatki o boku 1,2 km, 3,7 km²) strony nazywają
„okolica (ok. 2 km)”; w polach API zostaje h i klucz heksu.
/api/analiza?cel=bud:10063618 — Żupnicza 18B, Warszawa · /api/analiza/znajdz?q=120617_2.0018.927/87 — działka w Zielonkach
Pliki CSV
Tam, gdzie chodzi o cały wycinek, szybszy jest plik: ranking gmin i komórki
z eksploratora (ten sam adres co widok, z .csv) — komórki katalogu, jedna
na wiersz, z okresem i dniem publikacji, bez mikrodanych. Pliki z pojedynczymi aktami są wyłączone.
Czego API nie poda
Numeru aktu notarialnego ani nazwisk: numer aktu rejestr podaje, ale go nie pokazujemy, nazwiska notariusza nie zapisujemy, a nazwisk stron rejestr nie udostępnia (jest tylko rodzaj strony, np. „osoba fizyczna”). Nie ma też danych o cenach z aktów, które odrzuciliśmy jako nierynkowe (wykupy komunalne, przekazania rodzinne, akty na kilkanaście lokali naraz) — do statystyk nie wchodzą.
Wersja testowa. Adresy i kształt odpowiedzi mogą się jeszcze zmienić — jeśli budujesz na tym coś trwałego, daj znać, zanim to zrobisz.