← Blog
Artikel

API Sekolah Indonesia: Akses 200 Ribu Data Sekolah NPSN via REST API

Akses 200 ribu data sekolah Indonesia dengan NPSN, alamat, akreditasi, dan koordinat via REST API. Contoh integrasi pencarian sekolah untuk edutech dan PPDB.

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.

Mulai Sekarang

Mulai Integrasi
Hari Ini

Daftar gratis, ambil API key, dan langsung call endpoint pertama Anda — tanpa kartu kredit, tanpa proses approval yang ribet.

Visualisasi gelombang titik