← Blog
Artikel

Panduan API BMKG: Akses Data Cuaca dan Gempa Lewat Satu API Key

Data BMKG (prakiraan cuaca, peringatan dini, gempa terkini) dalam format JSON konsisten lewat satu REST API dan satu API key. Tanpa parsing XML atau scraping.

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 source di 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.

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