Cenogram

Rejestr pozwoleń na budowę (GUNB) - dla konkretnej działki, przez API

Sprawdź, jakie sprawy budowlane przeszły przez urząd dla wybranej działki. Pozwolenia i zgłoszenia z rejestru GUNB, odpowiedź w JSON.

Zobacz dokumentację

Klucz przychodzi mailem, bez karty. Autoryzacja to jeden nagłówek Authorization: Bearer. Poniższe wywołanie możesz uruchomić od razu, bez rejestracji.

GET
Przykładowa odpowiedź: 15 rekordów - pobrane 2026-08-27. Kliknij „Uruchom", żeby odpytać na żywo.
{
  "parcel": {
    "id": "b4611660-817b-5a58-37e1-7e1739666390",
    "parcel_id": "286201_1.0126.3/18",
    "parcel_key": "286201_1.0126.3-18"
  },
  "coverage": "covered",
  "as_of": "2026-07-09T19:35:09.433Z",
  "data": [
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XIII",
      "works_type": "new_construction",
      "status": null,
      "decision_date": "2026-02-25",
      "intake_date": "2025-12-30",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": 27753.6
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XIII",
      "works_type": "new_construction",
      "status": null,
      "decision_date": "2025-07-22",
      "intake_date": "2024-07-25",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": 38350
    },
    {
      "record_kind": "notification",
      "intent_type": null,
      "object_category": "XXVI",
      "works_type": "new_construction",
      "status": "no_objection",
      "decision_date": null,
      "intake_date": "2025-05-15",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": null
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XXVI",
      "works_type": "new_construction",
      "status": null,
      "decision_date": "2025-02-13",
      "intake_date": "2024-12-16",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": null
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XIII",
      "works_type": "other_works",
      "status": null,
      "decision_date": "2024-01-09",
      "intake_date": "2023-11-06",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": 30173
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XXVI",
      "works_type": "reconstruction",
      "status": null,
      "decision_date": "2023-12-06",
      "intake_date": "2023-10-26",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": null
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XXVI",
      "works_type": "new_construction",
      "status": null,
      "decision_date": "2023-11-29",
      "intake_date": "2023-10-18",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": null
    },
    {
      "record_kind": "notification",
      "intent_type": null,
      "object_category": "XXVI",
      "works_type": "new_construction",
      "status": "no_objection",
      "decision_date": null,
      "intake_date": "2023-07-26",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": null,
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": null
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XXVI",
      "works_type": "new_construction",
      "status": null,
      "decision_date": "2022-12-01",
      "intake_date": "2022-11-15",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": null
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XXVI",
      "works_type": "new_construction",
      "status": null,
      "decision_date": "2022-09-21",
      "intake_date": "2022-08-02",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": null
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XIII",
      "works_type": "new_construction",
      "status": null,
      "decision_date": "2021-10-14",
      "intake_date": "2021-03-22",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": 35845
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XXVI",
      "works_type": "new_construction",
      "status": null,
      "decision_date": "2021-07-30",
      "intake_date": "2021-07-01",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": null
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XIII",
      "works_type": "new_construction",
      "status": null,
      "decision_date": "2020-09-28",
      "intake_date": "2020-06-10",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": 28523
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "XXVI",
      "works_type": "new_construction",
      "status": null,
      "decision_date": "2020-09-28",
      "intake_date": "2020-09-22",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": null,
      "address_number": null,
      "address_city": "Olsztyn",
      "volume_m3": null
    },
    {
      "record_kind": "permit",
      "intent_type": "other_structure",
      "object_category": "III",
      "works_type": "demolition",
      "status": null,
      "decision_date": "2019-12-27",
      "intake_date": "2019-11-04",
      "authority": "Prezydent Miasta Olsztyn",
      "address_street": "Jarocka",
      "address_number": "21",
      "address_city": "Olsztyn",
      "volume_m3": 777
    }
  ],
  "truncated": false,
  "note": "Building permits with an issued decision and notifications accepted without objection, registered since 2016, matched to the parcel by its current cadastral identifier. The outcome of a permit decision, granted or refused, is not part of the data held here, and cases still pending are not included. Parcel splits/merges renumber parcels and break the match — an empty list is not a statement that nothing was ever planned."
}
Źródło
rejestr GUNB, ponad 6 mln spraw z całego kraju
Zakres
sprawy zamknięte, rejestrowane od 2016 r.
Klucz zapytania
bieżący numer działki ewidencyjnej
Odpowiedź
JSON, 4 tokeny za wywołanie

Zapytaj bieżącym numerem działki ewidencyjnej, a dostaniesz listę spraw budowlanych w JSON. Wpis nie mówi, czy budowa ruszyła ani czy ją skończono. Pusta lista częściej wynika ze zmiany numeru działki niż z tego, że nikt tu nic nie planował.

Pola odpowiedzi

Tabela wyjaśnia każde pole z przykładowej odpowiedzi wyżej.

parcel object tożsamość działki, której dotyczy odpowiedź: id, parcel_id i parcel_key. Przy zapytaniu numerem ewidencyjnym wraca zawsze; przy zapytaniu UUID-em tylko dla kluczy API, OAuth oraz kont płatnych i próbnych
coverage string cztery stany odpowiedzi. covered znaczy, że wpisy są. Pozostałe trzy - covered_no_data, not_covered i not_computed - to trzy różne powody pustej listy
as_of datetime | null z kiedy pochodzi nasza kopia dopasowanych wpisów. Data zdarzenia jest osobno, w decision_date i intake_date. Przy covered_no_data wraca null, bo nie ma czego datować
data array lista spraw, posortowana malejąco po decision_date, a przy jej braku po intake_date
record_kind string permit (pozwolenie) albo notification (zgłoszenie)
intent_type string | null czego dotyczy zamierzenie, np. single_family_house, other_structure. Dla zgłoszeń zawsze null, wartość spoza mapy wraca jako other
object_category string | null kategoria obiektu z ustawowej taksonomii, cyfrą rzymską
works_type string | null new_construction, extension, vertical_extension, reconstruction, demolition, other_works, other
status string | null wynik zgłoszenia: no_objection albo other. Dla pozwoleń zawsze null
decision_date date | null data decyzji. Dla zgłoszeń zwykle pusta, bo zgłoszenie nie kończy się decyzją
intake_date date | null data wpływu wniosku albo zgłoszenia
authority string | null organ pierwszej instancji, który sprawę prowadził. Po odwołaniu rozstrzyga inny organ i tego rejestr nie pokazuje
address_street / address_number / address_city string | null adres inwestycji z akt sprawy, często niepełny
volume_m3 number | null kubatura obiektu, jeśli sprawa ją podaje
truncated boolean true, gdy działka ma ponad 500 odrębnych spraw i lista została przycięta
note string zastrzeżenie o zakresie zbioru, dołączane do każdej odpowiedzi. Po angielsku, bo jest częścią kontraktu publicznego API i mają je wszyscy klienci

Jak czytać odpowiedź

Miejsca, w których tę odpowiedź łatwo przeczytać źle.

Pusta lista ma trzy znaczenia

Zanim policzysz rekordy, sprawdź coverage. Tylko covered_no_data znaczy, że sprawdziliśmy tę działkę i nie znaleźliśmy wpisów. not_covered mówi, że działki nie mamy w zbiorze, a not_computed, że odpowiedzi nie udało się teraz policzyć i warto ponowić za chwilę.

Pozwolenia i zgłoszenia to dwie różne ścieżki

Rozdziel rekordy po record_kind. Pola są asymetryczne: status wypełniamy tylko dla zgłoszeń, intent_type tylko dla pozwoleń. Zgłoszenia obejmują wąski katalog ustawowy, głównie domy wolnostojące i sieci, więc ich brak nic nie mówi o robotach spoza tej listy.

Podział działki gubi starsze sprawy

Wpisy są przypisane do bieżącego numeru ewidencyjnego. Po podziale albo scaleniu działka dostaje nowy numer i starsze sprawy mogą się pod nim nie pojawić. Przy działkach o świeżej historii geodezyjnej pusta odpowiedź opisuje numer działki, a teren mógł mieć swoje sprawy pod poprzednim.

Zbiór obejmuje sprawy zamknięte, bez informacji o wyniku

Zgłoszenia trzymamy wyłącznie te przyjęte bez sprzeciwu. Pozwolenia trzymamy te, w których wydano decyzję, ale źródło nie podaje, czy była pozytywna czy odmowna. Spraw w toku nie ma w zbiorze wcale, więc brak wpisu dla trwającej inwestycji jest spodziewany.

Cennik

Jedno wywołanie tego endpointu kosztuje 4 tokeny. Tokeny wracają, gdy działki nie mamy w zbiorze, gdy nie da się teraz policzyć odpowiedzi, gdy działka nie ma numeru ewidencyjnego oraz przy odpowiedziach 400 i 404. Potwierdzony brak wpisów jest płatny.

Free

Na próbę

0 zł

400 tokenów na start, potem 50 tygodniowo

to 100 wywołań tego endpointu

  • -Wszystkie endpointy
  • -Serwer MCP
  • -Bez karty
Najpopularniejszy

Standard

Dla rzeczoznawców

49 zł netto/miesiąc

60,27 zł brutto

2 000 tokenów / mies.

to 500 wywołań tego endpointu

  • -Wszystko z Free
  • -2 000 tokenów API + MCP
  • -Pełny dostęp do wyszukiwarki

Professional

Dla programistów i mniejszych zespołów

99 zł netto/miesiąc

121,77 zł brutto

5 000 tokenów / mies.

to 1250 wywołań tego endpointu

  • -Wszystko ze Standard
  • -5 000 tokenów API + MCP
  • -Pełny dostęp do wyszukiwarki

Advanced

Dla firm wycenowych i deweloperów

299 zł netto/miesiąc

367,77 zł brutto

25 000 tokenów / mies.

to 6250 wywołań tego endpointu

  • -Wszystko z Professional
  • -Redystrybucja: dane w Twoim produkcie lub usłudze (z atrybucją Cenogram)
  • -Wsparcie e-mail: odpowiedź w 24 h

Business

Dla proptech i większych zespołów

1499 zł netto/miesiąc

1843,77 zł brutto

200 000 tokenów / mies.

to 50 000 wywołań tego endpointu

  • -Wszystko z Advanced
  • -White-label: atrybucja nie jest wymagana
  • -Wsparcie e-mail: odpowiedź w 8 h

Przejście na wyższy plan zastępuje obecną subskrypcję, a rozliczenie rusza od nowa

Ceny netto, +23% VAT · Faktura VAT na żądanie · Bez umów · Free bez karty
Visa Mastercard BLIK Apple Pay Google Pay

Częste pytania

Nie, to API Cenogramu. Publiczna wyszukiwarka rejestru GUNB jest bezpłatna i też szuka po działce. My oddajemy tę samą warstwę jako REST/JSON pod bieżącym numerem działki, obok pozostałych danych urzędowych, więc nie musisz sam wczytywać ani odświeżać tego rejestru.

Nie. Te kolumny są pomijane już przy wczytywaniu, więc nie ma ich w naszej bazie ani w odpowiedzi, na żadnym planie taryfowym.

4 tokeny. Tokeny wracają, gdy działki nie ma w naszym zbiorze (not_covered), gdy odpowiedzi nie dało się policzyć (not_computed), gdy działka nie ma numeru ewidencyjnego oraz przy odpowiedziach 400 i 404. Potwierdzony brak wpisów na znanej działce (covered_no_data) jest płatny. Uwaga: działka bez numeru ewidencyjnego też wraca jako covered_no_data, więc sam ten status nie mówi, czy zapłaciłeś.

Ponad 6 mln spraw z całego kraju, rejestrowanych od 2016 r. Kopię odświeżamy partiami, a pole as_of w każdej odpowiedzi mówi, z kiedy pochodzą dopasowane wpisy.

W Claude na numer działki odpowiada narzędzie get_parcel_report. Zwraca jeden raport o działce, w którym sekcja pozwoleń stoi obok pozostałych danych urzędowych. Całość kosztuje 45 tokenów. Jak podłączyć serwer MCP.

Publiczny rejestr Głównego Urzędu Nadzoru Budowlanego (GUNB) udostępnia te dane na licencji CC0 1.0, więc wolno ich używać komercyjnie i przekazywać dalej. Kolumny z nazwiskiem inwestora i projektanta odrzucamy już przy wczytywaniu, więc nie ma ich w naszej bazie ani w odpowiedzi. Warunki korzystania z naszego API: regulamin.

Zacznij za darmo

400 tokenów na start, potem 50 tygodniowo. Klucz API w 30 sekund, bez karty.