Data Supplier Indonesia via API untuk Procurement dan Marketplace
Cara ambil dan strukturkan data supplier atau vendor Indonesia via API: kode wilayah resmi, kode pos, dan validasi alamat untuk procurement dan marketplace.
Cari di Google "data supplier Indonesia" dan yang muncul kebanyakan adalah file Excel berjualan, PDF tidak terawat, atau jasa scraping mahal. Untuk tim procurement dan developer marketplace, kebutuhannya sesederhana itu: data vendor atau supplier yang terstruktur, bisa dipanggil programatik, dan selalu update.
Di API Indonesia kita tidak menjual database supplier pihak ketiga, tapi ada kombinasi data yang menutup sebagian besar kebutuhan praktis: data wilayah administratif lengkap (provinsi sampai desa dengan kode pos dan koordinat) yang jadi tulang punggung data vendor Anda. Data supplier sendiri (nama PT, NPWP, alamat gudang, kontak) biasanya sudah ada di ERP atau spreadsheet Anda; yang bikin kacau adalah datanya tidak bisa dipetakan ke wilayah yang konsisten. Di situlah API wilayah berperan.
Arsitektur Umum: Data Vendor Anda Plus Wilayah Resmi
Pola yang paling sering dipakai tim procurement dan marketplace:
| Kebutuhan | Sumber data |
|---|---|
| Nama vendor, NPWP, kontak PIC | Database internal (ERP, spreadsheet sourcing) |
| Kode provinsi, kabupaten, kecamatan, desa | API Wilayah Indonesia |
| Kode pos gudang/vendor | API Wilayah (field postal_code per kelurahan) |
| Validasi alamat saat onboarding vendor | API Wilayah (search plus hierarki kode wilayah) |
Hasilnya: alamat vendor di database Anda menyimpan kode wilayah resmi (bukan teks bebas), jadi filter "supplier di Jawa Barat, kabupaten X" jadi query sederhana, bukan fuzzy matching yang rawan salah.
Endpoint Wilayah yang Relevan
Base URL: https://use.apiindonesia.id/api/v1/wilayah
| Method | Endpoint | Keterangan |
|---|---|---|
| GET | /provinsi |
38 provinsi |
| GET | /kabupaten?provinsi_id= |
Kabupaten/kota per provinsi |
| GET | /kecamatan?kabupaten_id= |
Kecamatan per kabupaten |
| GET | /kelurahan?kecamatan_id= |
Kelurahan/desa lengkap dengan kode pos |
| GET | /search?q= |
Cari semua level sekaligus |
Semua endpoint list mendukung paginasi (page, per_page maksimum 100).
1. Ambil Referensi Wilayah Sekali, Cache Selamanya
Data wilayah hampir tidak berubah, jadi ambil satu kali saat setup dan simpan lokal:
curl "https://use.apiindonesia.id/api/v1/wilayah/provinsi?page=1&per_page=100" \
-H "x-api-key: aip_live_xxx"
{
"data": [
{ "id": "32", "code": "32", "name": "JAWA BARAT", "alt_name": "Jawa Barat", "lat": -6.914744, "lng": 107.609811, "is_active": 1 }
],
"meta": { "total": 38, "page": 1, "per_page": 100, "total_pages": 1 }
}
2. Onboarding Vendor: Resolve Alamat Jadi Kode Wilayah
Saat vendor baru daftar lewat form, alamat yang diketik sering tidak konsisten ("Jaksel", "Kota Bekasi", "Bekasi"). Solusinya: search nama wilayah, lalu minta vendor konfirmasi pilihan yang muncul:
curl "https://use.apiindonesia.id/api/v1/wilayah/search?q=cimahi" \
-H "x-api-key: aip_live_xxx"
{
"data": [
{ "id": "3277", "name": "KOTA CIMAHI", "alt_name": "Kota Cimahi", "level": "kabupaten" }
],
"meta": { "total": 1, "page": 1, "per_page": 20, "total_pages": 1 }
}
Setelah vendor memilih "Kota Cimahi", ambil daftar kecamatan untuk dropdown berikutnya:
curl "https://use.apiindonesia.id/api/v1/wilayah/kecamatan?kabupaten_id=3277" \
-H "x-api-key: aip_live_xxx"
Dan untuk kecamatan yang dipilih, ambil kelurahan beserta kode pos:
curl "https://use.apiindonesia.id/api/v1/wilayah/kelurahan?kecamatan_id=3277010" \
-H "x-api-key: aip_live_xxx"
{
"data": [
{
"id": "3277010001",
"district_id": "3277010",
"code": "32.77.01.1001",
"name": "LEUWIGAJAH",
"alt_name": "Leuwigajah",
"postal_code": "40532",
"is_courier_support": 1,
"lat": -6.9083,
"lng": 107.5408,
"is_active": 1
}
],
"meta": { "total": 4, "page": 1, "per_page": 20, "total_pages": 1 }
}
3. Contoh Integrasi: Sinkronisasi Data Supplier di Python
Skrip ini menyimpan referensi wilayah lalu melengkapi data supplier internal dengan kode wilayah dan kode pos:
import csv
import os
import requests
BASE = "https://use.apiindonesia.id/api/v1/wilayah"
HEADERS = {"x-api-key": os.environ["API_INDONESIA_KEY"]}
def build_region_index() -> dict:
# Fetch semua kabupaten/kota dan map nama-nya ke kode resmi.
index = {}
page = 1
while True:
r = requests.get(f"{BASE}/kabupaten", headers=HEADERS,
params={"page": page, "per_page": 100}).json()
for row in r["data"]:
index[row["alt_name"].lower()] = row["code"]
if page >= r["meta"]["total_pages"]:
break
page += 1
return index
def enrich_suppliers(suppliers, index):
for s in suppliers:
key = s["kota"].lower().strip()
s["kabupaten_code"] = index.get(key)
if s["kabupaten_code"]:
kel = requests.get(
f"{BASE}/kelurahan",
headers=HEADERS,
params={"kecamatan_id": s["kecamatan_code"]},
).json()
match = next((k for k in kel["data"] if k["name"].lower() == s["desa"].lower()), None)
if match:
s["postal_code"] = match["postal_code"]
return suppliers
if __name__ == "__main__":
index = build_region_index()
with open("suppliers.csv") as f:
rows = list(csv.DictReader(f))
for s in enrich_suppliers(rows, index):
print(s["nama"], s["kabupaten_code"], s.get("postal_code"))
Versi Node.js: Dropdown Alamat Bertingkat
const BASE = "https://use.apiindonesia.id/api/v1/wilayah";
export async function addressOptions(provinsiId) {
const headers = { "x-api-key": process.env.API_INDONESIA_KEY };
const kab = await (await fetch(`${BASE}/kabupaten?provinsi_id=${provinsiId}`, { headers })).json();
return kab.data.map((k) => ({ value: k.id, label: k.alt_name }));
}
// Di handler form onboarding vendor:
// GET /api/address/kabupaten?provinsi_id=32 -> dropdown level 2
// GET /api/address/kecamatan?kabupaten_id=3273 -> dropdown level 3
// GET /api/address/kelurahan?kecamatan_id=3273010 -> dropdown level 4 + kode pos
Use Case untuk Marketplace dan Procurement
- Marketplace B2B: vendor diwajibkan pilih wilayah resmi saat daftar, jadi filter pencarian supplier per daerah selalu akurat.
- Procurement: analisis konsentrasi vendor: hitung berapa supplier per provinsi/kabupaten untuk diversifikasi rantai pasok.
- Logistik: field
is_courier_supportdan koordinat per kelurahan membantu estimasi ongkir dan coverage. - KYC vendor: konsistensi alamat: bandingkan alamat vendor dengan hierarki kode wilayah resmi Kemendagri.
Mulai Sekarang
Jelajahi semua produk di katalog API Indonesia atau langsung pelajari detail endpoint di halaman API Wilayah Indonesia. API key gratis tersedia dengan 1.000 request per bulan.
