Developers
Build your own JAMB prep app, quiz bot or study tool on top of our bank of 10,800+ verified UTME past questions — 15 subjects, tagged by syllabus topic, complete with answers, explanations and reading passages.
Base URL: https://learnifyforjamb.netlify.app/api/v1
Every endpoint (except the index at GET /api/v1) needs an API key. Send it as a Bearer token or with the X-API-Key header:
curl https://learnifyforjamb.netlify.app/api/v1/subjects \ -H "Authorization: Bearer lfy_live_YOUR_KEY"
const res = await fetch("https://learnifyforjamb.netlify.app/api/v1/questions?subject=ENG&topic=eng-2&limit=20", {
headers: { Authorization: "Bearer lfy_live_YOUR_KEY" },
});
const { data, meta } = await res.json();Keep your key on your server, never in public client-side code. Keys can be rotated or revoked at any time — if yours leaks, ask us for a new one.
GET /subjects
All subjects in the bank with live question counts.
GET /topics?subject=ENG
The syllabus topics for one subject, each with its question count. Topic ids (e.g. eng-2) are what you pass to the questions endpoint.
GET /questions
Paginated questions. Query parameters:
subject — subject code, e.g. ENG, MTH, BIO (optional)topic — a topic id from /topics (optional)year — exam year, e.g. 2019 (optional)limit — page size, 1–100 (default 50)offset — pagination offset (default 0)random=true — shuffle the results (for quiz apps)GET /questions/{id}
One question by id.
{
"data": {
"id": "eng-2019-q14",
"subject": "ENG",
"topicId": "eng-2",
"topic": "Lexis & Vocabulary",
"year": 2019,
"questionNumber": 14,
"question": "Choose the option nearest in meaning to...",
"options": { "A": "...", "B": "...", "C": "...", "D": "..." },
"correctOption": "B",
"explanation": "...",
"difficulty": "medium",
"imageUrl": null,
"images": [],
"passage": null
}
}Comprehension and diagram questions carry a passage object with the shared text or image, so your app can render the stimulus with the question. List endpoints return { data: [...], meta: { total, limit, offset, returned } }.
// Errors always look like this:
{ "error": { "code": "invalid_api_key", "message": "..." } }
// 401 missing_api_key / invalid_api_key
// 403 key_inactive
// 400 invalid_topic / invalid_year / missing_subject
// 404 subject_not_found / question_not_found
// 429 rate_limited / quota_exceededOne payment covers a full year of access. No per-request surprises, no foreign-currency card required.
Free
₦0
forever
For trying the API and small school projects.
Premium
₦25,000
per year (≈ ₦2,083/month)
For prep apps, quiz bots and tutorial centres.
Ultra
₦75,000
per year (≈ ₦6,250/month)
For products serving thousands of students.
Compared with global question-bank APIs (often $10–$30/month billed in dollars), Learnify's yearly naira pricing keeps a full year of Premium under the cost of two months abroad.
Your developer account is your Learnify account — no separate signup. Open the developer dashboard, create a key in seconds (Free plan included), and upgrade to Premium or Ultra whenever you're ready: checkout is automatic, payment is verified securely, and your plan activates instantly for a full year.