MasjidScreen ← Find a masjid

MasjidScreen API for developers

Salaah (prayer) times for every masjid on MasjidScreen, as simple JSON. Free to use, no key and no sign-up: one GET request per masjid.

FreeNo API keyCORS enabled1 request / second

Quick start

Every masjid has its own address on MasjidScreen, called its slug (for example northcliff for masjidscreen.co.za/northcliff/). Add /api/prayertimes.php to it:

GEThttps://masjidscreen.co.za/<slug>/api/prayertimes.php
curl "https://masjidscreen.co.za/northcliff/api/prayertimes.php?fields=fajr,zuhr,asr,maghrib,esha"

That returns today's times for that masjid, in the masjid's own timezone, with no authentication.

Try it

Press "Send request" to see a live response.

Reference

Parameters

NameWhereDescription
slugpathThe masjid's slug, e.g. northcliff. Required.
datequeryYYYY-MM-DD. Defaults to today in the masjid's timezone. Times repeat every year, so any year returns that day and month's times.
fieldsqueryComma-separated list to get a smaller, flat response: fajr, zuhr, asr, maghrib, esha, jummah, sunrise, sehri, zawal. (Also accepted: zohr, dhuhr, magrib, isha, jumuah, suhoor.)

Full response

{
  "masjid": {
    "slug": "northcliff",
    "name": "Northcliff Masjid",
    "area": "Risidale, Randburg",
    "address": "3 Salerno Road, Risidale, Randburg",
    "timezone": "Africa/Johannesburg",
    "url": "https://masjidscreen.co.za/northcliff/"
  },
  "date": "2026-10-29",
  "salaah_times": {
    "fajr":    { "athaan": "04:25:00", "jamaat": "04:45:00" },
    "zuhr":    { "athaan": "12:55:00", "jamaat": "13:15:00" },
    "asr":     { "athaan": "17:00:00", "jamaat": "17:15:00" },
    "maghrib": { "athaan": "18:25:00", "jamaat": "18:25:00" },
    "esha":    { "athaan": "19:45:00", "jamaat": "20:00:00" },
    "jummah":  { "athaan": "12:20:00", "jamaat": "12:50:00" }
  },
  "reference_times": { "sehri_end": "03:54:00", "sunrise": "05:21:00", "zawal": "11:47:00", "source": "city" },
  "upcoming_changes": [
    { "salaah": "asr", "effective_date": "2026-11-01", "athaan": "17:15:00", "jamaat": "17:30:00" }
  ]
}

Filtered response (?fields=fajr,sunrise&date=2026-12-25)

{
  "masjid": "northcliff",
  "date": "2026-12-25",
  "fajr": { "athaan": "04:10:00", "jamaat": "04:30:00" },
  "sunrise": "05:14:00"
}

Errors

Errors are JSON like {"error": "…"}.

StatusWhen
400The date isn't YYYY-MM-DD, or a fields name is unknown (the response lists the valid ones).
404There is no masjid with that slug.
429Too many requests. Wait the number of seconds in the Retry-After header, then try again.
500Something went wrong on our side. Try again shortly.

Responses allow requests from any website (Access-Control-Allow-Origin: *), so it works straight from browser JavaScript.

Examples

# Today's times for one masjid
curl "https://masjidscreen.co.za/northcliff/api/prayertimes.php?fields=fajr,zuhr,asr,maghrib,esha"

# Just the Asr jamaat time, using jq
curl -s "https://masjidscreen.co.za/northcliff/api/prayertimes.php?fields=asr" | jq -r '.asr.jamaat'

# A specific date (identify your app with a User-Agent)
curl -A "my-app/1.0 (you@example.com)" "https://masjidscreen.co.za/northcliff/api/prayertimes.php?date=2026-12-25&fields=fajr"

Finding a masjid's slug

Rate limit and fair use

One request per second per IP address across the API (short bursts of a few requests are tolerated). Go over it and you'll get 429 Too Many Requests with a Retry-After header.

Developers are welcome to use the API, as long as it's used responsibly:

Need more than this allows, a bulk export, or have something to report? Email support@masjidscreen.co.za.

AI agents

AI assistants and agents are welcome to use the same API. A short guide written for them is at /llms.txt, and the same rate limit and fair-use guidelines apply.