API Jadwal Sholat Indonesia: Waktu Sholat per Kota dalam JSON

Oleh , Tim Engineering APIPedia · Terbit · Diperbarui · 6 menit baca

API jadwal sholat APIPedia mengembalikan imsak, subuh, terbit, dzuhur, ashar, maghrib, dan isya per kabupaten/kota di Indonesia lewat satu endpoint.

API jadwal sholat APIPedia: waktu imsak sampai isya per kabupaten/kota dengan pilihan madhab Syafi'i dan Hanafi

API jadwal sholat adalah layanan HTTP yang mengembalikan waktu imsak, subuh, terbit, dzuhur, ashar, maghrib, dan isya untuk satu lokasi dan satu tanggal. Di APIPedia, cukup panggil GET /sholat/harian dengan kode kabupaten/kota Kemendagri, misalnya 32.73 untuk Kota Bandung, dan jadwalnya kembali dalam JSON.

Artikel ini membahas parameter dan respons endpoint tersebut, cara mendapatkan kode kota, pilihan madhab untuk waktu ashar, lalu dua contoh pemakaian: widget jadwal sholat dan pengingat waktu sholat.

Bagaimana cara memanggil API jadwal sholat?

Endpoint-nya satu: GET https://api.apipedia.id/v1/sholat/harian, dengan header Authorization: Bearer apk_xxx. Kunci apk_ dibuat di menu Token API pada konsol APIPedia.

ParameterWajibKeterangan
kotaYaKode kabupaten/kota Kemendagri bertitik, mis. 32.73
tanggalTidakFormat YYYY-MM-DD. Default hari ini (WIB)
madhabTidaksyafii (default) atau hanafi, memengaruhi waktu ashar
curl "https://api.apipedia.id/v1/sholat/harian?kota=32.73&tanggal=2026-10-26" \
  -H "Authorization: Bearer apk_xxx"
{
  "is_success": true,
  "message": "Jadwal sholat berhasil dihitung",
  "data": {
    "kota": "Kota Bandung",
    "kode_kota": "32.73",
    "zona_waktu": "WIB",
    "koordinat": { "lat": -6.91066, "lng": 107.60987, "elevasi": 726 },
    "madhab": "syafii",
    "tanggal": "2026-10-26",
    "imsak": "03:57",
    "subuh": "04:07",
    "terbit": "05:19",
    "dzuhur": "11:36",
    "ashar": "14:48",
    "maghrib": "17:49",
    "isya": "18:57"
  }
}

Field apa saja yang ada di respons?

FieldKeterangan
kota, kode_kotaNama dan kode kabupaten/kota yang dihitung
zona_waktuWIB, WITA, atau WIT. Semua jam di respons memakai zona ini
koordinatlat, lng, dan elevasi (meter) titik acuan kota
madhabMetode ashar yang dipakai
tanggalTanggal jadwal
imsakBatas sahur, 10 menit sebelum subuh
subuh, dzuhur, ashar, maghrib, isyaWaktu lima sholat wajib, format HH:MM
terbitWaktu matahari terbit, akhir waktu subuh

Jadwal dihitung dari koordinat titik acuan kabupaten/kota, termasuk elevasinya. Karena satu kabupaten bisa membentang luas, selisih beberapa menit dengan jadwal masjid setempat atau jadwal resmi Kemenag adalah hal wajar. Untuk kepastian ibadah, tetap rujuk jadwal resmi daerah Anda.

Dari mana mendapatkan kode kota?

Kode kota sama dengan kode kabupaten/kota di API wilayah APIPedia. Ambil daftar provinsi, lalu daftar kabupaten/kota di provinsi pilihan pengguna, dan pakai field kode-nya.

curl https://api.apipedia.id/v1/wilayah/kabupaten/32 \
  -H "Authorization: Bearer apk_xxx"

Beberapa kode yang sering dipakai:

KodeKotaZonaMaghrib, 26 Okt 2026
31.71Jakarta PusatWIB17:48
32.73Kota BandungWIB17:49
34.71Kota YogyakartaWIB17:37
35.78Kota SurabayaWIB17:26
73.71Kota MakassarWITA17:57

Penjelasan lengkap dropdown wilayah bertingkat ada di artikel API wilayah Indonesia dan kode pos.

Apa beda madhab syafii dan hanafi?

Perbedaannya hanya di waktu ashar. Mazhab Syafi'i, yang dianut mayoritas Muslim Indonesia, menetapkan awal ashar saat panjang bayangan sama dengan tinggi benda ditambah bayangan saat dzuhur. Mazhab Hanafi memakai dua kali tinggi benda, sehingga waktu ashar-nya lebih lambat, umumnya sekitar satu jam, tergantung lokasi dan musim. Waktu sholat lain tidak berubah.

curl "https://api.apipedia.id/v1/sholat/harian?kota=32.73&madhab=hanafi" \
  -H "Authorization: Bearer apk_xxx"

Untuk aplikasi umum di Indonesia, biarkan default syafii. Sediakan pilihan hanafi di pengaturan bila pengguna Anda beragam.

Contoh: widget jadwal sholat hari ini

Jangan memanggil API langsung dari browser, karena kunci akan terlihat. Buat route kecil di backend yang meneruskan permintaan dan menyimpan hasilnya. Jadwal satu kota untuk satu tanggal tidak berubah, jadi cache sampai tengah malam aman.

// server: GET /jadwal-sholat?kota=32.73
const cache = new Map();

app.get("/jadwal-sholat", async (req, res) => {
  const kota = String(req.query.kota ?? "");
  const tanggal = new Date().toLocaleDateString("sv-SE", { timeZone: "Asia/Jakarta" });
  const kunci = `${kota}:${tanggal}`;

  if (!cache.has(kunci)) {
    const r = await fetch(
      `https://api.apipedia.id/v1/sholat/harian?kota=${encodeURIComponent(kota)}&tanggal=${tanggal}`,
      { headers: { Authorization: `Bearer ${process.env.APIPEDIA_KEY}` } }
    );
    const body = await r.json();
    if (!body.is_success) return res.status(r.status).json(body);
    cache.set(kunci, body.data);
  }
  res.json(cache.get(kunci));
});

Di frontend, tampilkan lima waktu sholat dan tandai waktu berikutnya. Fungsi berikut mencari sholat berikutnya dari data respons:

const URUTAN = ["subuh", "dzuhur", "ashar", "maghrib", "isya"];

function sholatBerikutnya(jadwal, sekarang = new Date()) {
  const menitSekarang = sekarang.getHours() * 60 + sekarang.getMinutes();
  for (const nama of URUTAN) {
    const [j, m] = jadwal[nama].split(":").map(Number);
    if (j * 60 + m > menitSekarang) return { nama, jam: jadwal[nama] };
  }
  return { nama: "subuh", jam: "besok" };
}

Perhatikan zona waktu. Jam di respons mengikuti zona_waktu kota tersebut, sedangkan new Date() di browser mengikuti zona perangkat pengguna. Kalau pengguna di Jakarta melihat jadwal Makassar (WITA), hitung "sekarang" dalam zona kota itu.

Contoh: pengingat waktu sholat di bot

Untuk bot WhatsApp, Telegram, atau Slack, ambil jadwal sekali sehari setelah tengah malam, lalu jadwalkan pesan untuk setiap waktu sholat. Lima pesan per hari per kota hanya butuh satu request API, sehingga kuota paket Free yang 500 request per hari cukup untuk ratusan kota.

async function jadwalkanPengingat(kota) {
  const r = await fetch(
    `https://api.apipedia.id/v1/sholat/harian?kota=${kota}`,
    { headers: { Authorization: `Bearer ${process.env.APIPEDIA_KEY}` } }
  );
  const { is_success, message, data } = await r.json();
  if (!is_success) throw new Error(message);

  for (const nama of ["subuh", "dzuhur", "ashar", "maghrib", "isya"]) {
    jadwalkan(data.tanggal, data[nama], data.zona_waktu, () =>
      kirimPesan(`Waktu ${nama} untuk ${data.kota}: ${data[nama]} ${data.zona_waktu}`)
    );
  }
}

Fungsi jadwalkan dan kirimPesan diganti dengan penjadwal dan kanal pesan yang Anda pakai. Untuk Ramadan, tambahkan pengingat di waktu imsak dan maghrib sebagai tanda sahur berakhir dan berbuka. Kalau jadwal ingin otomatis menyesuaikan hari libur Idulfitri, gabungkan dengan API hari libur nasional.

Bagaimana membuat jadwal imsakiyah sebulan?

Endpoint ini menghitung satu hari per request. Untuk tabel imsakiyah 30 hari, panggil 30 kali dengan tanggal berbeda, lalu simpan hasilnya. Lakukan sekali sebelum Ramadan dan sajikan dari cache atau database Anda. Beri jeda antar request agar tetap di bawah rate limit 10 request per detik.

async function imsakiyah(kota, mulai, jumlahHari) {
  const hasil = [];
  const d = new Date(`${mulai}T00:00:00Z`);
  for (let i = 0; i < jumlahHari; i++) {
    const tanggal = d.toISOString().slice(0, 10);
    const r = await fetch(
      `https://api.apipedia.id/v1/sholat/harian?kota=${kota}&tanggal=${tanggal}`,
      { headers: { Authorization: `Bearer ${process.env.APIPEDIA_KEY}` } }
    );
    const { data } = await r.json();
    hasil.push({ tanggal, imsak: data.imsak, subuh: data.subuh, maghrib: data.maghrib });
    d.setUTCDate(d.getUTCDate() + 1);
    await new Promise((ok) => setTimeout(ok, 150)); // jaga rate limit
  }
  return hasil;
}

Pertanyaan yang sering diajukan

Apakah API jadwal sholat ini gratis?

Ya. Endpoint /sholat/harian tersedia di paket Free yang gratis selamanya, dengan kuota 500 request per hari dan rate limit 10 request per detik.

Apakah bisa sampai level kecamatan?

Belum. Jadwal dihitung per kabupaten/kota berdasarkan titik acuannya. Untuk sebagian besar kota, selisih antarkecamatan hanya beberapa menit atau kurang.

Kenapa jadwalnya beda beberapa menit dengan masjid dekat rumah?

Titik koordinat, ketinggian, dan kriteria sudut matahari yang dipakai tiap penyusun jadwal bisa berbeda, sehingga selisih kecil adalah hal wajar. Untuk keperluan ibadah, ikuti jadwal resmi Kemenag atau masjid setempat.

Jam di respons memakai zona waktu apa?

Zona waktu lokal kota tersebut, sesuai field zona_waktu: WIB, WITA, atau WIT.

Bisakah ditanyakan lewat asisten AI?

Bisa. Dengan server MCP APIPedia, Claude bisa menjawab "jam berapa maghrib di Bandung hari ini?" memakai tool jadwal_sholat.

Mulai pakai API jadwal sholat

Daftar gratis di console.apipedia.id, buat kunci di menu Token API, lalu jalankan contoh curl di atas dengan kode kota Anda. Satu request per kota per hari sudah cukup untuk widget, pengingat, atau tabel imsakiyah.

Topik:

Tentang penulis

Tim APIPedia — Tim Engineering APIPedia

Tim engineering di balik APIPedia yang membangun dan memelihara API data Indonesia - ongkir, OCR KTP, data wilayah, BMKG, hingga server MCP - dan menulis panduan integrasinya dari pengalaman langsung.