Intercity Prices API
Real-time Nigerian intercity transport data — bus companies, terminal locations, route coverage, and verified direct fares across 36 states and the FCT.
Base URL
https://www.intercityprices.com.ng/api
HTTPS only. HTTP requests are rejected.
Authentication
🔑 API Key Required
Every request must include your API key in the x-api-key header.
Header Format
x-api-key: vyra_live_yourkey_xxxxxxxxxx
Complete Example
Without a Key
| Scenario | Response |
|---|---|
| No key header | 401 Missing API key |
| Invalid key | 403 Invalid or revoked |
| Valid key | 200 Success |
Getting a Key
API keys are issued per client. Message us on WhatsApp or email with your company name and use case.
Endpoints
/api/search
Search by state name, company name, or route keyword. Returns matching states, companies, and routes.
Query Parameters
| Name | Type | Required |
|---|---|---|
q |
string | Yes |
attribute |
string | No |
Example
GET /api/search?q=Lagos
Response
{
"query": "lagos",
"results": {
"states": [
{
"name": "Lagos",
"companies": ["ABC Transport", "God is Good Motors"],
"majorTerminals": [
{
"name": "Jibowu Terminal",
"address": "22, Ikorodu Road, Jibowu, Yaba, Lagos",
"phone": "08139862090"
}
]
}
],
"companies": [],
"routes": [
{
"route": "Lagos-Onitsha",
"prices": {
"ABC Transport": 29120,
"GUO Transport": 35490
}
}
]
},
"totalFound": 12
}
/api/transport
Returns the complete dataset — all companies, terminals, states, and route prices in a single payload.
Query Parameters (Optional)
| Name | Type | Description |
|---|---|---|
state |
string | Filter to a single state |
company |
string | Filter to a single company |
/api/states
All states with active operators, or one state when filtered.
Query Parameters (Optional)
| Name | Type | Description |
|---|---|---|
state |
string | Return only this state |
/api/companies
All companies, or one company when filtered.
Query Parameters (Optional)
| Name | Type | Description |
|---|---|---|
company |
string | Return only this company |
/api/routes
Route prices between states — all routes, or one when filtered.
Query Parameters (Optional)
| Name | Type | Description |
|---|---|---|
route |
string | Full key (e.g., Lagos-Abuja) |
from + to |
string | Origin & destination |
Response
{
"route": "Lagos-Abuja",
"from": "Lagos",
"to": "Abuja",
"prices": {
"ABC Transport": 31850,
"God is Good Motors": 56900,
"GUO Transport": 30030
}
}
Data Schemas
Company Object
{
"id": "abc-transport",
"name": "ABC Transport Plc",
"image": "https://i.ibb.co/5hXDcq5/images-7.png",
"states": ["Lagos", "Abuja", "Rivers"],
"terminals": {
"Lagos": [
{ "name": "Jibowu Terminal", "address": "...", "phone": "..." }
]
},
"basePrice": 23904,
"serviceAttributes": ["Comfort", "Safety", "Quick"]
}
State Object
{
"companies": ["ABC Transport", "God is Good Motors"],
"majorTerminals": [
{
"name": "Jibowu Terminal",
"address": "22, Ikorodu Road, Jibowu, Yaba, Lagos",
"phone": "08139862090"
}
]
}
Code Examples
JavaScript
const res = await fetch(
'https://www.intercityprices.com.ng/api/search?q=Lagos',
{
headers: { 'x-api-key': 'vyra_live_yourkey_xxxxxxxxxx' }
}
);
const data = await res.json();
data.results.states.forEach(state => {
console.log(state.name, '→', state.companies.length);
});
Python
import requests
response = requests.get(
"https://www.intercityprices.com.ng/api/search",
params={"q": "Lagos"},
headers={"x-api-key": "vyra_live_yourkey_xxxxxxxxxx"},
timeout=10
)
response.raise_for_status()
for state in response.json()["results"]["states"]:
print(state["name"])
cURL
curl -H "x-api-key: vyra_live_yourkey_xxxxxxxxxx" \
"https://www.intercityprices.com.ng/api/search?q=Lagos"
Error Handling
| Status | Meaning |
|---|---|
| 200 | OK |
| 400 | Bad Request |
| 401 | Unauthorized |
| 403 | Forbidden |
| 404 | Not Found |
| 405 | Method Not Allowed |
| 429 | Rate Limited |
| 500 | Server Error |
Rate Limits
Requests / Minute
60
Burst
20
Need higher limits? Message us on WhatsApp.
Support
Need an API key, higher rate limits, or have a question? Reach out directly.