Kod TERYT województwa, powiatu i gminy - przez API, w JSON
Pobierz kod TERYT województwa, powiatu albo gminy i zejdź po drzewie podziału administracyjnego aż do obrębów. Odpowiedź w JSON, po zwykłym HTTP GET, bez konta i bez klucza API.
Klucz przychodzi mailem, bez karty. Autoryzacja to jeden nagłówek Authorization: Bearer. Poniższe wywołanie możesz uruchomić od razu, bez rejestracji.
[
{
"code": "146502",
"name": "Bemowo",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146503",
"name": "Białołęka",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146504",
"name": "Bielany",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146505",
"name": "Mokotów",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146506",
"name": "Ochota",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146508",
"name": "Praga-Północ",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146507",
"name": "Praga-Południe",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146509",
"name": "Rembertów",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146510",
"name": "Śródmieście",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146511",
"name": "Targówek",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146512",
"name": "Ursus",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146513",
"name": "Ursynów",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146501",
"name": "Warszawa",
"typeName": "gmina miejska",
"level": "municipality"
},
{
"code": "146514",
"name": "Wawer",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146515",
"name": "Wesoła",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146516",
"name": "Wilanów",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146517",
"name": "Włochy",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146518",
"name": "Wola",
"typeName": "dzielnica",
"level": "municipality"
},
{
"code": "146519",
"name": "Żoliborz",
"typeName": "dzielnica",
"level": "municipality"
}
]
Podaj kod nadrzędny, a dostaniesz listę jednostek o jeden poziom niżej: kod województwa zwraca powiaty, kod powiatu gminy, kod gminy obręby. Każda pozycja niesie kod, nazwę, rodzaj jednostki i poziom. To jest podział administracyjny do zejścia po kodach, a nie pełny rejestr TERYT - nie ma tu miejscowości, ulic ani historii zmian kodów.
Pola odpowiedzi
Tabela wyjaśnia każde pole z przykładowej odpowiedzi wyżej.
| Pole | Typ | Znaczenie |
|---|---|---|
| code | string | kod jednostki: dwie cyfry dla województwa, cztery dla powiatu, sześć dla gminy. Na tych poziomach jest to kod TERYT, a obręb ma tu identyfikator z ewidencji gruntów i budynków, nie kod TERYT. Tego kodu użyjesz jako parent w kolejnym zapytaniu, żeby zejść poziom niżej |
| name | string | nazwa jednostki. Jeśli obręb nie ma nazwy w zbiorze, pole zawiera jego identyfikator, więc nigdy nie jest puste |
| typeName | string | null | rodzaj jednostki na poziomie gminy: gmina miejska, gmina wiejska, gmina miejsko-wiejska, dzielnica w Warszawie albo delegatura w Krakowie i Łodzi. Puste (null) dla województw, powiatów i obrębów |
| level | string | poziom podziału: voivodeship, county, municipality albo precinct dla obrębu. Mówi, na którym piętrze drzewa jesteś, niezależnie od długości kodu |
Jak czytać odpowiedź
Miejsca, w których tę odpowiedź łatwo przeczytać źle.
Obręb to czwarty poziom, ale spoza TERYT
Kod województwa, powiatu i gminy pochodzi z rejestru TERYT. Czwarty poziom, obręby ewidencyjne, dziedziczy sześć pierwszych cyfr z kodu gminy, ale sam z TERYT nie pochodzi: rejestr obrębów prowadzi starosta w uzgodnieniu z Głównym Geodetą Kraju, a rozporządzenie o TERYT wymienia tylko województwa, powiaty i gminy. Zejście na obręby więc działa, ale nie nazywaj ich kodem TERYT.
Warszawa stoi w wyniku obok swoich osiemnastu dzielnic
Zapytanie parent=1465 zwraca dziewiętnaście pozycji: osiemnaście dzielnic z typeName równym dzielnica oraz 146501 Warszawa z typeName równym gmina miejska. To nie jest duplikat. Warszawa jest gminą miejską na prawach powiatu, a jej dzielnice to osobne jednostki pomocnicze z własnymi kodami. Zależnie od tego, czego szukasz, pytasz o kod miasta albo o kod dzielnicy - to różne jednostki, nie dwa zapisy tej samej.
Ta sama nazwa bywa dwiema różnymi gminami
W powiecie wałeckim (parent=3217) nazwa Wałcz pojawia się dwa razy: 321701 z typeName równym gmina miejska i 321705 z typeName równym gmina wiejska. To dwie odrębne gminy o tej samej nazwie - miasto Wałcz i otaczająca je gmina wiejska - z różnymi kodami. Rodzaju jednostki nie odczytasz z cyfr sześciocyfrowego kodu; niesie go pole typeName. Rozstrzyga więc typeName razem z pełnym kodem, nie sama nazwa.
Parametr parent i filtr teryt przyjmują różne formaty kodu
Parametr parent przyjmuje kod z dwóch, czterech albo sześciu cyfr i tym schodzi po hierarchii, a inny format zwraca HTTP 400. Filtr transakcji teryt przyjmuje dodatkowo kod gminy z rodzajem (321705_2) oraz identyfikator obrębu (321705_2.0013). Kody pięcio- i siedmiocyfrowe odrzucają oba endpointy. Przy HTTP 400 sprawdź liczbę cyfr i parametr, do którego trafił kod.
Gmina bez wydzielonych obrębów wraca pustą listą
Kod gminy zwraca jej obręby, ale gmina z jednym obrębem albo bez wydzielonych obrębów oddaje pustą tablicę [], a nie listę jednoelementową. Pusta odpowiedź nie odróżnia się wtedy od gminy, której obrębów po prostu nie mamy. To poprawny wynik, a nie błąd: zapytanie zadziałało, tylko nie ma czego wyliczać poziom niżej.
Kod gminy jest kluczem do transakcji i działek
Kod, który tu wyciągniesz, zadziała potem w innych endpointach. Wyszukiwarka transakcji przyjmuje go w filtrze teryt: teryt=321705_2 zawęża wynik do jednej gminy, a teryt=321705_2.0013 do jednego obrębu, bo im dłuższy kod, tym węższy zakres. Te trasy wymagają klucza API, więc tutaj pokazujemy sam kształt zapytania. Identyfikację działek po kodzie opisuje osobna strona, /dane/uldk.
Cennik
Jedno wywołanie tego endpointu nie zużywa tokenów. Endpoint nie wymaga klucza API i nie zużywa tokenów, także gdy zwróci błąd. Limit to 20 zapytań na minutę z jednego adresu IP. Wartość parent w formacie innym niż dwie, cztery albo sześć cyfr zwraca HTTP 400 i też nic nie kosztuje.
Free
Na próbę
400 tokenów na start, potem 50 tygodniowo
to wywołanie nie zużywa tokenów
- -Wszystkie endpointy
- -Serwer MCP
- -Bez karty
Standard
Dla rzeczoznawców
60,27 zł brutto
2 000 tokenów / mies.
to wywołanie nie zużywa tokenów
- -Wszystko z Free
- -2 000 tokenów API + MCP
- -Pełny dostęp do wyszukiwarki
Professional
Dla programistów i mniejszych zespołów
121,77 zł brutto
5 000 tokenów / mies.
to wywołanie nie zużywa tokenów
- -Wszystko ze Standard
- -5 000 tokenów API + MCP
- -Pełny dostęp do wyszukiwarki
Advanced
Dla firm wycenowych i deweloperów
367,77 zł brutto
25 000 tokenów / mies.
to wywołanie nie zużywa tokenów
- -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
1843,77 zł brutto
200 000 tokenów / mies.
to wywołanie nie zużywa tokenów
- -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
Częste pytania
Nie, to API Cenogramu. Oficjalne API TERYT prowadzi GUS: działa po SOAP, zwraca XML, a konto zakłada się mailem po weryfikacji - za to jest bezpłatne i ma pełny rejestr. My oddajemy podział administracyjny do poziomu gminy w JSON, po HTTP GET i bez klucza, żeby kodem od razu zapytać o transakcje i dane działek. Pełny rejestr TERYT prowadzi GUS w swoim oficjalnym API.
To urzędowy kod jednostki podziału terytorialnego kraju: dwie cyfry dla województwa, cztery dla powiatu, sześć dla gminy. Kolejne cyfry doklejają się od lewej, więc kod gminy zawiera w sobie kod swojego powiatu i województwa. Dzięki temu jeden kod jednoznacznie wskazuje jednostkę i jej miejsce w hierarchii.
Zejdź po drzewie: GET /api/v1/locations bez parametru zwraca województwa, a każdy kod podany jako parent schodzi poziom niżej, aż do gminy i obrębów. W Claude robi to narzędzie list_locations. Oficjalną wyszukiwarkę kodów prowadzi też GUS w serwisie eTERYT.
Dziś API nie ma endpointu, który z nazwy zwróci kod. Kod znajdziesz, schodząc po drzewie od województwa w dół. Trasa /api/districts przyjmuje nazwę, ale służy do jej potwierdzenia i kodu nie zwraca.
Miejscowości (SIMC), ulic (ULIC), historii zmian kodów, dat obowiązywania i geometrii jednostek. Trzymamy podział administracyjny do gminy oraz obręby dziedziczące kod gminy - tyle, ile trzeba, żeby zejść po kodzie i użyć go jako klucza. Po pełny rejestr z miejscowościami i ulicami sięgnij do oficjalnego API TERYT prowadzonego przez GUS.
W Claude użyj narzędzia list_locations: podaj kod województwa, żeby pobrać powiaty, kod powiatu, żeby pobrać gminy, albo kod gminy, żeby pobrać obręby. Wyszukiwanie po nazwie w tym samym narzędziu jest przestarzałe i nie warto go używać w nowych integracjach. Jak podłączyć serwer MCP.
TERYT, czyli Krajowy Rejestr Urzędowy Podziału Terytorialnego Kraju, prowadzi Główny Urząd Statystyczny i udostępnia go publicznie. Kody i nazwy jednostek podajemy tak, jak figurują w rejestrze. Obrębów ewidencyjnych rejestr TERYT nie obejmuje - ich kody i nazwy pochodzą z ewidencji gruntów i budynków, którą prowadzi starosta. Oficjalny rejestr i jego pełny zakres: TERYT GUS. Warunki korzystania z naszego API: regulamin.
Zacznij za darmo
400 tokenów na start, potem 50 tygodniowo. Klucz API w 30 sekund, bez karty.