Stop alerts
Alerts affecting a stop, with the same station/platform expansion.
/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
Run this in your terminal
curl equivalent
Parameters
Path
| Parameter | Type | Default | Description |
|---|---|---|---|
stopIdrequiredpath | string | — | Station id or platform id. |
Query
| Parameter | Type | Default | Description |
|---|---|---|---|
at | timestamp | now | The instant to evaluate |
lang | string | — | Language tag used to pick among an alert's translations. Matches an exact tag 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. |
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
Envelope plus stopId, stop and includedStopIds, as with arrivals.
curl "$API_BASE/api/stops/778/alerts?at=2026-04-27T11:22:38Z&limit=1" {
"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"
]
} Errors
{ "error": "request_failed", … } `at` was unparseable, or `limit`/`offset` out of range.