Get real-time vehicle positions in bounding box

GET /rawVehiclePositions

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.

Parameters

Parameter Type Required Description Example
boundingBox string Bounding box coordinates in 'minLat,minLon,maxLat,maxLon' format 51.500,-0.140,51.515,-0.120
lang string Language code for translated route names (IETF BCP 47 format, e.g. en, ru, es, zh-CN). If no translation is available, the original name is returned en
routeId string Show only vehicles of one route: route id as returned in routeId by this endpoint (stripped, no ISO3 prefix). Requires countryIso. 4196227115-3951086873
countryIso string ISO 3166-1 alpha-3 country code taken next to routeId; required together with routeId GBR
tripId string Show only the vehicle of one trip: trip id as returned in tripId by this endpoint 1-c40a037c6890b788a038

Try It Out

Base URL: https://capi.busmaps.com:8443
Example Requests:
Required parameters only
curl -H "capi-key: Bearer YOUR_API_KEY" \
     -H "capi-host: busmaps.com" \
     "https://capi.busmaps.com:8443/rawVehiclePositions?boundingBox=51.500,-0.140,51.515,-0.120"
Popular parameters
curl -H "capi-key: Bearer YOUR_API_KEY" \
     -H "capi-host: busmaps.com" \
     "https://capi.busmaps.com:8443/rawVehiclePositions?boundingBox=51.500,-0.140,51.515,-0.120&lang=en&routeId=4196227115-3951086873&countryIso=GBR&tripId=1-c40a037c6890b788a038"

Response Example

HTTP 200 - Success
{
  "requestTime": 1781087378,
  "vehicles": [
    {
      "positionType": "gps",
      "vehicleId": "SCOX-50424",
      "lat": 51.510246,
      "lon": -0.188234,
      "bearing": 84,
      "timestamp": "2026-06-10T11:28:41+01:00",
      "ageSeconds": 57,
      "tripId": "1-f5c33085913c8471e495",
      "routeId": "433497037-1200978529",
      "countryIso": "GBR",
      "countryUrl": "uk",
      "routeShortName": "TUBE",
      "routeLongName": "Oxford - London",
      "tripHeadsign": "London",
      "urlRouteShortName": "TUBE"
    },
    {
      "positionType": "gps",
      "vehicleId": "SCOX-50432",
      "lat": 51.515163,
      "lon": -0.224674,
      "bearing": 264,
      "timestamp": "2026-06-10T11:28:29+01:00",
      "ageSeconds": 69,
      "tripId": "1-c5927d26e4cc652f547d",
      "routeId": "433497037-1200978529",
      "countryIso": "GBR",
      "countryUrl": "uk",
      "routeShortName": "TUBE",
      "routeLongName": "Oxford - London",
      "tripHeadsign": "Oxford",
      "urlRouteShortName": "TUBE"
    }
  ],
  "regionName": "uk_ireland",
  "processingTimeMs": 395.63
}
Response Schema

Title: Raw Vehicle Positions Response

View Full 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 unix timestamp"
    },
    "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": "Longitude of vehicle position"
          },
          "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"
          },
          "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": "Latitude of vehicle position"
          },
          "urlRouteLongName": {
            "type": [
              "string",
              "null"
            ],
            "description": "URL-safe slug of the route long name"
          }
        },
        "required": [
          "ageSeconds",
          "routeShortName",
          "positionType",
          "lon",
          "tripId",
          "countryIso",
          "timestamp",
          "routeLongName",
          "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
HTTP 200

Vehicle positions retrieved successfully (or noCoverage notice if region not supported)

HTTP 400

Invalid bounding box format or coordinates, or routeId without countryIso

HTTP 500

Internal server error