Butuh data sekolah untuk fitur pencarian sekolah terdekat, verifikasi NPSN, atau analisis sebaran pendidikan? Dataset Dapodik tidak tersedia sebagai API publik yang enak dipakai, dan scraping sumber terpercaya itu rapuh. API Sekolah Indonesia menyediakan direktori 200.000+ sekolah se-Indonesia (SD, SMP, SMA, SMK, SLB) lewat REST API sederhana, lengkap dengan NPSN, alamat, akreditasi, dan koordinat.
Apa Saja yang Dapat
| Field | Contoh |
|---|---|
| npsn | 20219557 |
| name | SMA NEGERI 3 BANDUNG |
| jenis | SMA (SD, SMP, SMA, SMK, SLB) |
| status | Negeri atau Swasta |
| address, postal_code | Jl. Belitung No. 8, 40113 |
| accreditation | A, B, C |
| lat, lng | koordinat untuk fitur geosearch |
Endpoint
Base URL: https://use.apiindonesia.id/api/v1/sekolah
| Method | Endpoint | Keterangan |
|---|---|---|
| GET | / |
List sekolah dengan filter provinsi, kabupaten, jenjang, status |
| GET | /search?q= |
Cari sekolah berdasarkan nama (maks 50 hasil) |
| GET | /:npsn |
Detail satu sekolah berdasarkan NPSN |
Filter yang tersedia di endpoint list: provinsi_id, kabupaten_id, jenis (SD, SMP, SMA, SMK, SLB), status (Negeri atau Swasta), plus paginasi page dan per_page (default 50, maksimum 200).
1. Cari Sekolah Berdasarkan Nama
Paling sering dibutuhkan untuk autocomplete di form pendaftaran:
curl "https://use.apiindonesia.id/api/v1/sekolah/search?q=taruna" \
-H "x-api-key: aip_live_xxx"
{
"data": [
{
"npsn": "20302879",
"name": "SMA TARUNA NUSANTARA",
"jenis": "SMA",
"status": "Swasta",
"province_id": "33",
"regency_id": "3308",
"accreditation": "A",
"is_active": 1
}
]
}
2. List Sekolah dengan Filter Wilayah dan Jenjang
Contoh: semua SMA Negeri di Kota Bandung:
curl "https://use.apiindonesia.id/api/v1/sekolah?kabupaten_id=3273&jenis=SMA&status=Negeri" \
-H "x-api-key: aip_live_xxx"
{
"data": [
{
"npsn": "20219557",
"name": "SMA NEGERI 3 BANDUNG",
"jenis": "SMA",
"status": "Negeri",
"province_id": "32",
"regency_id": "3273",
"district_id": "3273190",
"village_id": "3273190004",
"address": "Jl. Belitung No. 8",
"postal_code": "40113",
"lat": -6.9106,
"lng": 107.6183,
"phone": "0224235154",
"email": null,
"website": null,
"accreditation": "A",
"is_active": 1
}
],
"meta": { "total": 27, "page": 1, "per_page": 50, "total_pages": 1 }
}
Kode kabupaten_id dan provinsi_id mengikuti kode wilayah Kemendagri yang sama dengan API Wilayah Indonesia, jadi Anda bisa menggabungkan keduanya untuk filter berantai (provinsi, lalu kabupaten) di UI.
3. Detail Satu Sekolah via NPSN
Untuk verifikasi NPSN yang diinput user (misalnya di form beasiswa atau PPDB online), endpoint detail mengembalikan data lengkap termasuk nama provinsi dan kabupaten:
curl "https://use.apiindonesia.id/api/v1/sekolah/20219557" \
-H "x-api-key: aip_live_xxx"
{
"data": {
"npsn": "20219557",
"name": "SMA NEGERI 3 BANDUNG",
"jenis": "SMA",
"status": "Negeri",
"address": "Jl. Belitung No. 8",
"postal_code": "40113",
"accreditation": "A",
"is_active": 1,
"province_name": "JAWA BARAT",
"regency_name": "KOTA BANDUNG"
}
}
Contoh Integrasi: Verifikasi Sekolah di Form Beasiswa (Python)
import os
import requests
BASE = "https://use.apiindonesia.id/api/v1/sekolah"
HEADERS = {"x-api-key": os.environ["API_INDONESIA_KEY"]}
def verifikasi_sekolah(npsn: str) -> dict:
r = requests.get(f"{BASE}/{npsn}", headers=HEADERS)
if r.status_code == 404:
return {"valid": False, "reason": "NPSN tidak ditemukan"}
r.raise_for_status()
s = r.json()["data"]
return {
"valid": True,
"nama": s["name"],
"jenjang": s["jenis"],
"akreditasi": s["accreditation"],
"wilayah": f'{s["regency_name"]}, {s["province_name"]}',
}
print(verifikasi_sekolah("20219557"))
Contoh JavaScript: Autocomplete Pencarian Sekolah
const BASE = "https://use.apiindonesia.id/api/v1/sekolah";
const input = document.querySelector("#sekolah-input");
const list = document.querySelector("#sekolah-list");
let timer;
input.addEventListener("input", () => {
clearTimeout(timer);
timer = setTimeout(async () => {
if (input.value.length < 3) return;
const res = await fetch(`${BASE}/search?q=${encodeURIComponent(input.value)}`, {
headers: { "x-api-key": process.env.API_INDONESIA_KEY },
});
const { data } = await res.json();
list.innerHTML = data
.map((s) => `<li data-npsn="${s.npsn}">${s.name} (${s.jenis}, ${s.status})</li>`)
.join("");
}, 300);
});
Use Case untuk Edutech dan Layanan Publik
- Platform PPDB dan bimbel: pencarian sekolah berbasis nama dan wilayah, dengan data akreditasi sebagai filter.
- Verifikasi NPSN di fintech pendidikan: pastikan sekolah yang diajukan di produk pembiayaan pendidikan benar-benar ada dan aktif.
- Peta sebaran sekolah: field lat dan lng siap dipakai di Google Maps atau Mapbox.
- Riset pendidikan: analisis sebaran sekolah negeri vs swasta per kabupaten.
Mulai Sekarang
Pelajari parameter lengkap di halaman API Data Sekolah Indonesia, dapatkan API key gratis di dashboard.apiindonesia.id/register, dan baca referensi endpoint lain di docs.apiindonesia.id.
