Ghana WASSCE Question Bank for Developers
Building a WASSCE app for Ghana has two very different parts.
The first is the visible product: your CBT screen, timer, student accounts, mock exams and results.
The second is less visible but often harder: where do all the Ghana WASSCE questions actually come from, and how do you keep them structured?
A Ghana WASSCE question bank for developers solves that second problem. Instead of extracting questions from PDFs or manually maintaining thousands of records, developers can work with structured examination data.
SdashAPI now exposes Ghana-specific WASSCE data through its API, including country-specific endpoints for discovering available exams, subjects and years. SdashAPI
Start with Ghana, not a generic WAEC database
A common database design is:
Question
Subject
Year
Answer
For a West African WASSCE product, that's incomplete.
Country should be part of the structure:
Country
↓
Examination
↓
Subject
↓
Year
↓
Questions
For Ghana:
GH
↓
WASSCE
↓
Mathematics
↓
2024
↓
Questions
This matters because WAEC operates across multiple member countries. WAEC Ghana's current 2026 material also shows an active WASSCE examination cycle in Ghana, while the Council's March 2026 annual meeting brought together its five member countries: Ghana, Nigeria, Sierra Leone, Liberia and The Gambia. WAEC Ghana
So country should not be something you try to add to your database six months after launching.
SdashAPI already has a Ghana country code
The current SdashAPI countries endpoint is:
GET https://sdashapi.com/api/countries
Its documented response includes:
{
"code": "GH",
"name": "Ghana",
"exams": ["waec", "wassce"]
}
SdashAPI currently documents five WASSCE countries: Nigeria (NG), Ghana (GH), Sierra Leone (SL), Liberia (LR) and The Gambia (GM). SdashAPI
That means a developer can treat Ghana as an actual data dimension rather than relying on text labels inside individual questions.
Find out what Ghana data is available
Here's something more useful than hard-coding a giant subject list.
SdashAPI exposes country-level discovery endpoints:
GET /api/countries/GH/exams
GET /api/countries/GH/subjects
GET /api/countries/GH/years
``` :chatgpt-content-reference{index="3"}
Your application can therefore ask SdashAPI what is available before showing options to the student.
For example:
```javascript
const response = await fetch(
"https://sdashapi.com/api/countries/GH/subjects"
);
const result = await response.json();
You can use that result to populate:
Choose a Subject
Mathematics
English Language
Biology
Chemistry
Physics
...
The important difference is that the list comes from your actual data source.
Fetch real Ghana WASSCE questions
SdashAPI documents country filtering on its V4 question endpoint.
A Ghana Mathematics request is:
curl -X GET \
"https://sdashapi.com/api/v4/q?type=wassce&country=GH&subject=mathematics" \
-H "AccessToken: YOUR_ACCESS_TOKEN"
``` :chatgpt-content-reference{index="4"}
Breaking that down:
```text
type=wassce
selects WASSCE.
country=GH
restricts the request to Ghana.
subject=mathematics
selects Mathematics.
And:
AccessToken: YOUR_ACCESS_TOKEN
authenticates the request.
This is the actual documented SdashAPI request pattern, rather than a hypothetical endpoint.
What comes back?
At the basic question level, SdashAPI structures question records around fields such as:
{
"id": 4821,
"question": "Question text...",
"section": null,
"option": {
"a": "Option A",
"b": "Option B",
"c": "Option C",
"d": "Option D"
},
"answer": "a",
"solution": "Worked solution...",
"image": null,
"examtype": "WASSCE",
"examyear": "2024"
}
The public API documentation describes id, question text, sections, options, answers, solutions, images, examination type and examination year as part of the question structure. GitHub
That structure is much easier to use in software than this:
wassce-maths-past-questions-2024.pdf
A PDF is designed primarily for reading.
JSON is designed to be processed.
One question bank, several products
This is where developers can get more creative.
The same Ghana WASSCE data doesn't have to power only a "Past Questions" page.
You could build a traditional practice app:
WASSCE Ghana
↓
Mathematics
↓
2024
↓
Practice
Or a timed mock:
WASSCE Mathematics Mock
40 Questions
40 Minutes
[ Start ]
Or revision:
Questions You Got Wrong
12 questions
[ Practice Again ]
Or performance tracking:
MATHEMATICS
Algebra 72%
Geometry 61%
Statistics 83%
Probability 54%
Or an AI tutor that uses real examination records as grounding material rather than asking the model to invent every question.
SdashAPI itself now positions its structured metadata and explanations for RAG and AI-tutor applications in addition to conventional CBT software. SdashAPI
You don't necessarily need to copy the whole database
There are two approaches.
API-first architecture:
Your App
↓
Your Backend
↓
SdashAPI
Your backend requests the questions it needs.
This is suitable for many online applications because SdashAPI remains responsible for maintaining the underlying question infrastructure.
The other option is:
Own-database architecture:
Licensed Dataset
↓
Your PostgreSQL / MySQL / Firebase
↓
Your Backend
↓
Your App
This may make more sense when you're building something with substantial offline requirements or need to operate primarily from your own infrastructure.
SdashAPI currently advertises bulk dataset licensing in JSON, CSV and SQL formats for teams needing the complete dataset offline. SdashAPI
Those are different use cases. Don't build an application that downloads an API question bank permanently without first checking what your licence permits.
How much Ghana WASSCE data is there?
This is another place where developers should avoid making assumptions.
SdashAPI's public coverage page currently reports 368,868+ questions across its overall database, 26 subjects overall and an overall range of 1988–2026. For WASSCE specifically, it lists 23 subjects, a 1988–2026 overall range, images, and explanations on approximately 74% of its WASSCE data. Ghana is listed as an available WASSCE country. SdashAPI
That does not mean every Ghana subject contains questions for every year from 1988 through 2026.
That's why these endpoints matter:
GET /api/countries/GH/subjects
GET /api/countries/GH/years
Use live coverage information instead of advertising combinations you haven't checked.
A better Ghana WASSCE app would do this
When a student opens your application:
Country
Ghana
Then:
Examination
WASSCE
Then retrieve the supported subjects.
The student chooses:
Mathematics
Then retrieve relevant years.
They select:
2024
Only then do you prepare the question session.
That produces a cleaner user experience than presenting hundreds of buttons and returning "No Questions Found" after the student has already made several selections.
Keep your AccessToken away from the frontend
Don't do this in a public website:
const token = "sdash_my_real_production_key";
Anyone inspecting your application may be able to retrieve it.
A better structure is:
Browser / Mobile App
↓
Your Backend
↓
SdashAPI
Your backend stores:
SDASH_API_KEY=...
and makes the authenticated SdashAPI request.
The SdashAPI documentation requires the AccessToken header for authenticated question requests. SdashAPI
What happens when something goes wrong?
Your application should understand the API response instead of simply displaying "Error."
SdashAPI currently documents:
200 Request succeeded
400 Bad request
401 Missing/invalid AccessToken
403 Account suspended
404 No questions matched
405 Wrong HTTP method
429 Quota exceeded
``` :chatgpt-content-reference{index="10"}
So if Ghana Mathematics for a particular selection returns no matching questions, your student doesn't need to see:
```text
ERROR 404
Show:
No questions are currently available for this selection. Try another year.
Good API integration is partly about what happens when the API doesn't return what you expected.
Test the idea before paying for a large setup
SdashAPI's current Sandbox plan provides 2,000 free API credits for development and testing, with V1 access to UTME and WASSCE data. The current public pricing page also separates Sandbox, Pay As You Go and larger production plans. SdashAPI
So if you're thinking:
"I want to build a WASSCE app for Ghana, but I'm not even sure students will use it."
Don't begin by purchasing infrastructure for 100,000 students.
Build one good flow.
Ghana
↓
WASSCE
↓
One Subject
↓
Practice
↓
Results
Get that working.
Test it.
Then add mock exams, explanations, analytics, weak-topic practice and other subjects.
The SdashAPI documentation contains the live endpoints, coverage shows the current dataset scope, and pricing shows the available production options.
A Ghana WASSCE Question Bank for Developers becomes useful when it disappears into the background of the product. Students shouldn't care that your questions came through JSON or an API. They should simply open your app, choose Ghana WASSCE, pick what they want to practise and get a fast, useful learning experience backed by properly structured examination data.