Skip to main content

Transport & Logistics API

The Transport & Logistics API provides comprehensive transportation services for Ghana, including route planning, public transport information, travel cost estimation, and fuel price data.

πŸš— Overview​

The API provides:

  • Transport Stops - Bus stops, stations, and public transport hubs
  • Route Planning - Optimal routing between locations with multiple transport modes
  • Route Directions - Detailed turn-by-turn navigation instructions
  • Travel Cost Estimation - Fuel costs and fare calculations for different transport modes
  • Fuel Prices - Current petrol, diesel, and LPG prices in Ghana
  • Nearby Services - Find transport stops within a specified radius

πŸ”— Base Endpoint​

https://ghana-api.dev/v1/transport

πŸ“‹ Available Endpoints​

1. Get Transport Stops​

Retrieve transport stops (bus stops, stations, etc.) for a specific city.

Endpoint: GET /transport/stops

Query Parameters​

ParameterTypeRequiredDefaultDescription
citystringNoaccraCity to get stops for (accra, kumasi, tamale, takoradi)
typestringNo-Filter by stop type (bus_stop, platform, station)

Example Request​

curl -X GET "https://ghana-api.dev/v1/transport/stops?city=accra&type=bus_stop" \
-H "Accept: application/json"

Example Response​

{
"success": true,
"data": [
{
"id": "stop_001",
"name": "Kwame Nkrumah Circle",
"coordinates": [5.6037, -0.187],
"type": "bus_stop",
"routes": ["route_001", "route_002"]
},
{
"id": "stop_002",
"name": "Tema Station",
"coordinates": [5.6308, -0.1615],
"type": "station",
"routes": ["route_003"]
}
],
"count": 2,
"city": "accra",
"type": "bus_stop"
}

Response Fields​

FieldTypeDescription
successbooleanOperation success status
dataarrayArray of transport stop objects
countnumberNumber of stops returned
citystringCity queried
typestringStop type filter applied (if any)

Error Responses​

  • 400 Bad Request - Invalid query parameters
  • 503 Service Unavailable - Transport service is unavailable

2. Find Nearby Transport Stops​

Find transport stops within a specified radius of given coordinates.

Endpoint: GET /transport/nearby-stops

Query Parameters​

ParameterTypeRequiredDefaultDescription
latnumberYes-Latitude coordinate
lngnumberYes-Longitude coordinate
radiusnumberNo1000Search radius in meters
typestringNo-Filter by stop type

Example Request​

curl -X GET "https://ghana-api.dev/v1/transport/nearby-stops?lat=5.6037&lng=-0.187&radius=500" \
-H "Accept: application/json"

Example Response​

{
"success": true,
"data": [
{
"id": "stop_001",
"name": "Kwame Nkrumah Circle",
"coordinates": [5.6037, -0.187],
"type": "bus_stop",
"routes": ["route_001", "route_002"],
"distance": 0
},
{
"id": "stop_003",
"name": "Odawna Market",
"coordinates": [5.6045, -0.1901],
"type": "bus_stop",
"routes": ["route_004"],
"distance": 285.5
}
],
"count": 2,
"center": [5.6037, -0.187],
"radius": 500
}

Response Fields​

FieldTypeDescription
successbooleanOperation success status
dataarrayArray of nearby stops with distance
countnumberNumber of stops found
centerarrayQuery coordinates [lat, lng]
radiusnumberSearch radius in meters
distancenumberDistance from query point in meters

Error Responses​

  • 400 Bad Request - Invalid coordinates or outside Ghana boundaries
  • 503 Service Unavailable - Transport service is unavailable

3. Calculate Route​

Calculate optimal route, distance, and duration between two points.

Endpoint: GET /transport/route-calculation

Query Parameters​

ParameterTypeRequiredDefaultDescription
start_latnumberYes-Starting latitude
start_lngnumberYes-Starting longitude
end_latnumberYes-Ending latitude
end_lngnumberYes-Ending longitude
modestringNodrivingTransport mode (driving, walking, cycling, publicTransport)

Example Request​

curl -X GET "https://ghana-api.dev/v1/transport/route-calculation?start_lat=5.6037&start_lng=-0.187&end_lat=6.6885&end_lng=-1.6244&mode=driving" \
-H "Accept: application/json"

Example Response​

{
"success": true,
"data": {
"distance": 247.8,
"duration": 10800,
"coordinates": [
[5.6037, -0.187],
[5.6125, -0.215],
[6.6885, -1.6244]
],
"instructions": [
"Head north on Liberation Road",
"Turn right onto George Walker Bush Highway",
"Continue for 247 km to Kumasi"
],
"cost": 85.50
},
"start": [5.6037, -0.187],
"end": [6.6885, -1.6244],
"mode": "driving"
}

Response Fields​

FieldTypeDescription
successbooleanOperation success status
dataobjectRoute calculation results
distancenumberRoute distance in kilometers
durationnumberEstimated travel time in seconds
coordinatesarrayRoute coordinates array
instructionsarrayTurn-by-turn directions
costnumberEstimated travel cost (if applicable)
startarrayStarting coordinates [lat, lng]
endarrayEnding coordinates [lat, lng]
modestringTransport mode used

Error Responses​

  • 400 Bad Request - Invalid coordinates or outside Ghana boundaries
  • 503 Service Unavailable - Routing service is unavailable

4. Get Route Directions​

Get detailed route directions between two points with multiple input options.

Endpoint: GET /transport/directions

Query Parameters​

ParameterTypeRequiredDefaultDescription
start_latnumberConditional-Starting latitude (required if start_name not provided)
start_lngnumberConditional-Starting longitude (required if start_name not provided)
start_namestringConditional-Starting place name (required if coordinates not provided)
end_latnumberConditional-Destination latitude (required if end_name not provided)
end_lngnumberConditional-Destination longitude (required if coordinates not provided)
end_namestringConditional-Destination place name (required if coordinates not provided)
profilestringNodriving-carTransport profile (driving-car, driving-hgv, cycling-regular, foot-walking, wheelchair)
instructionsbooleanNotrueInclude turn-by-turn instructions
geometrybooleanNotrueInclude route geometry/polyline

Example Request with Coordinates​

curl -X GET "https://ghana-api.dev/v1/transport/directions?start_lat=5.6037&start_lng=-0.187&end_lat=6.6885&end_lng=-1.6244&profile=driving-car" \
-H "Accept: application/json"

Example Request with Place Names​

curl -X GET "https://ghana-api.dev/v1/transport/directions?start_name=Kwame%20Nkrumah%20Circle,%20Accra&end_name=Kumasi%20Central%20Market&profile=driving-car" \
-H "Accept: application/json"

Example Response​

{
"success": true,
"data": {
"route": {
"distance": 247800,
"duration": 10800,
"geometry": "encoded_polyline_string",
"instructions": [
{
"text": "Head north on Liberation Road",
"distance": 1200,
"duration": 180,
"maneuver": {
"type": "depart",
"location": [5.6037, -0.187]
}
},
{
"text": "Turn right onto George Walker Bush Highway",
"distance": 246600,
"duration": 10620,
"maneuver": {
"type": "turn",
"modifier": "right",
"location": [5.6125, -0.215]
}
}
]
},
"waypoints": [
{
"name": "Kwame Nkrumah Circle",
"location": [5.6037, -0.187]
},
{
"name": "Kumasi Central Market",
"location": [6.6885, -1.6244]
}
],
"metadata": {
"provider": "openrouteservice",
"profile": "driving-car",
"timestamp": "2024-01-15T10:30:00Z"
}
}
}

Response Fields​

FieldTypeDescription
successbooleanOperation success status
dataobjectRoute directions data
routeobjectRoute information
distancenumberTotal distance in meters
durationnumberTotal duration in seconds
geometrystringEncoded polyline for route visualization
instructionsarrayTurn-by-turn navigation instructions
waypointsarrayStart and end point information
metadataobjectProvider and request information

Error Responses​

  • 400 Bad Request - Invalid input parameters or coordinates outside Ghana
  • 404 Not Found - Could not find coordinates for provided place names
  • 503 Service Unavailable - All routing services are unavailable

5. Estimate Travel Cost​

Estimate travel cost based on distance, fuel prices, and transport mode.

Endpoint: GET /transport/travel-cost

Query Parameters​

ParameterTypeRequiredDefaultDescription
distancenumberYes-Distance in kilometers
modestringNocarTransport mode (car, taxi, trotro, bus)
fuel_efficiencynumberNo12Fuel efficiency in km/l (for car mode)

Example Request​

curl -X GET "https://ghana-api.dev/v1/transport/travel-cost?distance=247.8&mode=car&fuel_efficiency=10" \
-H "Accept: application/json"

Example Response​

{
"success": true,
"data": {
"distance": 247.8,
"mode": "car",
"fuelCost": 161.07,
"currency": "GHS",
"breakdown": {
"fuelNeeded": "24.78L",
"fuelPrice": "6.5 GHS/L",
"fuelEfficiency": "10 km/L"
}
}
}

Transport Mode Calculations​

Car Mode:

  • Calculates fuel consumption based on distance and efficiency
  • Uses real-time fuel prices from major Ghanaian companies (Shell, Goil, Total, Star Oil)

Taxi Mode:

  • Base fare: 5 GHS
  • Per kilometer rate: 2.5 GHS/km

Trotro Mode:

  • Rate: 1.5 GHS/km (estimated)

Bus Mode:

  • Rate: 1.0 GHS/km (estimated)

Response Fields​

FieldTypeDescription
successbooleanOperation success status
dataobjectCost estimation data
distancenumberDistance in kilometers
modestringTransport mode used
fuelCostnumberFuel cost (for car mode)
estimatedFarenumberEstimated fare (for public transport)
currencystringCurrency code (GHS)
breakdownobjectCost calculation breakdown

Error Responses​

  • 400 Bad Request - Invalid distance or unsupported transport mode
  • 503 Service Unavailable - Pricing service is unavailable

6. Get Fuel Prices​

Retrieve current petrol and diesel prices in Ghana, calculated from major fuel companies.

Endpoint: GET /transport/fuel-prices

Fuel Price Methodology​

The API scrapes real-time fuel prices from CediRates.com and calculates averages from Ghana's major fuel companies:

  • Shell - International oil company
  • Goil - Ghana Oil Company (state-owned)
  • Total - TotalEnergies (international)
  • Star Oil - Star Oil Ghana

Averaging Formula:

  • Petrol: (Shell + Goil + Total + Star Oil) Γ· 4
  • Diesel: (Shell + Goil + Total + Star Oil) Γ· 4

Caching Strategy:

  • Fuel prices are cached daily and expire at 11:59 PM each day
  • This ensures prices remain consistent throughout the day while updating daily
  • Cache automatically refreshes at the end of each day

Example Request​

curl -X GET "https://ghana-api.dev/v1/transport/fuel-prices" \
-H "Accept: application/json"

Example Response​

{
"success": true,
"data": {
"petrol": 12.86,
"diesel": 13.99,
"currency": "GHS",
"lastUpdated": "2024-01-15T08:00:00Z",
"source": "CediRates.com (Shell, Goil, Total, Star Oil Average)"
}
}

Response Fields​

FieldTypeDescription
successbooleanOperation success status
dataobjectFuel price data
petrolnumberAverage petrol price per liter
dieselnumberAverage diesel price per liter
currencystringCurrency code (GHS)
lastUpdatedstringLast update timestamp
sourcestringData source and averaging methodology

Error Responses​

  • 503 Service Unavailable - Fuel price service is unavailable

πŸ—ΊοΈ Geographic Coverage​

The Transport & Logistics API covers transportation data for Ghana's major cities:

  • Accra - Capital city with extensive transport network
  • Kumasi - Ashanti region hub with major transport routes
  • Tamale - Northern region transport center
  • Takoradi - Western region port city

Coordinate Boundaries​

All coordinates must be within Ghana's boundaries:

  • Latitude: 4.5Β°N to 11.5Β°N
  • Longitude: 3.5Β°W to 1.5Β°E

Requests with coordinates outside these boundaries will return a 400 Bad Request error.


🚌 Transport Modes​

Available Transport Profiles​

ModeDescriptionUse Case
driving-carStandard passenger vehiclePersonal car travel
driving-hgvHeavy goods vehicleTruck/freight transport
cycling-regularBicycle routingCycling routes
foot-walkingPedestrian routingWalking directions
wheelchairAccessible routingWheelchair-accessible paths

Public Transport Types​

TypeDescription
bus_stopPublic bus stops
stationMajor transport terminals
platformRailway/metro platforms
trotroShared taxi stops
taxiTaxi stands

πŸ”§ Service Providers​

The API uses multiple service providers for reliability and accuracy:

Routing Services​

  • OpenRouteService - Primary routing provider
  • HERE Maps - Backup routing service
  • GraphHopper - Alternative routing engine

Geocoding Services​

  • Nominatim - Open-source geocoding
  • Overpass API - OpenStreetMap data

Transport Data Sources​

  • Overpass API - Public transport stops and routes
  • GTFS Data - General Transit Feed Specification
  • HERE Transit API - Commercial transit data
  • GraphHopper - Route optimization

Fuel Price Sources​

  • CediRates.com - Real-time fuel price scraping from major Ghanaian companies
  • Direct Company Data - Shell, Goil, Total, and Star Oil price aggregation

πŸ“Š Data Accuracy​

Routing Accuracy​

  • Routes calculated using real road network data
  • Traffic conditions and road restrictions considered
  • Regular updates from multiple data sources

Transport Stop Data​

  • Sourced from OpenStreetMap and official transit agencies
  • Regular validation and updates
  • Community-contributed improvements

Fuel Price Accuracy​

  • Real-time scraping from CediRates.com
  • Averaged from 4 major fuel companies for reliability
  • Updated with each API request
  • Direct source data from Shell, Goil, Total, and Star Oil

πŸš€ Rate Limiting​

The Transport & Logistics API implements rate limiting to ensure fair usage:

  • 100 requests per minute per IP address
  • 1000 requests per hour per IP address
  • 10,000 requests per day per IP address

Rate limit headers are included in all responses:

  • X-RateLimit-Limit - Request limit per time window
  • X-RateLimit-Remaining - Requests remaining in current window
  • X-RateLimit-Reset - Time when the rate limit resets

πŸ”’ Security & Privacy​

Data Protection​

  • No personal location data is stored
  • Request logs are anonymized after 24 hours
  • HTTPS encryption for all API calls

API Security​

  • Input validation on all parameters
  • SQL injection and XSS protection
  • Regular security audits and updates

πŸ› Error Handling​

Common Error Codes​

CodeDescriptionSolution
400Invalid coordinates or parametersCheck coordinate validity and parameter format
404Location not foundVerify place names and spelling
429Rate limit exceededWait before making more requests
503Service unavailableTry again later or contact support

Error Response Format​

{
"success": false,
"message": "Failed to calculate route",
"error": "Coordinates are outside Ghana boundaries"
}

πŸ“ Examples​

Complete Journey Planning​

# 1. Find nearby stops
curl -X GET "https://ghana-api.dev/v1/transport/nearby-stops?lat=5.6037&lng=-0.187&radius=1000"

# 2. Calculate route
curl -X GET "https://ghana-api.dev/v1/transport/route-calculation?start_lat=5.6037&start_lng=-0.187&end_lat=6.6885&end_lng=-1.6244&mode=driving"

# 3. Get detailed directions
curl -X GET "https://ghana-api.dev/v1/transport/directions?start_lat=5.6037&start_lng=-0.187&end_lat=6.6885&end_lng=-1.6244&profile=driving-car"

# 4. Estimate travel cost
curl -X GET "https://ghana-api.dev/v1/transport/travel-cost?distance=247.8&mode=car"

# 5. Get current fuel prices
curl -X GET "https://ghana-api.dev/v1/transport/fuel-prices"

Using Place Names​

# Route with place names instead of coordinates
curl -X GET "https://ghana-api.dev/v1/transport/directions?start_name=Kotoka%20Airport&end_name=University%20of%20Ghana&profile=driving-car"

Public Transport Journey​

# Find transport stops in Kumasi
curl -X GET "https://ghana-api.dev/v1/transport/stops?city=kumasi&type=bus_stop"

# Estimate trotro fare
curl -X GET "https://ghana-api.dev/v1/transport/travel-cost?distance=15.5&mode=trotro"

πŸ“± Integration Tips​

Frontend Integration​

  • Use the geometry data for map visualization
  • Implement retry logic for failed requests
  • Cache fuel prices for better performance
  • Provide fallback options when services are unavailable

Mobile Applications​

  • Consider using compressed geometry for reduced bandwidth
  • Implement offline caching for frequently used routes
  • Provide alternative transport modes when primary fails

Business Applications​

  • Combine with address validation for complete logistics solutions
  • Use cost estimation for fleet management
  • Integrate fuel price monitoring for budget planning

πŸ†˜ Support​

For technical support, feature requests, or bug reports:


Last updated: January 2024