Get real-time vehicle positions in bounding box
Retrieve raw real-time vehicle positions within specified geographic bounds. positionType: 'gps' - real position, 'estimated' - derived from trip updates. Can be filtered by route (routeId + countryIso) or trip (tripId). Real-time vehicle positions are a busmaps.com feature only - wikiroutes.info has none, so there is no reason to call this endpoint there.
Response fields and units
| Field | Format / unit | Meaning |
|---|---|---|
requestTime | Unix epoch seconds | The request instant |
vehicles[].lat, vehicles[].lon | WGS 84 decimal degrees | Vehicle coordinates |
vehicles[].bearing | degrees (0-360) | Vehicle bearing |
vehicles[].timestamp | ISO 8601 with UTC offset | Position timestamp |
vehicles[].ageSeconds | seconds | Age of the position at request time |
vehicles[].routeTypeGroup | string | Transport type (bus, subway, train, tram, ...) |
vehicles[].routeTypeName | string or null | Transport type name |
processingTimeMs | milliseconds | Server processing time |
Parameters
| Parameter | Type | Required | Description | Example |
|---|---|---|---|---|
boundingBox | string | Yes | Bounding box coordinates in 'minLat,minLon,maxLat,maxLon' format | 51.49,-0.15,51.55,-0.08 |
lang | string | No | Language code for translated route names (IETF BCP 47 format) | en |
routeId | string | No | Show only vehicles of one route: route id as returned in routeId by this endpoint (stripped, no ISO3 prefix). Requires countryIso. | 3259533612-4027049275 |
countryIso | string | No | ISO 3166-1 alpha-3 country code taken next to routeId; required together with routeId | GBR |
tripId | string | No | Show only the vehicle of one trip: trip id as returned in tripId by this endpoint | 1-425ab9a0499138347f39 |
Try It Out
Required parameters only
curl -H "capi-key: Bearer YOUR_API_KEY" \
-H "capi-host: busmaps.com" \
"https://capi.busmaps.com:8443/v1/rawVehiclePositions?boundingBox=51.49,-0.15,51.55,-0.08" Popular parameters
curl -H "capi-key: Bearer YOUR_API_KEY" \
-H "capi-host: busmaps.com" \
"https://capi.busmaps.com:8443/v1/rawVehiclePositions?boundingBox=51.49,-0.15,51.55,-0.08&lang=en&routeId=3259533612-4027049275&countryIso=GBR&tripId=1-425ab9a0499138347f39"Response Example
{
"requestTime": 1791293021,
"vehicles": [
{
"positionType": "gps",
"vehicleId": "50443",
"lat": 51.50034,
"lon": -0.149311,
"bearing": 314,
"timestamp": "2026-10-06T14:22:11+01:00",
"ageSeconds": 90,
"tripId": "1-c6f7678dffbbd343e518",
"routeId": "433497037-1200978529",
"countryIso": "GBR",
"countryUrl": "uk",
"routeShortName": "TUBE",
"routeLongName": "Oxford - London",
"routeTypeName": "Bus",
"routeTypeGroup": "bus",
"tripHeadsign": "Oxford",
"urlRouteShortName": "TUBE",
"routeColor": "#CD0A21",
"routeTextColor": "#FFFFFF"
},
{
"positionType": "estimated",
"vehicleId": null,
"lat": 51.536996,
"lon": -0.103352,
"bearing": 13,
"timestamp": "2026-10-06T14:23:22+01:00",
"ageSeconds": 19,
"tripId": "1-425ab9a0499138347f39",
"routeId": "3259533612-4027049275",
"countryIso": "GBR",
"countryUrl": "uk",
"routeShortName": "43",
"routeLongName": "Friern Barnet - Highgate - Holloway Road - Moorgate - London Bridge",
"routeTypeName": "Bus",
"routeTypeGroup": "bus",
"tripHeadsign": "Halliwick Park",
"urlRouteShortName": "43",
"routeColor": "#CD2F30",
"routeTextColor": "#FFFFFF"
}
],
"regionName": "uk_ireland",
"processingTimeMs": 56.31
}Response Schema
View JSON Schema
{
"$schema": "http://json-schema.org/draft-07/schema#",
"title": "Raw Vehicle Positions Response",
"type": "object",
"properties": {
"requestTime": {
"type": "integer",
"description": "Request time as a Unix timestamp in seconds"
},
"processingTimeMs": {
"type": "number",
"description": "Processing time in milliseconds"
},
"vehicles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"vehicleId": {
"type": [
"string",
"null"
],
"description": "Vehicle identifier"
},
"lon": {
"type": "number",
"description": "Vehicle longitude in decimal degrees"
},
"tripId": {
"type": "string",
"description": "Internal trip identifier"
},
"countryUrl": {
"type": "string",
"description": "Country URL slug (e.g., 'uk', 'usa')"
},
"routeColor": {
"type": [
"null",
"string"
],
"description": "Route color in hex format (optional)"
},
"tripHeadsign": {
"type": "string",
"description": "Trip destination/headsign"
},
"timestamp": {
"type": [
"null",
"string"
],
"description": "Position timestamp in ISO8601 format with timezone"
},
"routeId": {
"type": "string",
"description": "Route identifier"
},
"ageSeconds": {
"type": "integer",
"description": "Age of position data in seconds"
},
"routeTextColor": {
"type": [
"null",
"string"
],
"description": "Route text color in hex format (optional)"
},
"routeShortName": {
"type": [
"null",
"string"
],
"description": "Route short name (e.g., '18', 'TUBE')"
},
"positionType": {
"type": "string",
"enum": [
"gps",
"estimated"
],
"description": "'gps' - real vehicle position; 'estimated' - derived from trip updates"
},
"countryIso": {
"type": "string",
"description": "ISO country code (e.g., 'GBR', 'USA')"
},
"routeLongName": {
"type": [
"null",
"string"
],
"description": "Route long name/description"
},
"routeTypeGroup": {
"type": "string",
"description": "Transport type (bus, subway, train, tram, ...)"
},
"routeTypeName": {
"type": [
"string",
"null"
],
"description": "Transport type name"
},
"bearing": {
"type": [
"integer",
"null",
"string"
],
"description": "Vehicle bearing in degrees (0-360)"
},
"urlRouteShortName": {
"type": [
"null",
"string"
],
"description": "URL-safe slug of the route short name"
},
"lat": {
"type": "number",
"description": "Vehicle latitude in decimal degrees"
},
"urlRouteLongName": {
"type": [
"string",
"null"
],
"description": "URL-safe slug of the route long name"
}
},
"required": [
"ageSeconds",
"routeShortName",
"positionType",
"lon",
"tripId",
"countryIso",
"timestamp",
"routeLongName",
"routeTypeGroup",
"routeTypeName",
"countryUrl",
"urlRouteShortName",
"tripHeadsign",
"routeId",
"lat"
]
},
"description": "Array of vehicle positions"
},
"regionName": {
"type": "string",
"description": "Region name for the queried area"
}
},
"required": [
"regionName",
"processingTimeMs",
"vehicles",
"requestTime"
]
}Response Codes
200
Vehicle positions retrieved successfully (or noCoverage notice if region not supported)400
Invalid bounding box format or coordinates, or routeId without countryIso500
Internal server error