Realtime/SL

List trip updates

Predicted arrivals and departures per trip, freshest first.

GET /api/trips

Each trip carries its stopTimeUpdates — the per-stop predictions. These are the heaviest objects in the API; a single long trip can carry over a hundred. Use limit deliberately.

delayStatus is derived from the trip-level delay with a 60-second tolerance either side: under −60 is early, over +60 is late, between is on_time. A trip that reports no delay gets no delayStatus and never matches a delay filter — absent is not on-time.

Try it

Runs from your browser against the API in .

Query

GET
curl equivalent
 

Parameters

Query

ParameterTypeDefaultDescription
routeIdstring

GTFS route id, served from an index.

stopIdstring

Keeps trips that call at this stop. Platform-level ids, not station ids — trip updates reference platforms. Combined with routeId, both must hold.

scheduleRelationshipenum

How the trip relates to the timetable.

SCHEDULEDADDEDUNSCHEDULEDCANCELEDREPLACEMENTDUPLICATEDDELETED

In this capture: 933 trips are SCHEDULED and exactly 1 is CANCELED. The other five values match nothing.

delayStatusenum

Bucketed trip-level delay.

earlyon_timelate

Matches nothing in this capture. Not one of the 934 trip updates carries a trip-level delay, so none has a delayStatus. Delays are present, but on the individual stop time events — read stopTimeUpdates[].arrival.delay instead.

minDelaynumber

Trip-level delay at or above this many seconds. Negative is early.

Matches nothing in this capture — no trip carries a trip-level delay.

maxDelaynumber

Trip-level delay at or below this many seconds.

Matches nothing in this capture — no trip carries a trip-level delay.

limitinteger50

Page size, 1–1000. Values outside that range are a 400 rather than a silent clamp.

offsetinteger0

Rows to skip. Compare against meta.total to know when you have them all.

Response

The standard list envelope: data plus meta with count, total, limit, offset, feedTimestamp and loadedAt.

GET /api/trips?limit=2
curl "$API_BASE/api/trips?limit=2"
200 · application/json
{
  "data": [
    {
      "id": "14010000704326510",
      "trip": {
        "tripId": "14010000704326510",
        "routeId": "9011001017600000",
        "directionId": 1,
        "startDate": "20260427",
        "scheduleRelationship": "SCHEDULED",
        "routeIdSource": "static",
        "route": {
          "routeId": "9011001017600000",
          "agencyId": "505000000000000001",
          "shortName": "176",
          "type": 700
        }
      },
      "vehicle": {
        "id": "9031001001507918"
      },
      "timestamp": {
        "epoch": 1777288948,
        "iso": "2026-04-27T11:22:28.000Z"
      },
      "stopTimeUpdates": [
        {
          "stopSequence": 4,
          "stopId": "9022050009232002",
          "stop": {
            "stopId": "9022050009232002",
            "name": "Stenhamra centrum",
            "latitude": 59.334597,
            "longitude": 17.686531,
            "locationType": 0,
            "parentStation": "9232",
            "platformCode": "2"
          },
          "arrival": {
            "delay": 260,
            "time": {
              "epoch": 1777288368,
              "iso": "2026-04-27T11:12:48.000Z"
            },
            "uncertainty": 0
          },
          "departure": {
            "delay": 276,
            "time": {
              "epoch": 1777288384,
              "iso": "2026-04-27T11:13:04.000Z"
            },
            "uncertainty": 0
          },
          "scheduleRelationship": "SCHEDULED"
        },
        {
          "stopSequence": 5,
          "stopId": "9022050006694002",
          "stop": {
            "stopId": "9022050006694002",
            "name": "Eknäs",
            "latitude": 59.33136,
            "longitude": 17.700061,
            "locationType": 0,
            "parentStation": "6694",
            "platformCode": "2"
          },
          "arrival": {
            "delay": 286,
            "time": {
              "epoch": 1777288482,
              "iso": "2026-04-27T11:14:42.000Z"
            },
            "uncertainty": 0
          },
          "departure": {
            "delay": 286,
            "time": {
              "epoch": 1777288482,
              "iso": "2026-04-27T11:14:42.000Z"
            },
            "uncertainty": 0
          },
          "scheduleRelationship": "SCHEDULED"
        },
        {
          "stopSequence": 6,
          "stopId": "9022050006693002",
          "stop": {
            "stopId": "9022050006693002",
            "name": "Västeräng",
            "latitude": 59.328329,
            "longitude": 17.710032,
            "locationType": 0,
            "parentStation": "6693",
            "platformCode": "2"
          },
          "arrival": {
            "delay": 268,
            "time": {
              "epoch": 1777288535,
              "iso": "2026-04-27T11:15:35.000Z"
            },
            "uncertainty": 0
          },
          "departure": {
            "delay": 268,
            "time": {
              "epoch": 1777288535,
              "iso": "2026-04-27T11:15:35.000Z"
            },
            "uncertainty": 0
          },
          "scheduleRelationship": "SCHEDULED"
        }
      ]
    },
    {
      "id": "14010000710626426",
      "trip": {
        "tripId": "14010000710626426",
        "routeId": "9011001064300000",
        "directionId": 0,
        "startDate": "20260427",
        "scheduleRelationship": "SCHEDULED",
        "routeIdSource": "static",
        "route": {
          "routeId": "9011001064300000",
          "agencyId": "505000000000000001",
          "shortName": "643",
          "type": 700
        }
      },
      "vehicle": {
        "id": "9031001004505139"
      },
      "timestamp": {
        "epoch": 1777288948,
        "iso": "2026-04-27T11:22:28.000Z"
      },
      "stopTimeUpdates": [
        {
          "stopSequence": 20,
          "stopId": "9022050007431001",
          "stop": {
            "stopId": "9022050007431001",
            "name": "Koabacken",
            "latitude": 60.035368,
            "longitude": 18.763211,
            "locationType": 0,
            "parentStation": "7431",
            "platformCode": "1"
          },
          "arrival": {
            "delay": 47,
            "time": {
              "epoch": 1777288409,
              "iso": "2026-04-27T11:13:29.000Z"
            },
            "uncertainty": 0
          },
          "departure": {
            "delay": 47,
            "time": {
              "epoch": 1777288409,
              "iso": "2026-04-27T11:13:29.000Z"
            },
            "uncertainty": 0
          },
          "scheduleRelationship": "SCHEDULED"
        },
        {
          "stopSequence": 21,
          "stopId": "9022050007440001",
          "stop": {
            "stopId": "9022050007440001",
            "name": "Söderängens vägskäl",
            "latitude": 60.03744,
            "longitude": 18.765344,
            "locationType": 0,
            "parentStation": "7440",
            "platformCode": "1"
          },
          "arrival": {
            "delay": 56,
            "time": {
              "epoch": 1777288441,
              "iso": "2026-04-27T11:14:01.000Z"
            },
            "uncertainty": 0
          },
          "departure": {
            "delay": 56,
            "time": {
              "epoch": 1777288441,
              "iso": "2026-04-27T11:14:01.000Z"
            },
            "uncertainty": 0
          },
          "scheduleRelationship": "SCHEDULED"
        },
        {
          "stopSequence": 22,
          "stopId": "9022050007432001",
          "stop": {
            "stopId": "9022050007432001",
            "name": "Barnabo",
            "latitude": 60.039357,
            "longitude": 18.766589,
            "locationType": 0,
            "parentStation": "7432",
            "platformCode": "1"
          },
          "arrival": {
            "delay": 63,
            "time": {
              "epoch": 1777288466,
              "iso": "2026-04-27T11:14:26.000Z"
            },
            "uncertainty": 0
          },
          "departure": {
            "delay": 63,
            "time": {
              "epoch": 1777288466,
              "iso": "2026-04-27T11:14:26.000Z"
            },
            "uncertainty": 0
          },
          "scheduleRelationship": "SCHEDULED"
        }
      ]
    }
  ],
  "meta": {
    "count": 2,
    "total": 934,
    "limit": 2,
    "offset": 0,
    "feedTimestamp": "2026-04-27T11:22:38.000Z",
    "loadedAt": "2026-08-07T12:01:42.748Z"
  }
}
Arrays trimmed for readability — $.data[0].stopTimeUpdates: showing 3 of 40; $.data[1].stopTimeUpdates: showing 3 of 29.

Errors

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

`scheduleRelationship` or `delayStatus` got an unknown value, or a delay bound was not a number.