Composed text per recitation
Any chapter in any of the twenty recitations, with stop marks, sajdah and rubʿ marks and verse numbers, in the verse-counting system you choose.
Quran Readings API · v1
Composed text for the twenty recitations (الروايات) of the ten readings (القراءات), with the differences between them marked word by word. Built for apps, websites and research.
No account yet? Request access · [email protected]
GET /api/v1/chapters/1/text?readingId=2&recitationId=3&countingId=1&compareWithHafs=trueWarsh compared with Hafs
مَلِكِ يَوْمِ الدِّينِ
Response
{ "chapterId": 1, "readingId": 2, "recitationId": 3, "comparedWith": { "readingId": 1, "recitationId": 1, "wayId": 0 }, "text": "بِسْمِ اللَّهِ …", "highlights": [ { "start": …, "length": …, "type": "TwoRecitationDifference" } ], "words": [{ "start": 0, "wSequenceId": 1, … }] }
The same engine as the reader on quran.iilm.io, open to your own applications.
Any chapter in any of the twenty recitations, with stop marks, sajdah and rubʿ marks and verse numbers, in the verse-counting system you choose.
Compare with Hafs or with any recitation, show farsh words, positions where the readings differ and Kufi counting differences. Each comes back as a span you can style.
Pick a word and get what every recitation reads at that position, grouped by shared wording.
Tafseer, translations and other texts, by chapter, by verse or by word position.
Search words by prefix, count word frequencies and list the words that differ from Hafs, per chapter or for the whole Quran.
OAuth 2.0, an OpenAPI 3 document, RFC 9457 error responses and per-application rate limits.
Create an application in the developer portal. A server application receives a client_id and a client_secret, shown once: keep the secret on your server.
Open the developer portalPOST your credentials to /connect/token with grant_type=client_credentials and scope=quran.read. The token is valid for 60 minutes: reuse it until it expires.
Send the token as Authorization: Bearer <token> to any /api/v1 endpoint. Every response is JSON.
Browse the endpointsAl-Fatiha in the recitation of Warsh, with the words that differ from Hafs highlighted.
# 1. Get an access token (valid for 60 minutes)
curl -s -X POST https://quran-api.iilm.io/connect/token \
-d grant_type=client_credentials \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d scope=quran.read
# 2. Al-Fatiha in Warsh, with the differences from Hafs highlighted
curl -s "https://quran-api.iilm.io/api/v1/chapters/1/text?readingId=2&recitationId=3&countingId=1&compareWithHafs=true" \
-H "Authorization: Bearer $ACCESS_TOKEN"
All of them need the quran.read scope. Every parameter and response is documented, with a console to try requests.
Client credentials
Authorization code + PKCE
Register your application in the developer portal. If you don’t have an account yet, email us with a few lines about your project and we will set you up.
The ten readings with two recitations each (twenty recitations), all 114 chapters and six verse-counting systems. GET /api/v1/readings and /api/v1/recitations list them with the ids the other endpoints take.
Yes, but never with a client secret. Either register a public client and let people sign in with the authorization code flow and PKCE, or call the API from your own server and pass the results on.
600 requests per minute for each application, and 30 per minute per IP address on the token endpoint. Over the limit the API answers 429. Reuse each token for its 60 minutes and cache chapter texts: the API allows it for 5 minutes.
Each highlight has a start, a length and a type, measured in UTF-16 code units: the string indices of JavaScript, Java, C# and Swift’s NSString. Wrap those ranges in your own styles; the word positions let you ask for the readings of the word a person taps.
Yes, at /openapi/v1.json on the API. Import it into Postman or Insomnia, or generate a typed client for your language.
Questions, access requests, partnerships or a reading you need: write to us.