Skip to main content

sukuudata

The official Python client for the SukuuData API: Ghana's schools, the 2026 GES SHS placement register, and CSSPS school-choice validation. No dependencies; Python 3.9+.

Install

pip install sukuudata

Get a free API key (1,000 requests a month) at sukuudata.com/register.

Usage

import os
from sukuudata import SukuuData

sukuu = SukuuData(api_key=os.environ["SUKUUDATA_KEY"])

# Boarding schools in Ashanti offering General Science (programme 502)
page = sukuu.secondary_schools.list(region="ashanti", programme="502", residential="BOARDING")
for school in page.data:
    print(school["secondary"]["csspsCode"], school["name"], school["secondary"]["category"])
print(page.pagination)  # {'page': 1, 'limit': 20, 'total': ..., 'totalPages': ...}

Check a candidate's eight CSSPS choices

result = sukuu.placement.validate(
    [
        {"csspsCode": "0010110", "programme": "502", "residential": "BOARDING"},
        # ...eight in total, in order of preference
    ],
    student_gender="FEMALE",
    home={"lat": 5.6, "lng": -0.19},
)
if not result["valid"]:
    for error in result["errors"]:
        print(error["code"], error["message"])  # e.g. CATEGORY_A_LIMIT

More

sukuu.secondary_schools.get("0010121")          # one school by CSSPS code
sukuu.schools.search("achimota")                  # typo-tolerant autocomplete
sukuu.schools.nearby(lat=6.69, lng=-1.62, radius=10)
sukuu.programmes.list()                           # programme codes and TVET trades
sukuu.placement.rules()                           # the 2026 selection rules
sukuu.regions.list()
sukuu.districts.list(region="ashanti")
sukuu.statistics.schools()

for school in sukuu.paginate(sukuu.secondary_schools.list, category="A"):  # every page
    print(school["name"])

print(sukuu.rate_limit)  # RateLimit(limit=..., remaining=..., reset=datetime)

Filters use the API's parameter names (programme, studentGender, hasLocation...). Pass a list to send several values, e.g. category=["A", "B"].

Errors

Failed requests raise SukuuDataError with code, status, message and request_id:

from sukuudata import SukuuDataError

try:
    sukuu.secondary_schools.get("0000000")
except SukuuDataError as err:
    if err.code == "NOT_FOUND":
        ...

Codes include INVALID_API_KEY, RATE_LIMIT_EXCEEDED, NOT_FOUND, VALIDATION_ERROR, UNKNOWN_REGION, UNKNOWN_PROGRAMME, plus TIMEOUT and NETWORK_ERROR when no response arrived.

Built by Nerds IV Technologies. MIT licensed.

Metadata

Release files for sukuudata 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sukuudata 0.1.0
File Size Uploaded
sukuudata-0.1.0.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sukuudata 0.1.0
File Interpreter ABI Platform
sukuudata-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 14.8 kB

Release files / sukuudata-0.1.0.tar.gz

Download URL sukuudata-0.1.0.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
183fc8059db21df2e3bc6fefefc8bb9759424740b37b5df630d6cb46d69c9a74
BLAKE2b-256 checksum
How to use checksums
e576753817baf705aff49f8dc37a9a545e0f2ce1a0b25e2e2f4555f0b4543013
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release files / sukuudata-0.1.0-py3-none-any.whl

Download URL sukuudata-0.1.0-py3-none-any.whl
Size 7.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
4992b5105caed18d50eb136de2585d67de1892216d2de00c962aef56da9e5ad5
BLAKE2b-256 checksum
How to use checksums
77b67ba1dcd41be045285e30dcc69630f471f076638748c623283fe6ad1f8333
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 30, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page