Skip to content
EDTEF

EDTEF for developers

Open data for Nigerian education

Start with a verified directory of Nigerian secondary schools. Free to use, with a free API key you can get in a minute.

https://api.edtef.org/public/directory/v1/schools

Verified by people

Every school is checked by the EDTEF team, by phone, a visit, a state ministry list or official documents, before it's published.

Nigeria-wide

All 36 states and the FCT, with LGA, town, ownership and proprietor. It grows as we verify more schools.

Open licence

CC BY 4.0: use it for anything, including commercially, with credit to “EDTEF school directory (edtef.org)”.

Free plan

10 requests a second and 10,000 a day per key. Need more? Tell us what you're building.

Quick start

Three steps to your first school

  1. 1. Get a key. Fill in the form, confirm the code we email you, and copy your key.
  2. 2. Send it in the x-api-key header. Every request needs it, except the OpenAPI document.
  3. 3. Read the results. Lists come back as data, meta (total, page) and links (next, prev). Errors always look like {"error": {"code", "message"}}.
curl "https://api.edtef.org/public/directory/v1/schools?state=kwara&ownership=state" \
  -H "x-api-key: YOUR_KEY"

Get a free API key

Takes a minute. 10 requests a second, 10,000 a day.

Endpoints

School directory v1

Base URL: https://api.edtef.org/public

GET/directory/v1/schoolsList and search schools. Filter by state, LGA, ownership, gender, boarding; page through results.
GET/directory/v1/schools/{id}One school by its ID.
GET/directory/v1/statesThe 36 states and the FCT, with school counts.
GET/directory/v1/schools.csvEverything as CSV, for spreadsheets.
GET/directory/v1/openapi.jsonThe OpenAPI document, for code generators. No key needed.

Stability

Breaking changes only ship in a new version (v2). We keep old versions running for at least 12 months after a new one, and email every key holder before anything changes.

Fair use

Cache responses where you can; lists change at most a few times a day. Hitting a limit returns 429; back off and retry.

Bulk data

Need everything at once? schools.csv returns the whole directory in one call.