trueset

Verified public data, served as an API.

Nigeria's states, LGAs, wards, polling units, health facilities, banks, phone prefixes and public holidays, plus exchange rates, crypto prices, countries and airports, from one REST API. The reference data is checked against official sources, and each record tells you where it came from.

Lagos South West · capital Ikeja
Verified
LGAs
20
Wards
245
Health facilities
2,798
Institutions
72
Population
13,491,804
2022 estimate
GET /v1/states/NG-LA
{
  "capital": "Ikeja",
  "code": "NG-LA",
  "id": "state_01M3MZBDZ0FRB1W27FX3HGFE3P",
  "name": "Lagos",
  "updated_at": "2026-09-28T21:40:40.889536Z",
  "verification": {
    "method": "official_document",
    "retrieved_at": "2026-09-06",
    "source_id": "src_01M3MZBDY2QZF6NJ6D0TVR8XNG",
    "status": "verified",
    "verified_at": "2026-09-28T21:40:40.889536+00:00",
    "verified_by": "timileyin",
    "version": 1
  },
  "zone": {
    "id": "zone_01M3MZBDV4T086WN3E0KEZ42G2",
    "name": "South West"
  }
}

Verified

See who checked each record, how they checked it and when.

Current

Each record shows when we last pulled it from its source, and every past version.

Connected

Go from a state to its LGAs, wards, facilities and population without joining tables yourself.

Available

We check the API every minute. You can see every result on the status page.

In your format

Ask for JSON, CSV, GeoJSON or Parquet from the same URL.

Documented

An OpenAPI spec and examples you can copy in cURL, JavaScript, Python and Ruby.

Datasets

Datasets, record counts, verification and access
Dataset Records Verified Access
Geopolitical zones 6 Free
States 37 Free
Local government areas 774 Free
LGA boundaries 774 Key
Wards 8,795 Key
Tertiary institutions 447 Free
Health facilities 60,966 Key
Population 810 Key
Banks 288 Free
Phone prefixes 40 Free
Public holidays 24 Free
Senatorial districts 109 Key
Federal constituencies 360 Key
Polling units 176,846 Key
Countries 249 Free
Airports 8,800 Free
Exchange rates 62,128 Live Key
Crypto prices 50 Live Key
See fields, formats and licences

Try it now

Not sent
{
  "capital": "Ikeja",
  "code": "NG-LA",
  "id": "state_01M3MZBDZ0FRB1W27FX3HGFE3P",
  "name": "Lagos",
  "updated_at": "2026-09-28T22:40:40.889536+01:00",
  "verification": {
    "method": "official_document",
    "retrieved_at": "2026-09-06",
    "source_id": "src_01M3MZBDY2QZF6NJ6D0TVR8XNG",
    "status": "verified",
    "verified_at": "2026-09-28T21:40:40.889536+00:00",
    "verified_by": "timileyin",
    "version": 1
  },
  "zone": {
    "id": "zone_01M3MZBDV4T086WN3E0KEZ42G2",
    "name": "South West"
  }
}

If you add a key, it is only used for this request. We don't save it.

How trueset works

Sources

  • INEC
  • GRID3 Nigeria
  • OCHA
  • National Population Commission
  • NCC

Verification

  • Validation
  • Cross-referencing
  • Deduplication
  • Standard names and codes
  • Versioning

trueset

  • Verified datasets
  • REST API
  • Change feed
  • Status page

Your application

  • JSON
  • CSV
  • GeoJSON
  • Parquet

Examples

List the LGAs in a state, two per page.

Shell
curl "https://trueset.timileyin.dev/v1/states/NG-LA/lgas?limit=2"

Response

JSON
{
  "data": [
    {
      "code": "NG025001",
      "id": "lga_01M3MZBEBF38X6KGEHRKRJ402V",
      "name": "Agege",
      "state": {
        "code": "NG-LA",
        "id": "state_01M3MZBDZ0FRB1W27FX3HGFE3P",
        "name": "Lagos"
      },
      "updated_at": "2026-09-28T22:40:41.002811+01:00",
      "verification": {
        "method": "cross_referenced",
        "retrieved_at": "2026-09-06",
        "source_id": "src_01M3MZBE2TYZ54M5788NA0F09V",
        "status": "verified",
        "verified_at": "2026-09-28T21:40:41.002811+00:00",
        "verified_by": "timileyin",
        "version": 1
      }
    },
    {
      "code": "NG025002",
      "id": "lga_01M3MZBEBGEP51RX5HNM39J6Q5",
      "name": "Ajeromi/Ifelodun",
      "state": {
        "code": "NG-LA",
        "id": "state_01M3MZBDZ0FRB1W27FX3HGFE3P",
        "name": "Lagos"
      },
      "updated_at": "2026-09-28T22:40:41.002811+01:00",
      "verification": {
        "method": "cross_referenced",
        "retrieved_at": "2026-09-06",
        "source_id": "src_01M3MZBE2TYZ54M5788NA0F09V",
        "status": "verified",
        "verified_at": "2026-09-28T21:40:41.002811+00:00",
        "verified_by": "timileyin",
        "version": 1
      }
    }
  ],
  "next": "lga_01M3MZBEBGEP51RX5HNM39J6Q5"
}

Get a bank and its code. Use ?code= or ?q= on /v1/banks to search.

Shell
curl "https://trueset.timileyin.dev/v1/banks/access-bank"

Response

JSON
{
  "category": "bank",
  "code": "044",
  "id": "bank_01M3SCB7DZD3HQAFHH6KVMDA4A",
  "name": "Access Bank",
  "slug": "access-bank",
  "updated_at": "2026-09-30T15:44:03.720808+01:00",
  "verification": {
    "method": "community",
    "retrieved_at": "2026-09-30",
    "source_id": "src_01M3SCB7DDFFWH3R72459JNKJR",
    "status": "verified",
    "verified_at": "2026-09-30T14:44:03.720808+00:00",
    "verified_by": "timileyin",
    "version": 1
  }
}

Find the network a number was issued on. A ported number still reports its original network.

Shell
curl "https://trueset.timileyin.dev/v1/phone-prefixes/lookup?number=08031234567"

Response

JSON
{
  "id": "pfx_01M3SCB7PMJ3FVVGH34V2KVGRV",
  "international": "+2348031234567",
  "number": "08031234567",
  "operator": "MTN",
  "prefix": "0803",
  "updated_at": "2026-09-30T15:44:03.534674+01:00",
  "verification": {
    "method": "official_document",
    "retrieved_at": "2026-09-30",
    "source_id": "src_01M3SCB7P21BGCN694WX0T3NDH",
    "status": "verified",
    "verified_at": "2026-09-30T14:44:03.534674+00:00",
    "verified_by": "timileyin",
    "version": 1
  }
}

List a year's public holidays. Dates marked tentative have not been announced yet. The response is shortened to the first holiday.

Shell
curl "https://trueset.timileyin.dev/v1/holidays?year=2026"

Response

JSON
{
  "data": [
    {
      "date": "2026-01-01",
      "id": "hol_01M3SCB7VNA659KXTQKQT006ZH",
      "kind": "fixed",
      "name": "New Year's Day",
      "tentative": false,
      "updated_at": "2026-09-30T15:44:03.627037+01:00",
      "verification": {
        "method": "official_document",
        "retrieved_at": "2026-09-30",
        "source_id": "src_01M3SCB7VJ2FWYS2D0X73S75K7",
        "status": "verified",
        "verified_at": "2026-09-30T14:44:03.627037+00:00",
        "verified_by": "timileyin",
        "version": 1
      }
    }
  ]
}

Convert between currencies at the day's central rate. Add date= to use a past rate. Key

Shell
curl -H "Authorization: Bearer $TRUESET_KEY" \
  "https://trueset.timileyin.dev/v1/exchange-rates/convert?from=USD&to=NGN&amount=100"

Response

JSON
{
  "amount": 100,
  "date": "2026-09-29",
  "from": "USD",
  "rate": 1329.9737,
  "result": 132997.37,
  "to": "NGN"
}

Get a coin's price in US dollars and naira. Key

Shell
curl -H "Authorization: Bearer $TRUESET_KEY" \
  "https://trueset.timileyin.dev/v1/crypto/prices/BTC"

Response

JSON
{
  "change_24h_percent": -0.16402,
  "market_cap_usd": 1681074704889,
  "name": "Bitcoin",
  "price_ngn": 111097658,
  "price_usd": 83687,
  "rank": 1,
  "symbol": "BTC",
  "updated_at": "2026-09-30T15:52:53.038476+01:00"
}