Get real-time vehicle positions in bounding box

GET /v1/rawVehiclePositions
Base URL: https://capi.busmaps.com:8443

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

FieldFormat / unitMeaning
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

ParameterTypeRequiredDescriptionExample
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 countryIso
500 Internal server error