Discover/Hefztest API
live

Hefztest APIhefztest.ir ↗

Create custom Quran-memorization practice exams by generating multiple-choice questions with answer keys from Hefz Test's demo exam builder. Perfect for testing your Quranic memorization knowledge with structured, ready-to-use exam materials.

Endpoint health
monitored
create_demo_exam
Checks pendingself-healing
Endpoints
1
Updated
3h ago
This call costs1 credit / call— charged only on success
Try it
Comma-separated juz (part) numbers between 1 and 30, e.g. 1,2,3. The scraper splits on commas — do NOT pass an array.
4-digit Solar Hijri exam year whose official question bank is used. 1403 and 1404 were confirmed to return questions.
Maximum number of questions to include; capped by how many the demo bank holds for the chosen juz/year.
Optional free-text exam title; echoed back as title (null when omitted) and does not affect the question set.
→ api.parse.bot/scraper/4ff9b991-5080-446b-9ebb-a427dca3ff0d/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/4ff9b991-5080-446b-9ebb-a427dca3ff0d/create_demo_exam?juz=1%2C2&count=5' \
  -H 'X-API-Key: $PARSE_API_KEY'
All endpoints · 1 totalmissing one? ·

Builds a demo Quran-memorization exam the way the site's public demo wizard does (choose juz parts, exam year and question count) and returns the generated question set in one round trip. Each row is one four-option question (A–D) with the site's correct answer letter and an optional second accepted letter. The demo bank holds about 5 questions per juz per year, so question_count is min(count, available) and can be smaller than requested; the demo page itself advertises juz 1–6 and year 1404, but other juz values and years present in the bank (e.g. 1403) also return questions. Ordering is deterministic for the same inputs. A year or juz with no questions in the bank yields an empty questions list (success). Difficulty is not an input: the demo serves only the medium level. No pagination.

Input
ParamTypeDescription
juzrequiredstringComma-separated juz (part) numbers between 1 and 30, e.g. 1,2,3. The scraper splits on commas — do NOT pass an array.
yearstring4-digit Solar Hijri exam year whose official question bank is used. 1403 and 1404 were confirmed to return questions.
countintegerMaximum number of questions to include; capped by how many the demo bank holds for the chosen juz/year.
titlestringOptional free-text exam title; echoed back as title (null when omitted) and does not affect the question set.
Response
{
  "type": "object",
  "fields": {
    "juz": "array of integers — normalized, de-duplicated, sorted juz numbers used",
    "year": "string — exam year used",
    "title": "string or null — the caller-supplied exam title",
    "questions": "array of question objects: id (site question id), question_text (Persian/Arabic), options (object keyed A/B/C/D), correct_answer (letter), second_correct_answer (letter or null)",
    "question_count": "integer — number of questions actually returned",
    "requested_count": "integer — count requested by the caller"
  },
  "sample": {
    "data": {
      "juz": [
        1
      ],
      "year": "1403",
      "title": null,
      "questions": [
        {
          "id": "cmt5csojq0046pmhbcwpv8skd",
          "options": {
            "A": "رِزْقًا",
            "B": "مِنْها",
            "C": "خالِدِینَ",
            "D": "مُتَشابِهًا"
          },
          "question_text": "در آیه « وَ بَشِّرِ الَّذینَ آمَنُوا... » کدام کلمه نیامده است؟",
          "correct_answer": "C",
          "second_correct_answer": null
        }
      ],
      "question_count": 1,
      "requested_count": 3
    },
    "status": "success"
  }
}

About the Hefztest API

The Hefztest API on Parse exposes 1 endpoint for the publicly available data on hefztest.ir. Calls return JSON over HTTPS and are billed per successful response.

Pin a release with the API-Snapshot-Version header so canonical updates don't silently change your contract.