Przejdź do treści
Dla deweloperów

Publiczne API Mapy Oświatowej

Dane o ponad 59 000 polskich placówek oświatowych — żłobkach, przedszkolach, szkołach i uczelniach — prosto z rejestrów publicznych. Bez klucza, bez rejestracji, tylko zapytania GET.

https://api.mapaoswiatowa.pl

Bez klucza i bez rejestracji

Wszystkie opisane endpointy to GET, otwarte dla każdego, odpowiedzi w JSON kodowanym w UTF-8.

120 zapytań na minutę

Limit liczony per adres IP. Po przekroczeniu API odpowiada kodem 429 i nagłówkiem Retry-After.

Kontakty tylko po jednej placówce

Telefon, e-mail i profile społecznościowe zwraca wyłącznie profil pojedynczej placówki — listy ich nie niosą, żeby nie służyły do masowego pobierania kontaktów. Pole description też jest tylko w profilu, ale z powodu wagi: to jedyny dowolny tekst obok samych enumów i liczb.

Placówka usunięta z rejestru to 410

Nie 404: adres nie zostanie użyty ponownie. Gdy placówka zmieniła adres, odpowiedź niesie redirectSlug z aktualnym slugiem.

Szybki start

Szkoły podstawowe w miejscowości

Nazwa miejscowości zakodowana, bo ma polskie znaki.

curl "https://api.mapaoswiatowa.pl/api/institutions?city=Czy%C5%BCowice&type=PRIMARY_SCHOOL"

Żłobki w promieniu 10 km

Dwa kroki: nazwa miejscowości nie jest współrzędnymi, a /nearby przyjmuje tylko te drugie.

curl "https://api.mapaoswiatowa.pl/api/locations/search?q=Czy%C5%BCowice"
curl "https://api.mapaoswiatowa.pl/api/institutions/nearby?lat=49.9828&lng=18.4088&radius=10&type=NURSERY"

Technika w województwie, wg popularności

Filtry łączą się jako kolejne parametry; sortBy ma pięć wartości.

curl "https://api.mapaoswiatowa.pl/api/institutions?voivodeship=slaskie&subtype=TECHNICAL_SECONDARY&sortBy=views&limit=20"

Przedszkola z wolnymi miejscami w powiecie

Slug powiatu jest unikalny dopiero w województwie, więc oba parametry idą razem.

curl "https://api.mapaoswiatowa.pl/api/institutions?voivodeship=mazowieckie&powiat=piaseczynski&type=PRESCHOOL&hasFreePlaces=true&limit=20"

Wynik matematyki na egzaminie ósmoklasisty 2026

Jedno zapytanie zamiast detalu per szkoła; szkoła bez podejścia ma examYears: null i zostaje w wyniku.

curl "https://api.mapaoswiatowa.pl/api/institutions?city=Warszawa&type=PRIMARY_SCHOOL&exam=E8&examYear=2026&examSubject=matematyka&limit=10"

Miejscowość ze statystykami

Ludność, rozbicie na typy, odmiana nazwy i środek miejscowości.

curl "https://api.mapaoswiatowa.pl/api/cities/warszawa"

Endpointy

Komplet parametrów każdego z nich niesie specyfikacja OpenAPI.

Wyszukiwanie i geokodowanie

  • GET/api/locations/search?q={fraza}

    Jedyny sposób zamiany nazwy miejscowości na współrzędne. Wynik typu city niesie id — to cityId, którym filtruje się placówki jednoznacznie.

  • GET/api/locations/reverse?lat={lat}&lng={lng}

    Najbliższa miejscowość dla podanych współrzędnych.

Placówki

  • GET/api/institutions

    Paginowana lista z ponad 30 filtrami. Bez danych kontaktowych i bez opisu placówki. Odpowiedź niesie institutions[] i pagination.

  • GET/api/institutions/nearby?lat={lat}&lng={lng}&radius={km}

    Placówki w promieniu, posortowane po odległości (pole distance w km). Wpisy promowane wracają osobno, w polu promoted.

  • GET/api/institutions/{id}

    Pełny profil: ponad 50 pól, zdjęcia z atrybucją, statystyki SIO, wyniki egzaminów, dane kontaktowe. Jako {id} zadziała id, slug, numer RSPO (z ?by=rspo) albo numer rejestru żłobków.

  • GET/api/institutions/popular

    Dzienna próbka najczęściej oglądanych placówek z opisem.

Miejscowości i podziały administracyjne

  • GET/api/cities?voivodeship={slug}

    Miejscowości z liczbą placówek, malejąco.

  • GET/api/cities/{slug}

    Szczegóły miejscowości: rodzaj TERYT, środek z PRNG, ludność NSP 2021, szeregi oświatowe GUS i agregaty SIO.

  • GET/api/divisions?level=powiat|gmina

    Wszystkie powiaty albo wszystkie gminy naraz, z najnowszym rocznikiem GUS BDL i SIO dla każdej jednostki osobno.

  • GET/api/divisions/{woj}

    Powiaty województwa z kodami TERC i liczbami placówek.

  • GET/api/divisions/{woj}/{powiat}

    Szczegóły powiatu. Miasto na prawach powiatu zwraca obiekt redirect ze slugiem swojej strony miejskiej.

  • GET/api/divisions/{woj}/{powiat}/{gmina}

    Szczegóły gminy razem ze wskaźnikami GUS BDL. Gmina miejska zwraca obiekt redirect.

  • GET/api/districts/{city}/{district}

    Dzielnica jednego z pięciu miast, które je mają — z seriami GUS BDL dla dzielnic Warszawy.

  • GET/api/voivodeships/{slug}

    Statystyki województwa, 10 największych miast i oficjalne szeregi GUS BDL od 2008 roku.

Statystyki

  • GET/api/statistics

    Agregaty krajowe wg typu, podtypu i województwa oraz krajowe sumy SIO za najnowszy rok szkolny.

  • GET/api/statistics/fees?type=NURSERY|PRESCHOOL

    Statystyki opłat. Przy zbyt małej próbie zakres rozszerza się z miasta na województwo, a potem na kraj — pole scope mówi, czego wynik faktycznie dotyczy.

  • GET/api/statistics/nursery-fees

    Rozkład opłat za pobyt w żłobkach na tle ustawowego progu świadczenia Aktywnie w żłobku.

  • GET/api/statistics/nursery-places

    Miejsca, dzieci i wolne miejsca w żłobkach: kraj, sektory, województwa i dzielnice pięciu miast — w jednej odpowiedzi.

  • GET/api/statistics/vocational-trends

    Krajowe trendy naboru do zawodów szkolnictwa branżowego wg danych SIO.

  • GET/api/statistics/demographic-forecast

    Prognoza ludności GUS do 2060 roku w edukacyjnych grupach wieku, dla kraju i 16 województw.

  • GET/api/statistics/specialists

    Zatrudnienie logopedów, psychologów i pedagogów oraz nauczane języki — z otwartego eksportu RSPO.

  • GET/api/statistics/exams?exam={E8|EM2023}

    Średni wynik z każdego przedmiotu i liczba zdających w 16 województwach, rok po roku — Mapa wyników egzaminów (CIE, MEN).

Patroni i zawody

  • GET/api/patrons/search?q={fraza}

    Patroni szkół z liczbą placówek.

  • GET/api/patrons/top

    Ranking patronów wraz ze slugiem strony patrona.

  • GET/api/patrons/stats

    Podział patronów na kategorie i płeć — klasyfikacja automatyczna, z datą w polu classifiedAt.

  • GET/api/patrons/{slug}

    Patron po slugu. Patron z mniej niż 10 placówkami nie ma własnej strony i zwraca 404.

  • GET/api/vocational/professions

    Zawody nauczane w technikach i szkołach branżowych — słownik do podpowiedzi i filtrowania.

  • GET/api/vocational/professions/all

    Wszystkie zawody, w których uczy dziś choć jedna szkoła, z liczbą szkół i adresem strony zawodu.

  • GET/api/vocational/professions/{slug}

    Zawód po slugu strony, z liczbą szkół, nazwą branży i podstawą programową.

Źródła danych

  • GET/api/data-sources

    Skąd pochodzi każda liczba, na jakiej licencji i kiedy trafiła do bazy. Uwaga na dwie różne daty: refreshedAt to moment naszego importu, sourceVintage — rocznik samego źródła. Dla spisu powszechnego dzieli je kilka lat.

Status

  • GET/health

    Stan usługi i jej bazy danych. Ten adres wskazuje relacja status w katalogu API.

Słowniki

Wartości zamknięte. Wartość spoza słownika w polach type i subtype zwraca błąd 400, a w polach operatorType, religion i pedagogy jest po cichu pomijana jako filtr.

type — typ placówki

NURSERYŻłobek — strona serwisu /kategoria/zlobki
PRESCHOOLPrzedszkole — strona serwisu /kategoria/przedszkola
PRIMARY_SCHOOLSzkoła podstawowa — strona serwisu /kategoria/szkoly-podstawowe
SECONDARY_SCHOOLSzkoła średnia — strona serwisu /kategoria/szkoly-srednie
POST_SECONDARYSzkoła policealna — strona serwisu /kategoria/szkoly-policealne
HIGHER_EDUCATIONSzkoła wyższa — strona serwisu /kategoria/uczelnie
CONTINUING_EDUCATIONKształcenie ustawiczne — strona serwisu /kategoria/ksztalcenie-ustawiczne
SCHOOL_COMPLEXZespół szkół — strona serwisu /kategoria/zespoly-szkol

subtype — podtyp placówki

CHILDRENS_CLUBKlub dziecięcy (Żłobek)
KINDERGARTENPrzedszkole (Przedszkole)
PRESCHOOL_POINTPunkt przedszkolny (Przedszkole)
PRESCHOOL_TEAMZespół wychowania przedszkolnego (Przedszkole)
ARTISTICArtystyczna (Szkoła podstawowa)
SPECIAL_NEEDSSpecjalna (Szkoła podstawowa)
GENERAL_SECONDARYLiceum ogólnokształcące (Szkoła średnia)
TECHNICAL_SECONDARYTechnikum (Szkoła średnia)
VOCATIONAL_1Szkoła branżowa I st. (Szkoła średnia)
VOCATIONAL_2Szkoła branżowa II st. (Szkoła średnia)
ARTISTICArtystyczna (Szkoła średnia)
ARTISTICArtystyczna (Szkoła policealna)
UNIVERSITYUniwersytet (Szkoła wyższa)
POLYTECHNICPolitechnika (Szkoła wyższa)
ACADEMYAkademia (Szkoła wyższa)
VOCATIONAL_CENTERCentrum Kształcenia Zawodowego (Kształcenie ustawiczne)
SKILLS_CENTERBranżowe Centrum Umiejętności (Kształcenie ustawiczne)

operatorType — organ prowadzący

gminaGmina
miastoMiasto
powiatPowiat
samorzad_wojSamorząd województwa
ministerMinister
cuwCentrum usług wspólnych
fundacjaFundacja
stowarzyszenieStowarzyszenie
koscielnaKościelna osoba prawna
spolkaSpółka
osoba_fizycznaOsoba fizyczna

religion — wyznanie placówki wyznaniowej

katolickaKatolicka
chrzescijanskaChrześcijańska
ewangelickaEwangelicka
luteranskaLuterańska
prawoslawnaPrawosławna
zydowskaŻydowska
muzulmanskaMuzułmańska
inne_wyznanieInne wyznanie

pedagogy — pedagogika alternatywna

montessoriMontessori
waldorfWaldorf
freinetFreinet
democraticDemokratyczna
reggio_emiliaReggio Emilia
daltonPlan daltoński
korczakPedagogika korczakowska
ibInternational Baccalaureate (IB)

voivodeship — slug województwa

dolnoslaskieDolnośląskie
kujawsko-pomorskieKujawsko-pomorskie
lubelskieLubelskie
lubuskieLubuskie
lodzkieŁódzkie
malopolskieMałopolskie
mazowieckieMazowieckie
opolskieOpolskie
podkarpackiePodkarpackie
podlaskiePodlaskie
pomorskiePomorskie
slaskieŚląskie
swietokrzyskieŚwiętokrzyskie
warminsko-mazurskieWarmińsko-mazurskie
wielkopolskieWielkopolskie
zachodniopomorskieZachodniopomorskie

Przedszkole to type PRESCHOOL, nie KINDERGARTEN — ta wartość należy do słownika subtype.

Jak czytać te dane

Pięć reguł, które w tych zbiorach najłatwiej złamać. Pełny opis źródeł i zastrzeżeń niesie llms.txt.

Brak wartości nie jest zerem

null w danych SIO, w szeregach GUS i w polach rejestrowych znaczy nie zgłoszono. Wyjątkiem są miejsca i przyjęci w przedszkolach, gdzie zdarzają się prawdziwe zera.

Zespołu szkół nie sumuje się z jego szkołami

SIO wykazuje uczniów przy szkołach członkowskich, a nauczycieli przy zespole. Dzielenie uczniów przez nauczycieli na poziomie jednej placówki daje liczbę bez znaczenia.

Organ prowadzący to nie sektor

operatorType mówi, kto placówkę prowadzi, i jest wypełniony dla około 59% wpisów. Podział na publiczne i niepubliczne niesie osobne pole isPublic, wypełnione dla około 90%.

Żłobki i uczelnie nie raportują do SIO

sioAvailability przyjmuje wtedy wartość out-of-scope. To brak obowiązku sprawozdawczego, nigdy zero dzieci ani zaniedbanie placówki. Miejsca w żłobkach podaje za to rejestr MRPiPS — stąd freePlaces i nurseryStats — ale to osobne uniwersum pomiaru i osobna data, więc z liczbami SIO się go nie sumuje.

Rejestr, SIO i GUS to trzy różne uniwersa pomiaru

GUS liczy jednostki sprawozdawcze wg lokalizacji, SIO wpisy rejestrowe na 30 września, a ten serwis wpisy rejestrowe. Różnic między nimi nie należy przedstawiać jako sprzeczności.

Licencje i cytowanie

Dane pochodzą z rejestrów publicznych i z OpenStreetMap, a licencja zależy od pola.

OpenStreetMap — ODbL 1.0

Godziny otwarcia, dostępność dla wózków, profile społecznościowe, a dla placówek bez identyfikatora rejestrowego — cały wpis. Wymaga podania OpenStreetMap jako źródła i zachowania licencji dla danych pochodnych.

PRNG i GUS BDL — CC BY 4.0

Środek miejscowości i odmiana jej nazwy pochodzą z Państwowego Rejestru Nazw Geograficznych; ludność i szeregi oświatowe — z Banku Danych Lokalnych GUS. Dla PRNG obowiązuje formuła: wykorzystano materiały państwowego zasobu geodezyjnego i kartograficznego.

System Informacji Oświatowej — CC BY 4.0 oraz CC0

Wykaz placówek jest na licencji CC BY 4.0 — cytuj MEN, System Informacji Oświatowej, wraz z rokiem szkolnym i stanem na 30 września. Arkusz przedszkolny oraz zbiór o zawodach szkolnictwa branżowego są udostępnione jako CC0.

Zdjęcia z Wikimedia Commons

Zdjęcie z Commons niesie w polu attribution autora, licencję i adres strony pliku. Kto wykorzystuje je dalej, zachowuje warunki tej licencji i podaje autora.

Odkrywalność dla agentów

Cztery adresy, po których automat rozpoznaje to API bez czytania tej strony.

Strona główna oraz strony placówek, miejscowości i wpisów blogowych odpowiadają wersją Markdown, gdy żądanie niesie nagłówek Accept: text/markdown. Adres pozostaje ten sam.

Najczęściej zadawane pytania

Co się stanie po przekroczeniu limitu zapytań?

API odpowiada kodem 429 i nagłówkiem `Retry-After`. Limit 120 zapytań na minutę liczony jest per adres IP, więc rozsądniej jest odpytywać sekwencyjnie i cache'ować odpowiedzi po swojej stronie niż zrównoleglać zapytania.

Czy mogę wykorzystać te dane komercyjnie?

Tak, przy zachowaniu licencji źródeł oraz wskazaniu Mapy Oświatowej jako źródła tam, gdzie prezentujesz pobrane dane. Dane z OpenStreetMap są objęte licencją ODbL 1.0 (wymaga podania źródła i zachowania licencji dla danych pochodnych), dane PRNG, GUS BDL i wykaz SIO — licencją CC BY 4.0, a arkusz przedszkolny SIO i zbiór o zawodach są udostępnione jako CC0. Warunkiem korzystania z API pozostaje regulamin: nie służy ono do odtworzenia bazy serwisu.

Jak cytować dane o liczbie uczniów?

Z pola sioStats razem z rokiem szkolnym i informacją, że dane pochodzą z Systemu Informacji Oświatowej MEN (stan na 30 września). Pole studentCount pochodzi z innego źródła i nie jest z SIO uzgadniane.

Dlaczego dwie miejscowości o tej samej nazwie zwracają różne wyniki?

Bo kilka miejscowości w Polsce nosi tę samą nazwę. Filtr city dopasowuje po nazwie, więc dla jednoznacznego wyniku ustal cityId przez /api/locations/search i filtruj po nim.

Czy mogę pobrać całą bazę jednym zapytaniem?

Nie. Listy są stronicowane po maksymalnie 100 wpisów, a endpoint /api/points, który zwraca wszystkie punkty naraz, służy wyłącznie do renderowania mapy — nie niesie nazw ani żadnych pól opisowych.

Budujesz coś na tych danych?

Napisz, czego brakuje w API albo co w danych wygląda na błąd. Zgłoszenia o placówkach trafiają do weryfikacji i poprawiają bazę dla wszystkich.

Napisz do nas