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.

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
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)
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.

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

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