Skip to content
View equran's full-sized avatar

Block or report equran

Block user

Prevent this user from interacting with your repositories and sending you notifications. Learn more about blocking users.

You must be logged in to block users.

Maximum 250 characters. Please don’t include any personal information such as legal names or email addresses. Markdown is supported. This note will only be visible to you.
Report abuse

Contact GitHub support about this user’s behavior. Learn more about reporting abuse.

Report abuse
equran/README.md

EQuran

Official Node.js SDK for EQuran.id API v2. Access Quran data including Surahs, Ayat (verses), Tafsir (interpretation), and Audio recitations.

Features

  • Complete Data - All 114 Surahs with 6,236 Ayat
  • Indonesian Translation - Full Indonesian translation for every verse
  • Tafsir - Detailed interpretation for each verse
  • Audio Recitations - 6 renowned Qari (reciters)
  • Built-in Caching - In-memory cache with TTL support
  • TypeScript - Full type definitions included
  • Dual Format - Supports both ESM and CommonJS

Installation

npm install equran

Quick Start

import{EQuran}from'equran';constquran=newEQuran();// Get all surahsconstsurahs=awaitquran.getAllSurat();// Get a specific surah with all versesconstalFatihah=awaitquran.getSurat(1);// Get tafsirconsttafsir=awaitquran.getTafsir(1);

API Reference

Core Functions

getAllSurat()

Returns a list of all 114 surahs with basic information.

constsurahs=awaitquran.getAllSurat();// Returns: Surat[]

Response fields:

  • nomor - Surah number (1-114)
  • nama - Arabic name
  • namaLatin - Latin/transliterated name
  • jumlahAyat - Number of verses
  • tempatTurun - Place of revelation ("Mekah" or "Madinah")
  • arti - Meaning/translation of the surah name
  • deskripsi - Description of the surah
  • audioFull - Object containing full audio URLs for each Qari

getSurat(nomor)

Returns complete surah data including all verses.

ParameterTypeDescription
nomornumberSurah number (1-114)
constsurah=awaitquran.getSurat(36);// Returns: SuratDetail

Response fields:

  • All fields from getAllSurat()
  • ayat - Array of verses (see Ayat structure below)
  • suratSelanjutnya - Next surah reference or false
  • suratSebelumnya - Previous surah reference or false

Ayat structure:

  • nomorAyat - Verse number
  • teksArab - Arabic text
  • teksLatin - Latin/transliterated text
  • teksIndonesia - Indonesian translation
  • audio - Object containing audio URLs for each Qari

getTafsir(nomor)

Returns tafsir (interpretation) for a surah.

ParameterTypeDescription
nomornumberSurah number (1-114)
consttafsir=awaitquran.getTafsir(1);// Returns: TafsirDetail

Response fields:

  • Surah metadata (same as getAllSurat())
  • tafsir - Array of tafsir entries for each verse
    • ayat - Verse number
    • teks - Tafsir text

Helper Functions

getAyat(suratNomor, ayatNomor)

Returns a single verse from a surah.

ParameterTypeDescription
suratNomornumberSurah number (1-114)
ayatNomornumberVerse number
constayatKursi=awaitquran.getAyat(2,255);console.log(ayatKursi.teksArab);console.log(ayatKursi.teksIndonesia);

getAyatRange(suratNomor, from, to)

Returns a range of verses from a surah.

ParameterTypeDescription
suratNomornumberSurah number (1-114)
fromnumberStarting verse number
tonumberEnding verse number
constrange=awaitquran.getAyatRange(2,1,5);// Returns: AyatRange// {// suratNomor: 2,// suratNama: "البقرة",// suratNamaLatin: "Al-Baqarah",// fromAyat: 1,// toAyat: 5,// ayat: Ayat[]// }

getSuratByName(name)

Finds a surah by its Latin name. Case-insensitive search.

ParameterTypeDescription
namestringLatin name to search
constsurah=awaitquran.getSuratByName('Yasin');console.log(surah?.nomor);// 36

Returns null if not found.


searchSurat(keyword)

Searches surahs by keyword. Searches in Arabic name, Latin name, and meaning.

ParameterTypeDescription
keywordstringSearch keyword
constresults=awaitquran.searchSurat('sapi');// Returns Al-Baqarah (meaning: The Cow/Sapi)

getMakkiyahSurat()

Returns all Makkiyah surahs (revealed in Mecca).

constmakkiyah=awaitquran.getMakkiyahSurat();// Returns 86 surahs

getMadaniyahSurat()

Returns all Madaniyah surahs (revealed in Medina).

constmadaniyah=awaitquran.getMadaniyahSurat();// Returns 28 surahs

Audio Functions

getAudioFull(suratNomor, qariId?)

Returns the full surah audio URL.

ParameterTypeDescription
suratNomornumberSurah number (1-114)
qariIdstringOptional. Qari ID (default: "05")
constaudioUrl=awaitquran.getAudioFull(36,'05');// "https://cdn.equran.id/audio-full/Misyari-Rasyid-Al-Afasi/036.mp3"

getAudioAyat(suratNomor, ayatNomor, qariId?)

Returns the audio URL for a specific verse.

ParameterTypeDescription
suratNomornumberSurah number (1-114)
ayatNomornumberVerse number
qariIdstringOptional. Qari ID (default: "05")
constaudioUrl=awaitquran.getAudioAyat(2,255,'03');// Returns Ayat Kursi audio by Sudais

getQariList()

Returns the list of available Qari (reciters).

constqariList=quran.getQariList();

Available Qari:

IDName
01Abdullah Al-Juhany
02Abdul Muhsin Al-Qasim
03Abdurrahman as-Sudais
04Ibrahim Al-Dossari
05Misyari Rasyid Al-Afasi (default)
06Yasser Al-Dosari

Utility Functions

getTafsirAyat(suratNomor, ayatNomor)

Returns tafsir for a specific verse.

ParameterTypeDescription
suratNomornumberSurah number (1-114)
ayatNomornumberVerse number
consttafsir=awaitquran.getTafsirAyat(1,1);console.log(tafsir.teks);

getRandomAyat()

Returns a random verse from the Quran with surah context.

constrandom=awaitquran.getRandomAyat();// Returns: RandomAyat// {// suratNomor: 36,// suratNama: "يس",// suratNamaLatin: "Ya-Sin",// ayat: Ayat// }

getSuratInfo(nomor)

Returns surah information without verses. Lighter response for list/preview purposes.

ParameterTypeDescription
nomornumberSurah number (1-114)
constinfo=awaitquran.getSuratInfo(36);console.log(info.jumlahAyat);// 83

getNextSurat(currentNomor)

Returns the next surah.

ParameterTypeDescription
currentNomornumberCurrent surah number (1-113)
constnext=awaitquran.getNextSurat(1);console.log(next?.namaLatin);// "Al-Baqarah"

Returns null if current surah is 114 (An-Nas).


getPrevSurat(currentNomor)

Returns the previous surah.

ParameterTypeDescription
currentNomornumberCurrent surah number (2-114)
constprev=awaitquran.getPrevSurat(2);console.log(prev?.namaLatin);// "Al-Fatihah"

Returns null if current surah is 1 (Al-Fatihah).


Advanced Functions

getSuratWithTafsir(nomor)

Returns both surah data and tafsir in a single call. Uses parallel requests for efficiency.

ParameterTypeDescription
nomornumberSurah number (1-114)
const{ surat, tafsir }=awaitquran.getSuratWithTafsir(1);

bulkGetSurat(nomorList)

Fetches multiple surahs in parallel.

ParameterTypeDescription
nomorListnumber[]Array of surah numbers
constsurahs=awaitquran.bulkGetSurat([1,36,67,78]);// Returns: SuratDetail[]

Cache Management

clearCache()

Clears all cached data.

quran.clearCache();

getCacheStats()

Returns cache statistics.

conststats=quran.getCacheStats();// {// hits: 10,// misses: 5,// size: 5,// hitRate: 0.667// }

pruneCache()

Removes expired cache entries.

constremoved=quran.pruneCache();console.log(`Removed ${removed} expired entries`);

Configuration

constquran=newEQuran({// Base API URL (default: https://equran.id/api/v2)baseUrl: 'https://equran.id/api/v2',// Request timeout in milliseconds (default: 30000)timeout: 30000,// Cache configurationcache: {enabled: true,// Enable caching (default: true)ttl: 60*60*1000,// TTL in ms (default: 1 hour)maxSize: 200,// Max cache entries (default: 200)}});

TypeScript

All types are exported and available for use:

importtype{Surat,SuratDetail,Ayat,TafsirDetail,TafsirAyat,QariInfo,RandomAyat,AyatRange,SuratWithTafsir,EQuranConfig,CacheStats,AudioMap,}from'equran';

Error Handling

import{EQuran,EQuranApiError}from'equran';try{constsurah=awaitquran.getSurat(999);}catch(error){if(errorinstanceofEQuranApiError){console.error(`API Error: ${error.message}`);console.error(`Status Code: ${error.statusCode}`);console.error(`Endpoint: ${error.endpoint}`);}}

Examples

Daily Verse Widget

asyncfunctiongetDailyVerse(){constquran=newEQuran();constrandom=awaitquran.getRandomAyat();return{surah: random.suratNamaLatin,verse: random.ayat.nomorAyat,arabic: random.ayat.teksArab,translation: random.ayat.teksIndonesia,audio: random.ayat.audio['05'],};}

Quran Reader

asyncfunctionreadSurah(nomor: number){constquran=newEQuran();constsurah=awaitquran.getSurat(nomor);console.log(`${surah.namaLatin} (${surah.nama})`);console.log(`${surah.tempatTurun} | ${surah.jumlahAyat} verses`);console.log(`Meaning: ${surah.arti}\n`);for(constayatofsurah.ayat){console.log(`[${ayat.nomorAyat}] ${ayat.teksArab}`);console.log(` ${ayat.teksIndonesia}\n`);}}

Surah with Tafsir

asyncfunctionstudySurah(nomor: number){constquran=newEQuran();const{ surat, tafsir }=awaitquran.getSuratWithTafsir(nomor);for(leti=0;i<surat.ayat.length;i++){constayat=surat.ayat[i];consttafsirAyat=tafsir.tafsir[i];console.log(`--- Verse ${ayat.nomorAyat} ---`);console.log(`Arabic: ${ayat.teksArab}`);console.log(`Translation: ${ayat.teksIndonesia}`);console.log(`Tafsir: ${tafsirAyat.teks}\n`);}}

Requirements

  • Node.js >= 18.0.0

License

MIT

Links

Popular repositories Loading

  1. equran equranPublic

    Official Node.js SDK for EQuran.id API - Access Quran, Tafsir, and Audio

    TypeScript 6 3

  2. jadwal-imsakiyah-2025 jadwal-imsakiyah-2025Public

    TypeScript 1

  3. umami umamiPublic

    Forked from umami-software/umami

    Umami is a modern, privacy-focused alternative to Google Analytics.

    TypeScript