List routes
Routes present in the feed, named, with per-route entity counts.
/api/routes Routes are not entities in GTFS-realtime — this list is derived from the route_id values appearing on vehicles, trip updates and alert selectors. So it is the routes currently in the feed, not SL's route catalogue: 369 here, against 7,880 in the static archive.
Names come from the static join and are omitted, not guessed, when there is no match.
Try it
Runs from your browser against the API in .
Query
Run this in your terminal
curl equivalent
Parameters
Query
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 50 | Page size, 1–1000. Values outside that range are a 400 rather than a silent clamp. |
offset | integer | 0 | Rows to skip. Compare against |
Response
The standard list envelope: data plus meta with count, total, limit, offset, feedTimestamp and loadedAt.
curl "$API_BASE/api/routes?limit=3" {
"data": [
{
"routeId": "9011001000100000",
"shortName": "1",
"type": 700,
"agencyId": "505000000000000001",
"vehicles": 11,
"tripUpdates": 11,
"alerts": 0
},
{
"routeId": "9011001000200000",
"shortName": "2",
"type": 700,
"agencyId": "505000000000000001",
"vehicles": 9,
"tripUpdates": 8,
"alerts": 0
},
{
"routeId": "9011001000300000",
"shortName": "3",
"type": 700,
"agencyId": "505000000000000001",
"vehicles": 11,
"tripUpdates": 10,
"alerts": 0
}
],
"meta": {
"count": 3,
"total": 369,
"limit": 3,
"offset": 0,
"feedTimestamp": "2026-04-27T11:22:38.000Z",
"loadedAt": "2026-08-07T12:01:42.748Z"
}
} Errors
{ "error": "request_failed", … } `limit` or `offset` out of range.