Books — entry 015 of 22

Quran Cloud

Verified Jul 2026

Al Quran Cloud is a free, keyless REST API serving the Holy Quran ayah-by-ayah, surah-by-surah, or juz-by-juz across dozens of language editions and audio recitations, all returned as JSON from a single api.alquran.cloud/v1 base. A live GET against /ayah/262 returns clean verse data with no authentication required, and the same request sent with an Origin header echoed access-control-allow-origin: * back. The project's own docs page lists the full edition and endpoint reference, with no paid tier of any kind.

Al Quran Cloud is a keyless REST API serving the Quran ayah-by-ayah or surah-by-surah, wrapped in a consistent `{code, status, data}` envelope across dozens of language editions. A live GET this run against `/ayah/262` returned a genuine 3,073 B record for Ayat al-Kursi (Al-Baqara 2:255) in the default Uthmani Arabic edition, with live per-second rate-limit headers on every response.

booksreligious-textqurantranslationaudio
AuthenticationNone requiredCall it straight away — no key, no signup.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score74out of 100
Authentication25/25No authentication required
Pricing20/20Free to use
Docs0/20No docs or spec available
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 74 on greatapis.com
<a href="https://greatapis.com/api/quran-cloud/"><img src="https://greatapis.com/badge/quran-cloud.svg" alt="Scored 74 on greatapis.com"></a>

Auth quickstart

  1. No API key, signup, or credit card required -- a live GET this run against `/ayah/262` returned the full ayah with zero credentials, while carrying live `x-ratelimit-limit-second: 12` and `x-ratelimit-remaining-second` headers that counted down across three consecutive calls this run (11, then 10, then 9 remaining).
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Fetch a single ayah by its overall Quran-wide number

GEThttps://api.alquran.cloud/v1/ayah/262

200 application/json

{"code":200,"status":"OK","data":{"number":262,"text":"\u0671\u0644\u0644\u0651\u064e\u0647\u064f \u0644\u064e\u0627\u06e4 \u0625\u0650\u0644\u064e\u0640\u0670\u0647\u064e \u0625\u0650\u0644\u0651\u064e\u0627 \u0647\u064f\u0648\u064e \u0671\u0644\u06e1\u062d\u064e\u06cc\u0651\u064f \u0671\u0644\u06e1\u0642\u064e\u06cc\u0651\u064f\u0648\u0645\u064f\u06da \u0644\u064e\u0627 \u062a\u064e\u0623\u06e1\u062e\u064f\u0630\u064f\u0647\u064f\u06e5 \u0633\u0650\u0646\u064e\u0629\u08f1 \u0648\u064e\u0644\u064e\u0627 \u0646\u064e\u0648\u06e1\u0645\u08f1\u06da \u0644\u0651\u064e\u0647\u064f\u06e5 \u0645\u064e\u0627 \u0641\u0650\u06cc \u0671\u0644\u0633\u0651\u064e\u0645\u064e\u0640\u0670\u0648\u064e\u200a\u0670\u2060\u062a\u0650 \u0648\u064e\u0645\u064e\u0627 \u0641\u0650\u06cc \u0671\u0644\u06e1\u0623\u064e\u0631\u06e1\u0636\u0650\u06d7 \u0645\u064e\u0646 \u0630\u064e\u0627 \u0671\u0644\u0651\u064e\u0630\u0650\u06cc \u06cc\u064e\u0634\u06e1\u0641\u064e\u0639\u064f \u0639\u0650\u0646\u062f\u064e\u0647\u064f\u06e5\u06e4 \u0625\u0650\u0644\u0651\u064e\u0627 \u0628\u0650\u0625\u0650\u0630\u06e1\u0646\u0650\u0647\u0650\u06e6\u06da \u06cc\u064e\u0639\u06e1\u0644\u064e\u0645\u064f \u0645\u064e\u0627 \u0628\u064e\u06cc\u06e1\u0646\u064e \u0623\u064e\u06cc\u06e1\u062f\u0650\u06cc\u0647\u0650\u0645\u06e1 \u0648\u064e\u0645\u064e\u0627 \u062e\u064e\u0644\u06e1\u0641\u064e\u0647\u064f\u0645\u06e1\u06d6 \u0648\u064e\u0644\u064e\u0627 \u06cc\u064f\u062d\u0650\u06cc\u0637\u064f\u0648\u0646\u064e \u0628\u0650\u0634\u064e\u06cc\u06e1\u0621\u08f2 \u0645\u0651\u0650\u0646\u06e1 \u0639\u0650\u0644\u06e1\u0645\u0650\u0647\u0650\u06e6\u06e4 \u0625\u0650\u0644\u0651\u064e\u0627 \u0628\u0650\u0645\u064e\u0627 \u0634\u064e\u0627\u06e4\u0621\u064e\u06da \u0648\u064e\u0633\u0650\u0639\u064e \u0643\u064f\u0631\u06e1\u0633\u0650\u06cc\u0651\u064f\u0647\u064f \u0671\u0644\u0633\u0651\u064e\u0645\u064e\u0640\u0670\u0648\u064e\u200a\u0670\u2060\u062a\u0650 \u0648\u064e\u0671\u0644\u06e1\u0623\u064e\u0631\u06e1\u0636\u064e\u06d6 \u0648\u064e\u0644\u064e\u0627 \u06cc\u064e\u0640\u0654\u064f\u0648\u062f\u064f\u0647\u064f\u06e5 \u062d\u0650\u0641\u06e1\u0638\u064f\u0647\u064f\u0645\u064e\u0627\u06da \u0648\u064e\u0647\u064f\u0648\u064e \u0671\u0644\u06e1\u0639\u064e\u0644\u0650\u06cc\u0651\u064f \u0671\u0644\u06e1\u0639\u064e\u0638\u0650\u06cc\u0645\u064f\n","edition":{"identifier":"quran-uthmani-quran-academy","language":"ar","name":"\u0627\u0644\u0642\u0631\u0622\u0646 \u0627\u0644\u0643\u0631\u064a\u0645 \u0628\u0631\u0633\u0645 \u0627\u0644\u0639\u062b\u0645\u0627\u0646\u064a (quran-academy)","englishName":"Modified Quran Uthmani Text from the Quran Academy to work with the Kitab font","format":"text","type":"quran","direction":"rtl"},"surah":{"number":2,"name":"\u0633\u064f\u0648\u0631\u064e\u0629\u064f \u0627\u0644\u0628\u064e\u0642\u064e\u0631\u064e\u0629\u0650","englishName":"Al-Baqara","englishNameTranslation":"The Cow","numberOfAyahs":286,"revelationType":"Medinan"},"numberInSurah":255,"juz":3,"manzil":1,"page":42,"ruku":35,"hizbQuarter":17,"sajda":false}}

`262` is the ayah's position counting straight through the whole Quran, not per-surah; the response's own `numberInSurah` field (255) and `surah.number` field (2) are what map it back to the commonly cited reference 'Al-Baqara 2:255'.

Try it

Developer reference

Base URLhttps://api.alquran.cloud/v1
Rate limit

12 requests/second (`x-ratelimit-limit-second: 12`), confirmed live this run with `x-ratelimit-remaining-second` counting down across consecutive calls; no daily or monthly cap is disclosed in the response headers.

Key endpoints
  • GET/ayah/{reference}
  • GET/surah/{number}

Gotchas & limits

  • Every response is wrapped in a fixed **`{"code":...,"status":...,"data":{...}}`** envelope -- confirmed live on `/ayah/262` above (`"code":200,"status":"OK"`) -- the actual ayah fields live one level down inside `data`, not at the response root.
  • `x-ratelimit-limit-second: 12` is a genuine **per-second** ceiling, not per-minute or per-day -- confirmed live across three consecutive calls this run, with `x-ratelimit-remaining-second` counting down 11, 10, 9 in step with each request. No daily cap is disclosed in the headers.
  • An out-of-range ayah number is a real **HTTP 404**, still wrapped in the same envelope -- a live GET this run against `/ayah/99999` returned `{"code":404,"status":"NOT FOUND","data":"Please specify an Ayah number (1 to 6236)."}`, an 85-byte body, confirming the valid range tops out at 6,236 total ayahs.
  • Responses are edge-cached -- a live GET this run against `/surah/1` returned `x-cache-status: Hit` with an `age: 65340` header (over 18 hours stale), while the fresh `/ayah/262` call above returned `x-cache-status: Miss`. Don't assume every response reflects the instant it was requested.