Quran API
Static Quran RESTful API is a fast and multilingual Node.js project (built with JavaScript/TypeScript and Express) that provides complete Quran data in JSON format — including surahs, ayahs, and translations (currently in English and Indonesian). It also supports murottal audio from up to 30 reciters, with per-ayah playback fetched from third-party sources. Designed for speed and flexibility, this API helps developers easily integrate Quran data and audio into their applications.
Table of Contents
Clone the repository to your local machine
git clone https://github.com/rzkytmgr/quran-api && cd quran-apiBuild the docker image then run the container
docker build -t quran-api .docker run --name quran-api -p 3001:3001 quran-apiOr if you prefer deploy it to vercel directly, you can click vercel deploy button below,
1- Get All Reciters - 200 OK Try it
GET /api/v1/recitersHTTP/1.1 200
Content-Type: application/json
{
"success": true,
"message": "Reciter retrieved successfully",
"data": [
{
"id": 1,
"name": "Abdul Basit 'Abd us-Samad"
},
{
"id": 2,
"name": "Abdullah Ibn Ali Basfar"
},
...
]
}2- Get One Spesific Reciter - 200 OK Try it
GET /api/v1/reciter/:reciterHTTP/1.1 200
Content-Type: application/json
{
"success": true,
"message": "Reciter retrieved successfully",
"data": {
"id": 25,
"name": "Yasser Ad-Dosari"
}
}3- Get All Surah Metadata - 200 OK Try it
GET /api/v1/surahHTTP/1.1 200
Content-Type: application/json
{
"success": true,
"message": "Data Retrieved Successfully",
"data": [
{
"sequence": 1,
"ayahCount": 7,
"type": {
"arabic": "مكة",
"latin": "Meccan"
},
"name": {
"arabic": {
"long": "سُورَةُ ٱلْفَاتِحَةِ",
"short": "الفاتحة"
},
"latin": {
"long": "Sura Al-Faatiha",
"short": "Al-Faatiha"
}
},
"translation": "The Opening",
"tafsir": null,
"preBismillah": {
"text": "بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ",
"translation": "In the name of Allah, the Entirely Merciful, the Especially Merciful.",
"transliteration": "Bismillaahir Rahmaanir Raheem"
},
"recitation": {
"audio": "https://download.quranicaudio.com/quran/yasser_ad-dussary/001.mp3"
}
},
...
}4- Get One Surah with Ayah - 200 OK Try it
GET /api/v1/surah/:surahSequenceHTTP/1.1 200
Content-Type: application/json
{
"success": true,
"message": "Data Retrieved Successfully",
"data": {
"sequence": 114,
"ayahCount": 6,
"type": {
"arabic": "مكة",
"latin": "Meccan"
},
"name": {
"arabic": {
"long": "سورة الناس",
"short": "الناس"
},
"latin": {
"long": "Sura An-Naas",
"short": "An-Naas"
}
},
"translation": "Mankind",
"tafsir": null,
"preBismillah": {
"text": "بِسْمِ اللَّهِ الرَّحْمَٰنِ الرَّحِيمِ",
"translation": "In the name of Allah, the Entirely Merciful, the Especially Merciful.",
"transliteration": "Bismillaahir Rahmaanir Raheem"
},
"recitation": {
"audio": "https://download.quranicaudio.com/quran/yasser_ad-dussary/114.mp3"
},
"ayah": [
{
"sequence": {
"quran": 6231,
"surah": 1
},
"juz": 30,
"manzil": 7,
"page": 604,
"ruku": 556,
"hizb": 240,
"sajda": false,
"text": "قُلْ أَعُوذُ بِرَبِّ النَّاسِ",
"transliteration": "Qul a'uzu birabbin naas",
"translation": "Say, \"I seek refuge in the Lord of mankind,",
"tafsir": null,
"recitation": {
"audio": "https://everyayah.com/data/Yasser_Ad-Dussary_128kbps/114001.mp3"
}
},
...
]
}5- Get Spesific Ayah In A Surah - 200 OK Try it
GET /api/v1/surah/:surahSequence/ayah/:ayahSequenceHTTP/1.1 200
Content-Type: application/json
{
"success": true,
"message": "Data Retrieved Successfully",
"data": {
"sequence": {
"quran": 6231,
"surah": 1
},
"juz": 30,
"manzil": 7,
"page": 604,
"ruku": 556,
"hizb": 240,
"sajda": false,
"text": "قُلْ أَعُوذُ بِرَبِّ النَّاسِ",
"transliteration": "Qul a'uzu birabbin naas",
"translation": "Say, \"I seek refuge in the Lord of mankind,",
"tafsir": null,
"recitation": {
"audio": "https://everyayah.com/data/Yasser_Ad-Dussary_128kbps/114001.mp3"
}
}
}6- Get Spesific Ayah in Quran - 200 OK Try it
GET /api/v1/ayah/:ayahSequenceHTTP/1.1 200
Content-Type: application/json
{
"success": true,
"message": "Data Retrieved Successfully",
"data": {
"sequence": {
"quran": 6231,
"surah": 1
},
"juz": 30,
"manzil": 7,
"page": 604,
"ruku": 556,
"hizb": 240,
"sajda": false,
"text": "قُلْ أَعُوذُ بِرَبِّ النَّاسِ",
"transliteration": "Qul a'uzu birabbin naas",
"translation": "Say, \"I seek refuge in the Lord of mankind,",
"tafsir": null,
"recitation": {
"audio": "https://everyayah.com/data/Yasser_Ad-Dussary_128kbps/114001.mp3"
}
}
}7- Get One Random Quran Ayah - 200 OK Try it
GET /api/v1/ayah/randomHTTP/1.1 200
Content-Type: application/json
{
"success": true,
"message": "Data Retrieved Successfully",
"data": {
"sequence": {
"quran": 5858,
"surah": 10
},
"juz": 30,
"manzil": 7,
"page": 588,
"ruku": 525,
"hizb": 235,
"sajda": false,
"text": "وَيْلٌ يَوْمَئِذٍ لِّلْمُكَذِّبِينَ",
"surah": 83,
"transliteration": "Wailuny yawma'izil lil mukazzibeen",
"translation": "Woe, that Day, to the deniers,",
"tafsir": null,
"recitation": {
"audio": "https://everyayah.com/data/Yasser_Ad-Dussary_128kbps/083010.mp3"
}
}
}Based on crawler codes you can see the data source,
- Kementrian Agama (Ministry of Religious Affairs Indonesia)
- Al-Qur'an Cloud Platform
- Every Ayah - Verse by verce quran mp3 project
- Quranicaudio - Largest quran recitation collection
- gadingnst/quran-api
Thank you for all of services above, cause of them this project can released. May Allah bless them.
Feel free to contribute create issue or create PRs on this repository.
Made with ❤️ by Rizky Aulia Tumangger - Copyright All Rights Reserved © 2025