Back to Blog

Exam questions API Nigeria

An Exam questions API Nigeria solution gives developers a way to retrieve structured examination questions for Nigerian CBT apps, school platforms, exam-preparation websites and other EdTech products without manually building every question bank from scratch.

If your application needs to support examinations such as UTME, WASSCE, NECO or Post-UTME, the difficult part is not always creating the question screen.

The larger challenge is maintaining the data behind it.

You need questions, options, answers, explanations, years, subjects, passages, images and potentially additional metadata such as topics and difficulty levels.

SdashAPI provides examination-data infrastructure that developers can connect to their own applications through an API.

What is an exam questions API?

An exam questions API is an application programming interface that allows another application to request examination data programmatically.

Instead of manually storing something like:

Question 1

What is...

A. ...
B. ...
C. ...
D. ...

Answer: B

inside your application, the information can be returned as structured JSON.

For example:

{
  "id": 75192,
  "question": "Which of the following...",
  "option": {
    "a": "Option A",
    "b": "Option B",
    "c": "Option C",
    "d": "Option D"
  },
  "answer": "b",
  "solution": "Explanation of the answer.",
  "examtype": "UTME",
  "examyear": "2024",
  "image": null
}

Your application can read each field and decide how it should be used.

That makes the data suitable for software rather than only human reading.

Why Nigerian EdTech developers need structured exam data

Consider a developer building an examination-preparation app.

The application itself already requires:

User registration
Login
Student dashboard
Subject selection
CBT interface
Timer
Answer selection
Question navigation
Scoring
Results
Subscriptions
Analytics

But none of those features provide the actual questions.

You still need another system containing:

Questions
Options
Answers
Solutions
Subjects
Years
Examination types
Images
Passages
Topics
Metadata

If you create and maintain both systems yourself, a large part of your development time can move away from the actual product and into examination-data management.

An exam questions API allows these responsibilities to be separated.

Which Nigerian examinations can an API support?

The exact coverage depends on the provider.

For a Nigerian examination-preparation platform, common requirements include:

UTME

For students preparing for the Unified Tertiary Matriculation Examination.

WASSCE

For senior secondary school examination preparation.

NECO

For National Examinations Council examination preparation.

Post-UTME

For applicants preparing for institution-specific admission screening examinations.

SdashAPI provides structured data across multiple examination categories. Developers should check SdashAPI Coverage for the currently available exams, subjects and years before building a feature around a particular dataset.

Why one examination API can be easier than multiple databases

Imagine your application supports three examinations.

You could maintain:

Database 1
JAMB/UTME questions

Database 2
WAEC/WASSCE questions

Database 3
NECO questions

Then add Post-UTME:

Database 4
Post-UTME questions

If each source uses a different format, your backend becomes responsible for converting everything into a common structure.

For example, one source might return:

{
  "question_text": "...",
  "correct_answer": "A"
}

another:

{
  "question": "...",
  "answer": "a"
}

and another:

{
  "body": "...",
  "correct": 0
}

Your frontend shouldn't have to understand all three.

A more consistent examination-data API reduces this problem.

How an exam questions API fits into your application

A typical architecture can look like:

Student
   ↓
Your App
   ↓
Your Backend
   ↓
Exam Questions API
   ↓
Structured Questions
   ↓
Your Backend
   ↓
Your App

Your frontend remains focused on the student experience.

Your backend handles communication with the data provider.

This also gives you somewhere to implement your own:

Authentication
Subscriptions
Usage limits
Caching
Logging
Analytics
Security rules

without exposing every infrastructure detail to the frontend.

Example: building a Nigerian exam preparation app

Suppose you're building an app called ExamPractice.

The home screen contains:

Choose Examination

JAMB / UTME

WAEC / WASSCE

NECO

Post-UTME

A student chooses:

JAMB / UTME

Then:

Choose Subject

Biology

Then:

Choose Year

2024

Finally:

Number of Questions

40

Your backend now has enough information to request the appropriate questions.

Conceptually:

Exam: UTME
Subject: Biology
Year: 2024
Limit: 40

The question API finds matching records and returns structured data.

Your application creates the CBT session.

Your API response should be predictable

Consistency is important.

Your frontend shouldn't need dozens of conditions such as:

if (exam === "utme") {
   // one data format
}

if (exam === "neco") {
   // completely different format
}

if (exam === "wassce") {
   // another format
}

A cleaner structure allows your application to reuse components.

For example:

<QuestionCard
    question={question.question}
    options={question.option}
    image={question.image}
/>

That component can potentially display questions from several examinations.

This becomes increasingly important as your application grows.

What information should an exam questions API provide?

For a simple CBT system, you will usually need:

  • Question
  • Options
  • Correct answer
  • Subject
  • Examination type
  • Examination year
  • Unique question ID

For a more advanced learning application, you may also need:

  • Solution
  • Detailed explanation
  • Topic
  • Subtopic
  • Difficulty
  • Skill
  • Tags
  • Passage
  • Image
  • Diagram information

The right amount of data depends on the product.

A school quiz platform may not need the same metadata as an adaptive learning application.

Answers and explanations serve different purposes

An answer tells the application:

Correct Answer: C

An explanation tells the student:

Here is why C is correct.

Those are not the same feature.

If you're building a pure examination simulator, the correct answer may be enough for scoring.

If you're building a learning application, explanations become much more valuable.

After submission, you might show:

Your Answer: A

Correct Answer: C

Explanation:
[Detailed explanation]

The student can now understand the mistake instead of simply discovering that the answer was wrong.

Don't ignore images and diagrams

Exam questions aren't always text-only.

Mathematics may contain geometrical diagrams.

Physics may contain circuits or graphs.

Biology may contain labelled diagrams.

Geography may contain maps.

Chemistry may contain structures, apparatus or reaction-related illustrations.

If the question says:

From the diagram above...

but your API response doesn't provide the diagram, the question cannot be used properly.

Your frontend should therefore support optional images.

For example:

{question.image && (
    <QuestionImage src={question.image} />
)}

Your interface should also allow students to view detailed diagrams comfortably on small screens.

Passages need special treatment

Some questions depend on shared passages.

Your application should not accidentally separate a question from the passage required to answer it.

A mobile interface could provide:

[ READ PASSAGE ]

Question 3 of 6

According to the passage...

A. ...
B. ...
C. ...
D. ...

The student can reopen the passage while moving through related questions.

This needs to be considered when choosing an API and when designing your interface.

Topics make targeted practice possible

Suppose a Biology question contains:

{
  "topic": "Genetics",
  "subtopic": "Inheritance",
  "difficulty": "medium"
}

Now your application can provide:

Biology Practice

All Topics

Genetics

Ecology

Reproduction

Cell Biology

Students can practise exactly what they need instead of receiving random questions.

Topic metadata also improves analytics

Suppose a student completes several practice sessions.

Your application records:

Genetics             43%
Ecology              81%
Reproduction         69%
Cell Biology         77%

Instead of only displaying:

Overall score: 68%

you can identify the actual problem.

For example:

Genetics is currently your lowest-performing topic.

Then provide:

[ PRACTISE GENETICS ]

This creates a much more useful learning experience.

Difficulty data can support smarter practice

If difficulty information is available, your application can provide:

Easy Practice

Standard Practice

Difficult Practice

Mixed Practice

Or you could build an adaptive system.

For example:

Student answers correctly
        ↓
Difficulty increases gradually
        ↓
Student begins struggling
        ↓
Difficulty adjusts

This is one reason structured metadata can be valuable even when your first version of the application doesn't use every field.

SdashAPI as exam-data infrastructure

SdashAPI is designed to provide examination data to developers rather than dictate what their applications should look like.

That means you can use the data while building your own:

Mobile app
Website
CBT software
School portal
AI tutor
Revision system
Mock examination platform
Learning management system

The application remains yours.

SdashAPI operates as the examination-data layer underneath it.

Start building with 2,000 free credits

You don't necessarily need to purchase a large dataset before writing your first working version.

SdashAPI provides developers with 2,000 free credits for development and testing.

A sensible workflow is:

Create account
      ↓
Receive 2,000 free credits
      ↓
Generate development API key
      ↓
Connect your application
      ↓
Fetch real exam questions
      ↓
Build and test

This gives you an opportunity to determine whether the API works for your project before moving into production.

You can start through the SdashAPI Website.

Use the free credits for real development

Don't spend your entire development period using fake questions such as:

What is 2 + 2?

Real examination data will expose problems that dummy data doesn't.

Use your testing stage to see what happens when:

The question is very long

The options are long

An image is present

A passage is required

The explanation contains several paragraphs

The network is slow

No matching questions are available

These are the situations your production application will eventually encounter.

Use separate development and production API keys

During development:

Local/Test Application
        ↓
Development API Key
        ↓
SdashAPI

When the application is ready for real users:

Production Application
        ↓
Your Backend
        ↓
Production API Key
        ↓
SdashAPI

Keeping the environments separate makes credential management cleaner.

It also reduces the chance that a key accidentally exposed during development affects your live application.

Protect production credentials

Avoid unnecessarily placing a production API key directly inside public frontend code.

Instead:

React Native / Flutter / Website
              ↓
         Your Backend
              ↓
           SdashAPI

Your backend holds the credential.

Your backend can also apply your own access rules before making a question request.

For example:

if (!user.isAuthenticated) {
    return unauthorized();
}

if (!user.hasExamAccess) {
    return accessDenied();
}

Only valid requests continue.

Your business model doesn't have to match the API provider's model

Suppose your application has:

FREE

10 questions daily
Basic results

and:

PREMIUM

Unlimited practice
Mock examinations
Detailed explanations
Performance analytics

That's your product decision.

Your students don't need to understand the underlying API pricing.

Your backend handles the relationship between your application and its examination-data infrastructure.

Estimate your production requirements

Once your application works, calculate roughly how much data your users may consume.

For example:

1,000 students

× 40 questions per session

× 5 sessions monthly

= 200,000 question interactions

Another platform may have:

10,000 students

× 50 questions

× 10 sessions

= 5,000,000 question interactions

These applications have very different infrastructure requirements.

Estimate usage before selecting a production arrangement.

You can review the currently available options through SdashAPI Pricing.

API plans and Pay As You Go

Different projects have different usage patterns.

A new application may have relatively low or unpredictable usage.

An established examination platform may have large, predictable traffic.

SdashAPI provides different production options, including API plans and Pay As You Go.

Choose based on your actual expected usage rather than automatically choosing the largest or smallest option.

As your platform grows, your infrastructure can change with it.

API access or bulk exam questions?

Sometimes a developer searching for an exam questions API actually needs a bulk dataset.

The difference matters.

API access

Your Application
      ↓
Your Backend
      ↓
SdashAPI
      ↓
Question Data

Bulk dataset

Licensed Dataset
      ↓
Your Database
      ↓
Your Backend
      ↓
Your Application

With API access, you request data from an external service.

With bulk data, you host and maintain the licensed dataset yourself.

The second approach may make sense for applications requiring specific offline or infrastructure arrangements.

For bulk-data requirements, contact the SdashAPI team through SdashAPI Contact.

Think carefully about offline applications

"Offline CBT" can mean several different things.

It might mean:

The current examination should continue if the student's connection temporarily disappears.

Or it might mean:

Every question should permanently live on the student's device.

These are different technical and licensing requirements.

For temporary connection problems, your application may load an examination session before the timer begins.

For example:

Internet
   ↓
Load 40 questions
   ↓
Begin examination
   ↓
Temporary connection loss
   ↓
Continue current session

Permanent offline access to a large dataset may require a different arrangement.

Discuss that requirement before building your entire architecture around it.

Nigerian internet conditions should influence your design

If you're building primarily for Nigerian students, network reliability and data usage deserve attention.

Your application should avoid unnecessary requests.

Don't request the same information repeatedly simply because the student moves between screens.

Batch questions where appropriate.

Optimise images.

Handle timeouts.

Allow retrying.

Save active examination progress.

A technically correct application can still provide a poor experience if it assumes perfect connectivity.

Save examination progress

Imagine a student has completed 37 of 50 questions.

Then the application closes unexpectedly.

Losing the entire examination is frustrating.

Your application can periodically save:

{
  "session_id": "UTME-BIO-28493",
  "current_question": 37,
  "remaining_time": 841,
  "answers": {
    "75192": "b",
    "75193": "d"
  }
}

Depending on your examination rules, the student may then be able to restore the session.

Don't make a new request for every Next button

This architecture:

Question 1
   ↓
API request
   ↓
Question 2
   ↓
API request
   ↓
Question 3

creates unnecessary dependency on the network.

For a 40-question session, consider:

Request 40 questions
        ↓
Create session
        ↓
Question 1
        ↓
Question 2
        ↓
Question 3
        ↓
...
        ↓
Question 40

Navigation happens locally after the examination has been prepared.

This can make the CBT experience significantly smoother.

Post-UTME needs additional filtering

Post-UTME questions may require university information.

Your application may need:

Examination:
Post-UTME

University:
[University]

Subject:
[Subject]

Year:
[Year]

This differs from UTME, where the examination itself isn't tied to one university.

If Post-UTME is part of your product, make sure your data model can represent the institution associated with the question.

Check current availability through SdashAPI Coverage.

WASSCE applications may need country filtering

If your platform supports WASSCE, avoid automatically treating every WAEC-related question as Nigerian.

A regional architecture may need:

Examination: WASSCE

Country: Ghana

Subject: Mathematics

Year: 2024

SdashAPI is also positioned to support WASSCE data across multiple West African markets, so developers building regional products should consider country information from the beginning.

This prevents a future expansion from requiring a complete redesign of your database.

Add useful error handling

Things will fail occasionally.

Your application should expect:

No internet

Request timeout

Invalid authentication

Unsupported filter

No matching questions

Quota exhausted

Server problem

Don't expose:

HTTP Error 429

to a student unless that information is actually useful.

Instead:

We couldn't prepare your questions right now. Please try again shortly.

Your backend can retain the technical error for debugging.

Add loading states

A request that takes three seconds without feedback feels broken.

Display something like:

Preparing your examination...

Then start the examination only when the required questions are ready.

A simple loading state can significantly improve perceived reliability.

Keep question IDs

Question IDs are one of the most useful pieces of information you can retain.

Suppose:

Question ID: 75192

A student's activity can become:

{
  "question_id": 75192,
  "selected": "a",
  "correct": false,
  "time_spent": 54
}

Later you can use this for:

  • Bookmarks
  • Revision
  • Analytics
  • Question reports
  • Duplicate control
  • Weak-topic detection
  • Recommendation systems

Without a stable ID, tracking individual questions becomes much harder.

Build a "Questions I Got Wrong" section

Every incorrect answer can become revision material.

After several examinations:

REVISION

Questions I Got Wrong     83

Bookmarked Questions      24

Weak Topics               6

When the student opens Questions I Got Wrong, you can use the stored question IDs to build a targeted revision experience.

This gives historical question data more value than simply showing it once.

Add question reporting

Question databases need a feedback loop.

Your application can provide:

Report this question

○ Incorrect answer
○ Incomplete question
○ Missing image
○ Formatting issue
○ Explanation issue
○ Other

Automatically include the question ID and relevant examination information.

SdashAPI developers can discuss issues through the SdashAPI Community or reach the team through SdashAPI Contact.

Check coverage instead of making assumptions

Don't assume that because an API supports an examination, every subject and every historical year contains identical coverage.

Check before advertising a feature.

The SdashAPI Coverage Page can help developers review available exam data.

Your own application can also dynamically present supported choices.

For example:

Choose Exam
    ↓
Load Supported Subjects
    ↓
Choose Subject
    ↓
Load Available Years

This is cleaner than hard-coding combinations that may not have data.

Is SdashAPI an official JAMB, WAEC or NECO API?

No.

SdashAPI is an independent exam-data platform for developers.

It is not the official API of JAMB, WAEC or NECO.

Developers should make the same distinction in their own applications and avoid presenting an independent examination-preparation product as if it were operated by an examination body.

What to look for in an exam questions API in Nigeria

Before building your product around an API, test the things that matter to your application:

Examination coverage: Does it support the examinations you need?

Subjects: Are your target subjects available?

Years: Does the historical coverage fit your product?

Question structure: Is the JSON predictable?

Answers: Can your system mark automatically?

Explanations: Can students understand their mistakes?

Images: Are visual questions usable?

Passages: Can passage-based questions be displayed correctly?

Metadata: Are topics, difficulty and other fields available where required?

Filtering: Can you retrieve the subset of data you need?

Performance: Can question batches be retrieved efficiently?

Authentication: Can production credentials be protected?

Documentation: Can your developers understand the integration?

Testing: Can you experiment before paying for production usage?

Pricing: Can the infrastructure scale with your product?

Licensing: Does your intended usage fit the terms?

Support: Can you report problems when they occur?

A short real-world integration test is usually more informative than simply comparing marketing pages.

From idea to production

A practical development process could look like this:

1. Decide which examinations to support

2. Design your CBT interface

3. Create a SdashAPI account

4. Get the 2,000 free development credits

5. Generate a development API key

6. Fetch one examination question

7. Display it correctly

8. Add answer selection

9. Add scoring

10. Fetch question batches

11. Add exam filtering

12. Add subject filtering

13. Add year filtering

14. Add country or university filtering where required

15. Support images and diagrams

16. Support passages

17. Add explanations

18. Add timers

19. Add examination navigation

20. Save student progress

21. Add error handling

22. Add results

23. Add revision tools

24. Add analytics

25. Test with real students

26. Generate a separate production API key

27. Choose an appropriate production plan

28. Launch

29. Monitor usage

30. Scale as your application grows

You can begin from the SdashAPI Website, review available examinations through SdashAPI Coverage, compare production options through SdashAPI Pricing, ask implementation questions through the SdashAPI Community, or discuss your project directly through SdashAPI Contact.

An exam questions API in Nigeria is ultimately a building block.

It handles the structured examination-data layer so developers don't necessarily have to spend months turning PDFs and scattered question banks into a database before they can build their actual product.

The important work then becomes what you build around that infrastructure: a reliable examination experience, useful explanations, smart revision, meaningful analytics and an application students actually want to use.

Avatar

How can we help?

We reply immediately

Hello! 👋 How can we help you today?