Realtime/SL

Get route

Everything the feed says about one route, in a single response.

GET /api/routes/:routeId

A composite: vehicles, trip updates and alerts for the route, together. Saves three round trips when building a route view.

limit caps each of the three collections independentlylimit=10 can return 30 objects. counts always reports the untruncated totals.

Try it

Runs from your browser against the API in .

Path

Query

GET
curl equivalent
 

Parameters

Path

ParameterTypeDefaultDescription
routeIdrequiredpathstring

GTFS route id.

Query

ParameterTypeDefaultDescription
limitinteger50

Caps each of vehicles, tripUpdates and alerts separately.

attimestampnow

The instant to evaluate activePeriods against, as epoch seconds or ISO 8601. Sets isActive on every alert returned.

langstring

Language tag used to pick among an alert's translations. Matches an exact tag first (en-GB), then the base language (en), then an untagged translation, then whatever came first.

Inert in this capture. None of the 177 alerts tag their translations with a language, so every request falls through to the untagged translation regardless of what you pass.

Response

Not the list envelope: data is a single object holding three arrays, and meta carries only limit, feedTimestamp and loadedAt — no count, total or offset, because there are three collections and one meta.

GET /api/routes/9011001087500000?limit=1
curl "$API_BASE/api/routes/9011001087500000?limit=1"
200 · application/json
{
  "data": {
    "routeId": "9011001087500000",
    "counts": {
      "vehicles": 5,
      "tripUpdates": 5,
      "alerts": 2
    },
    "vehicles": [
      {
        "id": "9031001001501640",
        "vehicle": {
          "id": "9031001001501640"
        },
        "trip": {
          "tripId": "14010000703221328",
          "routeId": "9011001087500000",
          "directionId": 0,
          "scheduleRelationship": "SCHEDULED",
          "routeIdSource": "static",
          "route": {
            "routeId": "9011001087500000",
            "agencyId": "505000000000000001",
            "shortName": "875",
            "type": 700
          }
        },
        "position": {
          "latitude": 59.249111,
          "longitude": 18.174082,
          "bearing": 315,
          "speed": 23.299999
        },
        "currentStatus": "IN_TRANSIT_TO",
        "timestamp": {
          "epoch": 1777288957,
          "iso": "2026-04-27T11:22:37.000Z"
        }
      }
    ],
    "tripUpdates": [
      {
        "id": "14010000710000247",
        "trip": {
          "tripId": "14010000710000247",
          "routeId": "9011001087500000",
          "directionId": 1,
          "startDate": "20260427",
          "scheduleRelationship": "SCHEDULED",
          "routeIdSource": "static",
          "route": {
            "routeId": "9011001087500000",
            "agencyId": "505000000000000001",
            "shortName": "875",
            "type": 700
          }
        },
        "vehicle": {
          "id": "9031001001501595"
        },
        "timestamp": {
          "epoch": 1777288916,
          "iso": "2026-04-27T11:21:56.000Z"
        },
        "stopTimeUpdates": [
          {
            "stopSequence": 6,
            "stopId": "9022050000778004",
            "stop": {
              "stopId": "9022050000778004",
              "name": "Tyresö centrum",
              "latitude": 59.245505,
              "longitude": 18.230545,
              "locationType": 0,
              "parentStation": "778",
              "platformCode": "G"
            },
            "arrival": {
              "delay": 9,
              "time": {
                "epoch": 1777288329,
                "iso": "2026-04-27T11:12:09.000Z"
              },
              "uncertainty": 0
            },
            "departure": {
              "delay": 100,
              "time": {
                "epoch": 1777288420,
                "iso": "2026-04-27T11:13:40.000Z"
              },
              "uncertainty": 0
            },
            "scheduleRelationship": "SCHEDULED"
          },
          {
            "stopSequence": 7,
            "stopId": "9022050010412001",
            "stop": {
              "stopId": "9022050010412001",
              "name": "Sikvägen",
              "latitude": 59.247937,
              "longitude": 18.231077,
              "locationType": 0,
              "parentStation": "10412",
              "platformCode": "1"
            },
            "arrival": {
              "delay": 76,
              "time": {
                "epoch": 1777288460,
                "iso": "2026-04-27T11:14:20.000Z"
              },
              "uncertainty": 0
            },
            "departure": {
              "delay": 128,
              "time": {
                "epoch": 1777288512,
                "iso": "2026-04-27T11:15:12.000Z"
              },
              "uncertainty": 0
            },
            "scheduleRelationship": "SCHEDULED"
          }
        ]
      }
    ],
    "alerts": [
      {
        "id": "sl-service-alerts.pb:14050001915652028",
        "activePeriods": [
          {
            "start": {
              "epoch": 1773631140,
              "iso": "2026-03-16T03:19:00.000Z"
            },
            "end": {
              "epoch": 1798729920,
              "iso": "2026-12-31T15:12:00.000Z"
            }
          }
        ],
        "informedEntities": [
          {
            "routeId": "9011001087300000",
            "route": {
              "routeId": "9011001087300000",
              "agencyId": "505000000000000001",
              "shortName": "873",
              "type": 700
            },
            "stopId": "9022050000778008",
            "stop": {
              "stopId": "9022050000778008",
              "name": "Tyresö centrum",
              "latitude": 59.243172,
              "longitude": 18.226977,
              "locationType": 0,
              "parentStation": "778",
              "platformCode": "H"
            }
          },
          {
            "routeId": "9011001087500000",
            "route": {
              "routeId": "9011001087500000",
              "agencyId": "505000000000000001",
              "shortName": "875",
              "type": 700
            },
            "stopId": "9022050000778008",
            "stop": {
              "stopId": "9022050000778008",
              "name": "Tyresö centrum",
              "latitude": 59.243172,
              "longitude": 18.226977,
              "locationType": 0,
              "parentStation": "778",
              "platformCode": "H"
            }
          }
        ],
        "cause": "CONSTRUCTION",
        "effect": "UNKNOWN_EFFECT",
        "headerText": {
          "text": "Nytt hållplatsläge",
          "translations": [
            {
              "text": "Nytt hållplatsläge"
            }
          ]
        },
        "descriptionText": {
          "text": "Linje 873, 875 och 890 från hållplatsläge H flyttas till Bollmoravägen södra. Se anslag.",
          "translations": [
            {
              "text": "Linje 873, 875 och 890 från hållplatsläge H flyttas till Bollmoravägen södra. Se anslag."
            }
          ]
        },
        "isActive": true
      }
    ]
  },
  "meta": {
    "limit": 1,
    "feedTimestamp": "2026-04-27T11:22:38.000Z",
    "loadedAt": "2026-08-07T12:01:42.748Z"
  }
}
Arrays trimmed for readability — $.data.tripUpdates[0].stopTimeUpdates: showing 2 of 10; $.data.alerts[0].informedEntities: showing 2 of 3.

Errors

404
{ "error": "request_failed", … }

That route id appears nowhere in the feed.