Daily DeenDaily Deen

Daily Deen API

Prayer times, Quran text, hadith, and masjid lookup — six endpoints, one key.

api.dailydeen.me

The Daily Deen API is free to use. Every request except /signup needs an x-api-key header. Get one by posting your email — the key is generated once and shown once, so save it immediately (you can't view it again, only regenerate a new one).

Base URL

https://api.dailydeen.me

Quick start

  1. Get a key: POST /signup with your email.
  2. Send it back on every request as the x-api-key header.
  3. Call any endpoint below — responses are plain JSON.
curl -X POST https://api.dailydeen.me/signup \ -H "content-type: application/json" \ -d '{"email":"you@example.com"}' curl https://api.dailydeen.me/prayer-times?latitude=51.5&longitude=-0.12 \ -H "x-api-key: dd_yourkeyhere"

Rate limit

1,000 requests per day per key. Exceeding it returns 429 with an X-RateLimit-Remaining header.

Error responses

Errors are JSON with a single error field, e.g. {"error":"missing x-api-key header"}.

StatusMeaning
400Missing or invalid parameters
401Missing or invalid x-api-key
404Resource not found (e.g. surah out of range)
429Daily rate limit exceeded
500Server error — safe to retry
POST /signup no key required

Creates an API key tied to an email address. The raw key is returned once and only once — it isn't recoverable, only regenerable.

Request
curl -X POST https://api.dailydeen.me/signup \ -H "content-type: application/json" \ -d '{"email":"you@example.com"}'
Response · 201
{ "api_key": "dd_9fK2...", "note": "Save this now — it will not be shown again.", "daily_limit": 1000 }
GET /prayer-times x-api-key

Astronomical prayer times for any coordinate and date — computed directly, no third-party dataset.

ParamTypeRequiredNotes
latitudenumberrequired 
longitudenumberrequired 
dateYYYY-MM-DDoptionaldefaults to today
methodstringoptionalMuslimWorldLeague, Egyptian, Karachi, UmmAlQura, Dubai, MoonsightingCommittee, NorthAmerica, Kuwait, Qatar, Singapore, Turkey
Request
GET /prayer-times?latitude=51.5&longitude=-0.12 &date=2026-08-16 &method=MuslimWorldLeague
Response · 200
{ "date": "2026-08-16", "method": "MuslimWorldLeague", "timings": { "fajr": "...", "sunrise": "...", "dhuhr": "...", "asr": "...", "maghrib": "...", "isha": "..." } }
GET /quran/surahs x-api-key

List all 114 surahs, or fetch one surah's Arabic text with a translation.

RouteNotes
/quran/surahslist every surah's metadata
/quran/surah/:number1–114, with Arabic + translation for each ayah
ParamTypeRequiredNotes
editionstringoptionaltranslation edition, defaults to en.khattab. Available: en.khattab, en.pickthall, en.yusufali, en.hilalikhan, en.abdelhaleem
Request
GET /quran/surah/2?edition=en.khattab
Response · 200
{ "surah_number": 2, "edition": "en.khattab", "verses": [ { "ayah_number": 1, "arabic": "...", "translation": "..." } ], "attribution": "Arabic text: Tanzil Project (tanzil.net), CC BY 3.0" }
GET /quran-words/:surah/:ayah x-api-key

Word-by-word breakdown of a single ayah — Arabic, transliteration, translation, and per-word audio timing for building read-along or highlight-as-recited UIs.

Request
GET /quran-words/2/255
Response · 200
{ "surah_number": 2, "ayah_number": 255, "words": [ { "word_position": 1, "arabic_text": "...", "transliteration": "...", "translation": "...", "audio_start_ms": 40, "audio_end_ms": 980 } ] }
GET /hadith/random x-api-key

A random hadith, or full-text search across the collection.

RouteNotes
/hadith/randomone random hadith
/hadith/searchfull-text search, requires q
ParamTypeRequiredNotes
qstringrequired for searchsearch text
collectionstringoptionale.g. bukhari, muslim, abudawud, tirmidhi, nasai, ibnmajah
limitnumberoptionalsearch only, max 50, default 20
Request
GET /hadith/search?q=patience &collection=bukhari&limit=20
Response · 200
{ "results": [ { "collection": "bukhari", "english_text": "...", ... } ], "count": 12 }
GET /masjids x-api-key

Nearby masjids by coordinate, synced from OpenStreetMap.

ParamTypeRequiredNotes
latitudenumberrequired 
longitudenumberrequired 
radius_kmnumberoptionaldefault 10, capped at 50
Request
GET /masjids?latitude=51.5 &longitude=-0.12&radius_km=10
Response · 200
{ "masjids": [ { "name": "...", "distance_km": 1.2, ... } ], "attribution": "© OpenStreetMap contributors, ODbL" }