Realtime/SL

Stop alerts

Alerts affecting a stop, with the same station/platform expansion.

GET /api/stops/:stopId/alerts

Same id handling as arrivals: a station id also covers its platforms. Useful in the other direction too — alerts name stations, so passing a platform id finds the alerts filed against the platform itself, not its parent station.

Try it

Runs from your browser against the API in .

Path

Query

GET
curl equivalent
 

Parameters

Path

ParameterTypeDefaultDescription
stopIdrequiredpathstring

Station id or platform id.

Query

ParameterTypeDefaultDescription
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.

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

Envelope plus stopId, stop and includedStopIds, as with arrivals.

GET /api/stops/778/alerts?at=2026-04-27T11:22:38Z&limit=1
curl "$API_BASE/api/stops/778/alerts?at=2026-04-27T11:22:38Z&limit=1"
200 · application/json
{
  "data": [
    {
      "id": "sl-service-alerts.pb:14050001880470671",
      "activePeriods": [
        {
          "start": {
            "epoch": 1765533471,
            "iso": "2025-12-12T09:57:51.000Z"
          },
          "end": {
            "epoch": 1777586340,
            "iso": "2026-04-30T21:59:00.000Z"
          }
        }
      ],
      "informedEntities": [
        {
          "routeId": "9011001081600000",
          "route": {
            "routeId": "9011001081600000",
            "agencyId": "505000000000000001",
            "shortName": "816",
            "type": 700
          },
          "stopId": "9022050000778004",
          "stop": {
            "stopId": "9022050000778004",
            "name": "Tyresö centrum",
            "latitude": 59.245505,
            "longitude": 18.230545,
            "locationType": 0,
            "parentStation": "778",
            "platformCode": "G"
          }
        },
        {
          "routeId": "9011001081600000",
          "route": {
            "routeId": "9011001081600000",
            "agencyId": "505000000000000001",
            "shortName": "816",
            "type": 700
          }
        },
        {
          "routeId": "9011001089000000",
          "route": {
            "routeId": "9011001089000000",
            "agencyId": "505000000000000001",
            "shortName": "890",
            "type": 700
          },
          "stopId": "9022050010004004",
          "stop": {
            "stopId": "9022050010004004",
            "name": "Centralen",
            "latitude": 59.330225,
            "longitude": 18.054054,
            "locationType": 0,
            "parentStation": "10004",
            "platformCode": "U"
          }
        },
        {
          "routeId": "9011001089000000",
          "route": {
            "routeId": "9011001089000000",
            "agencyId": "505000000000000001",
            "shortName": "890",
            "type": 700
          },
          "stopId": "9022050012178020",
          "stop": {
            "stopId": "9022050012178020",
            "name": "Gullmarsplan",
            "latitude": 59.297832,
            "longitude": 18.08142,
            "locationType": 0,
            "parentStation": "12178",
            "platformCode": "N"
          }
        }
      ],
      "cause": "CONSTRUCTION",
      "effect": "UNKNOWN_EFFECT",
      "headerText": {
        "text": "Indragen hållplats",
        "translations": [
          {
            "text": "Indragen hållplats"
          }
        ]
      },
      "descriptionText": {
        "text": "Busslinje 816 och 890 stannar inte vid Horisontvägen  på grund av vägarbete. Detta beräknas pågå till och med 2026-04-30.",
        "translations": [
          {
            "text": "Busslinje 816 och 890 stannar inte vid Horisontvägen  på grund av vägarbete. Detta beräknas pågå till och med 2026-04-30."
          }
        ]
      },
      "isActive": true
    }
  ],
  "meta": {
    "count": 1,
    "total": 11,
    "limit": 1,
    "offset": 0,
    "feedTimestamp": "2026-04-27T11:22:38.000Z",
    "loadedAt": "2026-08-07T12:01:42.748Z"
  },
  "stopId": "778",
  "stop": {
    "stopId": "778",
    "name": "Tyresö centrum",
    "latitude": 59.244143,
    "longitude": 18.229239,
    "locationType": 1
  },
  "includedStopIds": [
    "778",
    "9022050000778001",
    "9022050000778002",
    "9022050000778003"
  ]
}
Arrays trimmed for readability — $.data[0].informedEntities: showing 4 of 40; $.includedStopIds: showing 4 of 12.

Errors

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

`at` was unparseable, or `limit`/`offset` out of range.