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.
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
Nazwy z polskimi znakami trzeba zakodować
curl "https://api.mapaoswiatowa.pl/api/institutions?city=Czy%C5%BCowice&type=PRIMARY_SCHOOL"Żłobki w promieniu 10 km
Dwa kroki: najpierw współrzędne, potem promień
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 można łączyć, sortowanie ma trzy wartości
curl "https://api.mapaoswiatowa.pl/api/institutions?voivodeship=slaskie&subtype=TECHNICAL_SECONDARY&sortBy=views&limit=20"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. 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, 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/{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/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/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.
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.
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 |
| PRESCHOOL | Przedszkole — strona serwisu /kategoria/przedszkola |
| PRIMARY_SCHOOL | Szkoła podstawowa — strona serwisu /kategoria/szkoly-podstawowe |
| SECONDARY_SCHOOL | Szkoła średnia — strona serwisu /kategoria/szkoly-srednie |
| POST_SECONDARY | Szkoła policealna — strona serwisu /kategoria/szkoly-policealne |
| HIGHER_EDUCATION | Szkoła wyższa — strona serwisu /kategoria/uczelnie |
| CONTINUING_EDUCATION | Kształcenie ustawiczne — strona serwisu /kategoria/ksztalcenie-ustawiczne |
| SCHOOL_COMPLEX | Zespół szkół — strona serwisu /kategoria/zespoly-szkol |
subtype — podtyp placówki
| CHILDRENS_CLUB | Klub dziecięcy (Żłobek) |
| KINDERGARTEN | Przedszkole (Przedszkole) |
| PRESCHOOL_POINT | Punkt przedszkolny (Przedszkole) |
| PRESCHOOL_TEAM | Zespół wychowania przedszkolnego (Przedszkole) |
| ARTISTIC | Artystyczna (Szkoła podstawowa) |
| SPECIAL_NEEDS | Specjalna (Szkoła podstawowa) |
| GENERAL_SECONDARY | Liceum ogólnokształcące (Szkoła średnia) |
| TECHNICAL_SECONDARY | Technikum (Szkoła średnia) |
| VOCATIONAL_1 | Szkoła branżowa I st. (Szkoła średnia) |
| VOCATIONAL_2 | Szkoła branżowa II st. (Szkoła średnia) |
| UNIVERSITY | Uniwersytet (Szkoła wyższa) |
| POLYTECHNIC | Politechnika (Szkoła wyższa) |
| ACADEMY | Akademia (Szkoła wyższa) |
| VOCATIONAL_CENTER | Centrum Kształcenia Zawodowego (Kształcenie ustawiczne) |
| SKILLS_CENTER | Branżowe Centrum Umiejętności (Kształcenie ustawiczne) |
operatorType — organ prowadzący
| gmina | Gmina |
| miasto | Miasto |
| powiat | Powiat |
| samorzad_woj | Samorząd województwa |
| minister | Minister |
| cuw | Centrum usług wspólnych |
| fundacja | Fundacja |
| stowarzyszenie | Stowarzyszenie |
| koscielna | Kościelna osoba prawna |
| spolka | Spółka |
| osoba_fizyczna | Osoba fizyczna |
religion — wyznanie placówki wyznaniowej
| katolicka | Katolicka |
| chrzescijanska | Chrześcijańska |
| ewangelicka | Ewangelicka |
| luteranska | Luterańska |
| prawoslawna | Prawosławna |
| zydowska | Żydowska |
| muzulmanska | Muzułmańska |
| inne_wyznanie | Inne wyznanie |
pedagogy — pedagogika alternatywna
| montessori | Montessori |
| waldorf | Waldorf |
| freinet | Freinet |
| democratic | Demokratyczna |
| reggio_emilia | Reggio Emilia |
| dalton | Plan daltoński |
| korczak | Pedagogika korczakowska |
| ib | International Baccalaureate (IB) |
voivodeship — slug województwa
| dolnoslaskie | Dolnośląskie |
| kujawsko-pomorskie | Kujawsko-pomorskie |
| lubelskie | Lubelskie |
| lubuskie | Lubuskie |
| lodzkie | Łódzkie |
| malopolskie | Małopolskie |
| mazowieckie | Mazowieckie |
| opolskie | Opolskie |
| podkarpackie | Podkarpackie |
| podlaskie | Podlaskie |
| pomorskie | Pomorskie |
| slaskie | Śląskie |
| swietokrzyskie | Świętokrzyskie |
| warminsko-mazurskie | Warmińsko-mazurskie |
| wielkopolskie | Wielkopolskie |
| zachodniopomorskie | Zachodniopomorskie |
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.
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.
/.well-known/api-catalog
Katalog API wg RFC 9727 — dokument linkset, od którego agent zaczyna. Wskazuje specyfikację, tę stronę i endpoint statusu.
/openapi.json
Specyfikacja OpenAPI 3.1: wszystkie ścieżki, parametry i zamknięte słowniki. Do wczytania w generatorze klienta albo przeglądarce specyfikacji.
/llms.txt
Kontrakt opisowy dla modeli językowych: pola, źródła danych, reguły interpretacji i przykłady zapytań.
/health
Stan usługi. Odpowiada 200, gdy API i baza danych działają, a 503, gdy baza jest nieosiągalna.
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
Czy API wymaga klucza albo rejestracji?
Nie. Wszystkie opisane endpointy są otwarte i przyjmują wyłącznie zapytania GET. Obowiązuje jedynie limit 120 zapytań na minutę z jednego adresu IP.
Czy mogę wykorzystać te dane komercyjnie?
Tak, przy zachowaniu licencji źródeł. 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.
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