Indonesian prayer schedules for 517 cities sourced from the Ministry of Religious Affairs dataset, plus Hijri/Gregorian conversion and qibla direction.
source-infonot measuredcity-listnot measuredcity-detailnot measuredcity-searchnot measuredjadwal-todaynot measuredjadwal-dailynot measuredjadwal-monthlynot measuredjadwal-rangenot measuredhijriah-todaynot measuredhijriah-convertnot measuredhijriah-to-masehinot measuredhijriah-calendarnot measuredqiblanot measuredstatsnot measuredhealthnot measured/v1/indonesia:sholat-kemenag/source-info10m cache1 paramchecking key…// npm i zpi-sdk
import { ZpiClient } from "zpi-sdk";
const client = new ZpiClient({ apiKey: "zpi_xxxxxxxxxxxxxxxxxxxxxxxx" });
const data = await client.run("indonesia:sholat-kemenag", "source-info", {});
console.log(data);curl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/source-info?dummy=" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"/v1/indonesia:sholat-kemenag/source-infoDataset provenance and its last update date.dummystringoptionalcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/source-info?dummy=" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"name": "Jadwal Sholat",
"source": "bimasislam.kemenag.go.id",
"language": "Indonesia",
"provider": "sholat-kemenag",
"lastUpdate": "25 November 2025",
"description": "API jadwal Sholat bersumber dari Kementrian Agama Indonesia"
}/v1/indonesia:sholat-kemenag/city-listAll 517 regencies/cities that have a prayer schedule.keywordstringoptionalpagenumberoptionalcountnumberoptionalcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/city-list?keyword=bandung&page=1&count=" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"page": 1,
"count": 10,
"items": [
{
"city": "KAB. ACEH BARAT",
"cityId": "c4ca4238a0b923820dcc509a6f75849b"
},
{
"city": "KAB. ACEH BARAT DAYA",
"cityId": "c81e728d9d4c2f636f067f89cc14862c"
},
{
"city": "KAB. ACEH BESAR",
"cityId": "eccbc87e4b5ce2fe28308fd9f2a7baf3"
},
{
"city": "KAB. ACEH JAYA",
"cityId": "a87ff679a2f3e71d9181a67b7542122c"
},
{
"city": "KAB. ACEH SELATAN",
"cityId": "e4da3b7fbbce2345d7772b0674a318d5"
},
{
"city": "KAB. ACEH SINGKIL",
"cityId": "1679091c5a880faf6fb5e6087eb1b2dc"
},
{
"city": "KAB. ACEH TAMIANG",
"cityId": "8f14e45fceea167a5a36dedd4bea2543"
},
{
"city": "KAB. ACEH TENGAH",
"cityId": "c9f0f895fb98ab9159f51fd0297e236d"
}
],
"total": 517,
"hasMore": true,
"nextPage": 2,
"provider": "sholat-kemenag",
"returned": 10
}/v1/indonesia:sholat-kemenag/city-detailOne city by id.cityIdstringrequiredcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/city-detail?cityId=eda80a3d5b344bc40f3bc04f65b7a357" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"city": "KOTA KEDIRI",
"cityId": "eda80a3d5b344bc40f3bc04f65b7a357",
"provider": "sholat-kemenag"
}/v1/indonesia:sholat-kemenag/city-searchFind cities by name keyword.qstringrequiredcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/city-search?q=kediri" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"count": 3,
"items": [
{
"city": "KAB. BANDUNG",
"cityId": "0777d5c17d4066b82ab86dff8a46af6f"
},
{
"city": "KAB. BANDUNG BARAT",
"cityId": "fa7cdfad1a5aaf8370ebeda47a1ff1c3"
},
{
"city": "KOTA BANDUNG",
"cityId": "fc221309746013ac554571fbd180e1c8"
}
],
"query": "bandung",
"provider": "sholat-kemenag"
}/v1/indonesia:sholat-kemenag/jadwal-todayToday's prayer schedule for one city, by id or name.cityIdstringoptionalcitystringoptionaltzstringoptionalcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/jadwal-today?cityId=eda80a3d5b344bc40f3bc04f65b7a357&city=kediri&tz=Asia%2FJakarta" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"city": "KAB. KEDIRI",
"date": "2026-08-29",
"isya": "18:44",
"ashar": "14:55",
"dhuha": "05:59",
"imsak": "04:09",
"subuh": "04:19",
"cityId": "9188905e74c28e489b44e954ec0b9bca",
"dzuhur": "11:36",
"terbit": "05:32",
"maghrib": "17:34",
"provider": "sholat-kemenag",
"province": "JAWA TIMUR",
"dateLabel": "Sabtu, 29/08/2026"
}/v1/indonesia:sholat-kemenag/jadwal-dailyPrayer schedule for one date and city.cityIdstringoptionalcitystringoptionaldatestringrequiredcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/jadwal-daily?cityId=eda80a3d5b344bc40f3bc04f65b7a357&city=kediri&date=2026-08-29" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"city": "KOTA JAKARTA",
"date": "2026-08-29",
"isya": "19:05",
"ashar": "15:15",
"dhuha": "06:19",
"imsak": "04:29",
"subuh": "04:39",
"cityId": "58a2fc6ed39fd083f55d4182bf88826d",
"dzuhur": "11:57",
"terbit": "05:51",
"maghrib": "17:56",
"provider": "sholat-kemenag",
"province": "DKI JAKARTA",
"dateLabel": "Sabtu, 29/08/2026"
}/v1/indonesia:sholat-kemenag/jadwal-monthlyWhole-month prayer schedule for one city.cityIdstringoptionalcitystringoptionalyearnumberrequiredmonthnumberrequiredcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/jadwal-monthly?cityId=eda80a3d5b344bc40f3bc04f65b7a357&city=kediri&year=2026&month=8" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"city": "KAB. KEDIRI",
"year": 2026,
"count": 31,
"items": [
{
"date": "2026-08-01",
"isya": "18:47",
"ashar": "15:02",
"dhuha": "06:10",
"imsak": "04:16",
"subuh": "04:26",
"dzuhur": "11:42",
"terbit": "05:42",
"maghrib": "17:35",
"dateLabel": "Sabtu, 01/08/2026"
},
{
"date": "2026-08-02",
"isya": "18:47",
"ashar": "15:02",
"dhuha": "06:10",
"imsak": "04:16",
"subuh": "04:26",
"dzuhur": "11:42",
"terbit": "05:42",
"maghrib": "17:35",
"dateLabel": "Minggu, 02/08/2026"
},
{
"date": "2026-08-03",
"isya": "18:46",
"ashar": "15:02",
"dhuha": "06:10",
"imsak": "04:16",
"subuh": "04:26",
"dzuhur": "11:42",
"terbit": "05:41",
"maghrib": "17:35",
"dateLabel": "Senin, 03/08/2026"
}
],
"month": 8,
"cityId": "9188905e74c28e489b44e954ec0b9bca",
"provider": "sholat-kemenag",
"province": "JAWA TIMUR"
}/v1/indonesia:sholat-kemenag/jadwal-rangePrayer schedule across up to 12 months, paced against the source rate limit.cityIdstringoptionalcitystringoptionalfromstringrequiredtostringrequiredfromcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/jadwal-range?cityId=eda80a3d5b344bc40f3bc04f65b7a357&city=kediri&from=2026-08&to=2026-10" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"to": "2026-09",
"city": "KAB. KEDIRI",
"from": "2026-08",
"count": 61,
"items": [
{
"date": "2026-08-01",
"isya": "18:47",
"ashar": "15:02",
"dhuha": "06:10",
"imsak": "04:16",
"subuh": "04:26",
"dzuhur": "11:42",
"terbit": "05:42",
"maghrib": "17:35",
"dateLabel": "Sabtu, 01/08/2026"
},
{
"date": "2026-08-02",
"isya": "18:47",
"ashar": "15:02",
"dhuha": "06:10",
"imsak": "04:16",
"subuh": "04:26",
"dzuhur": "11:42",
"terbit": "05:42",
"maghrib": "17:35",
"dateLabel": "Minggu, 02/08/2026"
},
{
"date": "2026-08-03",
"isya": "18:46",
"ashar": "15:02",
"dhuha": "06:10",
"imsak": "04:16",
"subuh": "04:26",
"dzuhur": "11:42",
"terbit": "05:41",
"maghrib": "17:35",
"dateLabel": "Senin, 03/08/2026"
}
],
"cityId": "9188905e74c28e489b44e954ec0b9bca",
"hasMore": false,
"provider": "sholat-kemenag",
"province": "JAWA TIMUR",
"monthsReturned": 2,
"monthsRequested": 2
}/v1/indonesia:sholat-kemenag/hijriah-todayToday in both the Gregorian and Hijri calendars.adjnumberoptionalcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/hijriah-today?adj=0" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"hijri": {
"day": 17,
"date": "Sabtu, 17 Rabiulawal 1448 H",
"year": 1448,
"month": 3,
"dayName": "Sabtu",
"monthName": "Rabiulawal"
},
"method": "standar",
"provider": "sholat-kemenag",
"gregorian": {
"day": 29,
"date": "Sabtu, 29 Agustus 2026",
"year": 2026,
"month": 8,
"dayName": "Sabtu",
"monthName": "Agustus"
},
"adjustment": 0
}/v1/indonesia:sholat-kemenag/hijriah-convertConvert a Gregorian date to Hijri; the source's method and day adjustment are returned with it.datestringrequiredadjnumberoptionalcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/hijriah-convert?date=2026-08-29&adj=0" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"hijri": {
"day": 17,
"date": "Sabtu, 17 Rabiulawal 1448 H",
"year": 1448,
"month": 3,
"dayName": "Sabtu",
"monthName": "Rabiulawal"
},
"method": "standar",
"provider": "sholat-kemenag",
"gregorian": {
"day": 29,
"date": "Sabtu, 29 Agustus 2026",
"year": 2026,
"month": 8,
"dayName": "Sabtu",
"monthName": "Agustus"
},
"adjustment": 0
}/v1/indonesia:sholat-kemenag/hijriah-to-masehiConvert a Hijri date to Gregorian.datestringrequiredadjnumberoptionalcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/hijriah-to-masehi?date=1448-03-15&adj=0" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"hijri": {
"day": 15,
"date": "Kamis, 15 Rabiulawal 1448 H",
"year": 1448,
"month": 3,
"dayName": "Kamis",
"monthName": "Rabiulawal"
},
"method": "standar",
"provider": "sholat-kemenag",
"gregorian": {
"day": 27,
"date": "Kamis, 27 Agustus 2026",
"year": 2026,
"month": 8,
"dayName": "Kamis",
"monthName": "Agustus"
},
"adjustment": 0
}/v1/indonesia:sholat-kemenag/hijriah-calendarEvery day of one Gregorian month with its Hijri equivalent.yearnumberrequiredmonthnumberrequiredadjnumberoptionalcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/hijriah-calendar?year=2026&month=8&adj=0" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"year": 2026,
"count": 31,
"items": [
{
"date": "2026-08-01",
"dayName": "Sabtu",
"hijriDay": 18,
"hijriDate": "Sabtu, 18 Safar 1448 H",
"hijriYear": 1448,
"hijriMonth": 2,
"hijriMonthName": "Safar"
},
{
"date": "2026-08-02",
"dayName": "Minggu",
"hijriDay": 19,
"hijriDate": "Ahad, 19 Safar 1448 H",
"hijriYear": 1448,
"hijriMonth": 2,
"hijriMonthName": "Safar"
},
{
"date": "2026-08-03",
"dayName": "Senin",
"hijriDay": 20,
"hijriDate": "Senin, 20 Safar 1448 H",
"hijriYear": 1448,
"hijriMonth": 2,
"hijriMonthName": "Safar"
}
],
"month": 8,
"total": 31,
"method": "standar",
"hasMore": false,
"provider": "sholat-kemenag",
"adjustment": 0
}/v1/indonesia:sholat-kemenag/qiblaQibla bearing in degrees from true north for a coordinate.latnumberrequiredlngnumberrequiredcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/qibla?lat=-6.2&lng=106.8" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"latitude": -6.2,
"provider": "sholat-kemenag",
"direction": 295.1605319853645,
"longitude": 106.8
}/v1/indonesia:sholat-kemenag/statsMonthly request counts reported by the upstream dataset.yearnumberoptionalcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/stats?year=2026" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"year": null,
"count": 8,
"items": [
{
"hits": 1531509,
"year": 2026,
"month": 1
},
{
"hits": 1315623,
"year": 2026,
"month": 2
},
{
"hits": 2775884,
"year": 2026,
"month": 3
},
{
"hits": 2217113,
"year": 2026,
"month": 4
},
{
"hits": 2827523,
"year": 2026,
"month": 5
},
{
"hits": 2811013,
"year": 2026,
"month": 6
},
{
"hits": 3166694,
"year": 2026,
"month": 7
},
{
"hits": 2256460,
"year": 2026,
"month": 8
}
],
"average": 2362727.38,
"provider": "sholat-kemenag"
}/v1/indonesia:sholat-kemenag/healthUpstream liveness and uptime.dummystringoptionalcurl -X GET "https://api.zpi.web.id/v1/indonesia:sholat-kemenag/health?dummy=" \
-H "x-api-key: zpi_xxxxxxxxxxxxxxxxxxxxxxxx"{
"provider": "sholat-kemenag",
"timezone": "Asia/Jakarta",
"startedAt": "2026-05-26T02:00:46.816Z",
"serverTime": "2026-08-29T09:26:32.299Z",
"uptimeSeconds": 8234745
}