Kalau Anda pernah mencoba memakai BMKG API langsung, Anda tahu pengalamannya: data cuaca tersaji dalam format XML per wilayah, endpoint gempa berubah-ubah strukturnya, dan tidak ada API key resmi untuk developer umum. Datanya bagus, aksesnya tidak developer-friendly.
Panduan ini menunjukkan cara mengakses data BMKG dengan format JSON konsisten lewat API Indonesia: prakiraan cuaca sampai level desa, peringatan dini cuaca ekstrem, dan data gempa. Semua lewat satu REST API dan satu API key, dengan cache yang menjaga endpoint tetap cepat.
Endpoint yang Dipakai
| Kategori | Method | Endpoint | Keterangan |
|---|---|---|---|
| Cuaca | GET | /api/v1/cuaca |
Prakiraan 3 hari per desa (adm4) atau kabupaten (kabupaten_id) |
| Cuaca | GET | /api/v1/cuaca/search |
Cari kode adm4 berdasarkan nama lokasi |
| Cuaca | GET | /api/v1/peringatan-dini |
Peringatan dini cuaca ekstrem aktif, bisa difilter provinsi |
| Gempa | GET | /api/v1/gempa/terkini |
15 gempa terbaru |
| Gempa | GET | /api/v1/gempa/dirasakan |
15 gempa terbaru yang dirasakan, lengkap skala MMI |
| Gempa | GET | /api/v1/gempa/history |
Riwayat gempa per rentang tanggal, maksimal 100 data |
Base URL: https://use.apiindonesia.id
1. Prakiraan Cuaca per Desa
Pertama, cari kode desa (adm4) dari nama lokasi:
curl "https://use.apiindonesia.id/api/v1/cuaca/search?q=bandung" \
-H "x-api-key: aip_li...x"
Lalu ambil prakiraan 3 harinya. Data diambil on-demand dari BMKG dan di-cache 6 jam:
curl "https://use.apiindonesia.id/api/v1/cuaca?adm4=32.73.01.1001" \
-H "x-api-key: aip_li...x"
Response (disingkat):
{
"data": [
{
"adm4": "32.73.01.1001",
"kotkab": "Kota Bandung",
"desa": "Isola",
"local_datetime": "2026-08-29 08:00:00",
"weather_desc": "Cerah Berawan",
"temperature_c": 29,
"humidity_percent": 62,
"precipitation_mm": 0,
"wind_speed": 3.5,
"source": "BMKG"
}
]
}
import requests
def akan_hujan(api_key: str, adm4: str) -> bool:
r = requests.get(
"https://use.apiindonesia.id/api/v1/cuaca",
params={"adm4": adm4},
headers={"x-api-key": api_key},
)
r.raise_for_status()
return any("Hujan" in f["weather_desc"] for f in r.json()["data"])
print(akan_hujan("aip_live_xxx", "32.73.01.1001"))
2. Peringatan Dini Cuaca Ekstrem
Untuk notifikasi banjir/angin kencang, endpoint /peringatan-dini mengembalikan semua warning aktif dalam format CAP dari BMKG:
curl "https://use.apiindonesia.id/api/v1/peringatan-dini?provinsi=Jawa+Barat" \
-H "x-api-key: aip_li...x"
Setiap entri memuat event, severity, headline, description, instruction, dan expires. Cocok untuk pipeline notifikasi: cron tiap jam, filter provinsi, kirim ke WhatsApp/email bila ada warning baru.
3. Data Gempa Terkini
curl "https://use.apiindonesia.id/api/v1/gempa/terkini" \
-H "x-api-key: aip_li...x"
Response:
{
"data": [
{
"id": "eq_20260702_0413",
"datetime": "2026-07-02 04:13:21",
"magnitude": 5.4,
"depth_km": 10,
"lat": -8.12,
"lng": 110.34,
"region": "Pacitan, Jawa Timur",
"potential": "Tidak berpotensi tsunami",
"felt_areas": "III Yogyakarta, II-III Pacitan",
"source": "BMKG"
}
]
}
Untuk riwayat analisis, gunakan /gempa/history dengan parameter start dan end (YYYY-MM-DD). Contoh polling sederhana di Node.js:
async function pollLatestQuake(apiKey, onNewQuake) {
let lastId = null;
setInterval(async () => {
const res = await fetch("https://use.apiindonesia.id/api/v1/gempa/terkini", {
headers: { "x-api-key": apiKey },
});
const { data } = await res.json();
const newest = data[0];
if (newest && newest.id !== lastId) {
lastId = newest.id;
if (newest.magnitude >= 5) onNewQuake(newest);
}
}, 5 * 60 * 1000); // tiap 5 menit
}
Praktik Terbaik
- Hormati cache. Cuaca di-cache 6 jam dan gempa diperbarui otomatis tiap jam; polling lebih agresif tidak memberi data lebih baru.
- Simpan
sourcedi UI. Tampilkan "Sumber: BMKG" saat menampilkan data ke pengguna. - Gunakan
adm4, bukan nama desa, sebagai parameter utama di database Anda; nama bisa ganda, kode tidak. - Untuk gempa riwayat, batch per bulan agar tidak menabrak limit 100 data per permintaan.
FAQ
Apakah ini API resmi BMKG? Ini API pihak ketiga yang mengambil dan menyeragamkan data publik BMKG ke format JSON. Selalu cantumkan atribusi sumber BMKG di aplikasi Anda.
Kenapa tidak panggil endpoint BMKG langsung? Bisa, tapi Anda harus parsing XML, mengelola perubahan struktur, dan tidak dapat satu kontrak error/response yang konsisten. Kalau kebutuhan Anda sederhana dan satu wilayah saja, endpoint asli BMKG layak dicoba.
Berapa biayanya? Tier Free 1.000 hits/bulan, cukup untuk MVP dan notifikasi skala kecil.
Mulai Sekarang
Pelajari detail parameter di halaman produk API Cuaca dan API Gempa, dapatkan API key gratis di dashboard.apiindonesia.id/register, dan baca referensi lengkap di docs.apiindonesia.id.
