-
To be added: Get general information about Kenya,its people, government, institutions, health, culture, energy, finance, infrastructure, geographical sites, etc.
-
Get information about the 47 counties, including population, industries, area, tribes, postal codes, etc.
- Node.js
- Express.js
To access the base URL, https://kenya-api.onrender.com/api/v1/
To access health endpoint, https://kenya-api.onrender.com/api/v1/health
List of all the available kenya-api base routes.
/health
/info
# info about country kenya!/county
/wards
/postal_stations
/universities
/tribes
/hospitals
/banks
Installation
# install dependencies
$ yarn install
# serve with hot reload at localhost:3000
$ yarn run dev
Your application will be served on port 3000 by default, you can change that by modifying the .env file.
For a detailed explanation of how things work, check out Express.js.
This REST API endpoint allows you to retrieve information about counties based on their county code.
- Method: GET
- Endpoint:
/county
- Parameters:
county_code
: The unique numerical code of the county (required)
- Status Code: 200 (OK) - Successful request
- Status Code: 400 (Bad Request) - County not found or invalid
county_code
{
"county": {
"code": 1,
"name": "Mombasa",
"capital": "Mombasa (City)",
"contact": "[email protected]",
"website": "https://eservices.mombasa.go.ke/site/",
"location": "Coastal Kenya",
"border": ["Kilifi", "Kwale", "Indian Ocean"],
"area": "219 km2",
"Population": "939,370",
"Mining": ["Chrome ore", "Cement", "Salt", "Sand"]
},
"status": 200
}
{
"error": "County with the code {county_code} not found",
"status": 400
}
GET /county?county_code=1
{
"county": {
"code": 1,
"name": "Mombasa",
"capital": "Mombasa (City)",
"contact": "[email protected]",
"website": "https://eservices.mombasa.go.ke/site/",
"location": "Coastal Kenya",
"border": ["Kilifi", "Kwale", "Indian Ocean"],
"area": "219 km2",
"Population": "939,370",
"Mining": ["Chrome ore", "Cement", "Salt", "Sand"]
},
"status": 200
}
GET /county?county_code=99
{
"error": "County with the code 99 not found",
"status": 400
}
GET /county
{
"counties": [
{
"code": 1,
"name": "Mombasa",
"capital": "Mombasa (City)",
"contact": "[email protected]",
"website": "https://eservices.mombasa.go.ke/site/",
"location": "Coastal Kenya",
"border": ["Kilifi", "Kwale", "Indian Ocean"],
"area": "219 km2",
"Population": "939,370",
"Mining": ["Chrome ore", "Cement", "Salt", "Sand"]
}
// Additional counties...
],
"status": 200
}
This REST API endpoint allows you to retrieve information about wards based on their ward code.
- Method: GET
- Endpoint:
/wards
- Parameters:
ward_code
: The unique alphanumeric code of the ward (required)
- Status Code: 200 (OK) - Successful request
- Status Code: 400 (Bad Request) - Ward not found or invalid
ward_code
GET /wards?ward_code=40101
{
"ward": {
"code": "40101",
"office": "Ahero"
},
"status": 200
}
{
"error": "Ward with the code 40101 not found",
"status": 400
}
GET /wards?ward_code=99999
{
"error": "Ward with the code 99999 not found",
"status": 400
}
GET /wards
{
"wards": [
{
"code": "40101",
"office": "Ahero"
},
{
"code": "30101",
"office": "Ainabkoi"
},
{
"code": "40139",
"office": "Akala"
}
// Additional wards...
],
"status": 200
}
This API endpoint allows you to retrieve information about postal stations based on their postal code.
- Method: GET
- Endpoint:
/postal_stations
- Parameters:
post_code
: The unique numerical postal code of the station (required)
- Status Code: 200 (OK) - Successful request
- Status Code: 400 (Bad Request) - Postal station not found or invalid
post_code
- Status Code: 200 (OK) - Request without
post_code
, returns all postal stations
{
"post": {
"code": 12345,
"name": "Sample Postal Station",
"location": "Sample Location",
"district": "Sample District"
},
"status": 200
}
{
"error": "Post station with the code {postal_code} not found",
"status": 400
}
GET /postal_stations?post_code=12345
{
"post": {
"code": 12345,
"name": "Sample Postal Station",
"location": "Sample Location",
"district": "Sample District"
},
"status": 200
}
GET /postal_stations?post_code=99999
{
"error": "Post station with the code 99999 not found",
"status": 400
}
GET /postal_stations
{
"postal_stations": [
{
"code": 12345,
"name": "Sample Postal Station 1",
"location": "Sample Location 1",
"district": "Sample District 1"
},
{
"code": 67890,
"name": "Sample Postal Station 2",
"location": "Sample Location 2",
"district": "Sample District 2"
}
// Additional postal stations...
],
"status": 200
}
This API endpoint allows you to retrieve information about banks in Kenya. You can query by bank type, bank name, USSD code, or Paybill number.
- Do not send money, share personal details, or initiate transactions based solely on this API’s data.
- Be aware that malicious actors can impersonate banks using fake numbers, emails, or domains.
- Always confirm legitimacy before engage in making payments, signing agreements, or providing sensitive information.
This API is provided strictly for informational and educational purposes. The maintainers of this API assume no responsibility for financial loss, fraud, or damages resulting from misuse of the data.
-
Method:
GET
-
Endpoint:
/banks
-
Query Parameters:
-
bank_type
: Filter banks by type (optional). Valid values:commercial
mortgage-finance-institution
non-operating-holding-company
-
bank_name
: Filter by partial/full bank name (optional, case-insensitive). -
ussd
: Filter by USSD code (optional, only applies to commercial banks). -
paybill
: Filter by Paybill number (optional, only applies to banks that have one).
-
- 200 (OK): Successful request, returns matching bank(s).
- 400 (Bad Request): Invalid bank type or malformed query.
- 404 (Not Found): No banks match the provided query.
- 200 (OK): Request without filters returns all banks.
GET /banks?bank_name=commercial&ussd=247
{
"data": [
{
"id": 15,
"name": "Equity Bank Kenya Limited",
"postalAddress": "P. O. Box 75104-00200, Nairobi",
"telephone": "+254-20- +254 20 2262000/2262956 /2262828, 0763026000, 07633026956, 0763026828",
"fax": "+254-020-2737276",
"email": "[email protected]",
"website": "www.equitybankgroup.com",
"physicalAddress": "Equity Centre, 9th Floor, Hospital Road, Upper Hill, Nairobi.",
"dateLicensed": "28th December 2004",
"peerGroup": "Large",
"branches": 178,
"agencies": 0,
"salesCentres": 0,
"subBranches": 13,
"xpressUnits": 0,
"type": "commercial",
"ussd": "*247#",
"payBill": 247247
},
{
"id": 2,
"name": "Equity Group Holdings Limited",
"licensedSubsidiary": "Equity Bank Kenya Ltd",
"postalAddress": "P.O. Box 75104 – 00200, Nairobi",
"telephone": "+254 763 3026000 Contact Centre: +254 763 063 000",
"email": "[email protected]",
"website": "www.equitygroupholdings.com",
"physicalAddress": "Equity Centre, 9th Floor, Hospital Road, Upper Hill, Nairobi",
"dateAuthorized": "31st December 2014",
"type": "non-operating-holding-company"
}
],
"count": 2,
"status": 200
}
{
"error": "Invalid bank type",
"status": 400
}
{
"error": "No bank(s) found matching the provided query",
"query": {
"bank_name": "nonexistent-bank"
},
"status": 404
}
GET /banks
{
"data": [
{
"id": 1,
"name": "ABSA Bank Kenya PLC",
"postalAddress": "P. O. Box 30120 – 00100, Nairobi",
"telephone": "+254-20-4254000, 3900000",
"email": "[email protected]",
"website": "www.absabank.co.ke",
"physicalAddress": "Absa Headquarters, Waiyaki Way, Westlands, Nairobi",
"dateLicensed": "1916",
"peerGroup": "Large",
"branches": 85,
"type": "commercial",
"ussd": "*224#",
"payBill": 111777
},
{
"id": 2,
"name": "Equity Bank Kenya Limited",
"postalAddress": "P. O. Box 75104 – 00200, Nairobi",
"telephone": "+254-763-063000",
"email": "[email protected]",
"website": "www.equitybankgroup.com",
"physicalAddress": "Equity Centre, Upper Hill, Nairobi",
"dateLicensed": "1984",
"peerGroup": "Large",
"branches": 190,
"type": "commercial",
"ussd": "*247#",
"payBill": 247247
}
// ... additional banks
],
"count": 42,
"status": 200
}
Contributions are always welcome! You can contribute to this project in various ways, including but not limited to:
- Updating to correct information
- Adding missing information
- Writing and adding tests
- Fixing bugs and issues
- Improving documentation
- Implementing new features
See contributing.md
for more details on how to get started with contributing.
Please adhere to this project's code of conduct
.