Dokumentasi

API wilayah Indonesia untuk formulir alamat dan pencarian lokasi.

Gunakan API ini untuk menampilkan provinsi, kabupaten/kota, kecamatan, dan kelurahan/desa secara berjenjang (cascading).

Base URL Loading...

Struktur Data Wilayah

Data wilayah disusun secara bertingkat. Anda memerlukan kode area sebelumnya untuk mencari area di bawahnya.

πŸ—ΊοΈ
ProvinsiAwalan
βž”
πŸ™οΈ
Kab/KotaButuh kode Provinsi
βž”
🏘️
KecamatanButuh kode Kab/Kota
βž”
🏑
Desa/KelurahanButuh kode Kecamatan

Coba Langsung

Simulasikan form alamat dengan API ini. Pilih tiap tingkat wilayah untuk melihat request berjenjang secara otomatis.

Menunggu aksi...
// Hasil respons API (JSON) akan tampil di sini

Mulai di Sini

1

Muat provinsi

Gunakan saat halaman dimuat untuk mengisi dropdown pertama.

GET /api/locations/provinces
2

Muat wilayah turunan

Saat pengguna memilih provinsi, gunakan kodenya untuk memuat kabupaten/kota, lalu ulangi untuk kecamatan dan desa.

GET /api/locations/regencies?province_code=11
3

Periksa lokasi

Gunakan endpoint detail untuk koordinat, lalu minta boundary saat ingin menggambarkannya di peta.

GET /api/locations/{code}
GET /api/locations/{code}/boundary
4

Simpan nilai stabil

Simpan full_code dan name di sistem Anda untuk referensi alamat yang konsisten.

Endpoint

Semua endpoint mengembalikan JSON. Tambahkan code_format=short jika hanya memerlukan kode level turunan.

Ganti placeholder seperti {province_code} dengan nilai dari endpoint sebelumnya.

Health check GET /healthz
Total dan hitungan berdasarkan wilayah GET /api/locations/stats Opsional: province_code={province_code}, regency_code={regency_code}, district_code={district_code}
Provinsi GET /api/locations/provinces
Kabupaten / kota GET /api/locations/regencies?province_code={province_code}
Kecamatan GET /api/locations/districts?regency_code={regency_code}
Desa / kelurahan GET /api/locations/villages?district_code={district_code}
Cari kode pos GET /api/postal-codes/{postal_code} Mengembalikan desa/kelurahan yang menggunakan kode pos tersebut beserta hierarkinya.
Cari berdasarkan nama GET /api/locations/search?q={query}&limit={limit}
Detail lokasi GET /api/locations/{code} Mengembalikan hierarki, koordinat jika tersedia, dan has_boundary.
Boundary lokasi GET /api/locations/{code}/boundary Mengembalikan leaflet_path dalam urutan Leaflet [latitude, longitude]. Boundary yang tidak tersedia mengembalikan 404.
Daftar pulau GET /api/islands?province_code={province_code}&page=1&limit=50 province_code bersifat opsional. Pagination default halaman 1, limit 50, maksimum 500.
Detail pulau GET /api/islands/{code} Gunakan kode pulau seperti 11.01.40001.
Penduduk GET /api/locations/{code}/population Mengembalikan male, female, total, sumber, tanggal referensi, dan waktu import.
Luas wilayah GET /api/locations/{code}/area Mengembalikan area_km2, sumber, tanggal referensi, dan waktu import.

Format Respons

Respons berhasil menggunakan envelope yang sama. Data dapat berupa object atau array, tergantung endpoint.

{
  "log_id": "019ab0f0-c8ec-7d25-9f62-2f23d92fcda3",
  "code": 200,
  "status": true,
  "message": "Success",
  "data": [
    {
      "code": "11",
      "full_code": "11",
      "name": "Aceh",
      "level": "province"
    }
  ]
}

Contoh Implementasi

const BASE_URL = '__BASE_URL__'

async function getProvinces() {
  const response = await fetch(`${BASE_URL}/api/locations/provinces`)
  const json = await response.json()

  if (!json.status) {
    throw new Error(json.message)
  }

  return json.data
}

Format Kode

Gunakan full code saat menyimpan data. Short code hanya untuk tampilan UI atau form lama.

Level Full code Short code
Provinsi 11 11
Kabupaten/kota 11.01 01
Kecamatan 11.01.01 01
Desa/kelurahan 11.01.01.2001 2001