List stops
Every stop id mentioned anywhere in the feed, named, with counts.
/api/stops Union of the stops named by trip updates, alerts and vehicles — a mix of platform-level and station-level ids, because the two SL feeds reference stops at different levels. parentStation tells you which you are looking at: present means a platform, absent means a station (or an unmatched id).
Counts are per-id, so a station's alert count and its platforms' trip-update counts sit on different rows.
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/stops?limit=3" {
"data": [
{
"stopId": "10316",
"name": "Duvbo torg",
"latitude": 59.370423,
"longitude": 17.952471,
"tripUpdates": 0,
"vehicles": 0,
"alerts": 1
},
{
"stopId": "10317",
"name": "Lötsjön",
"latitude": 59.372476,
"longitude": 17.963862,
"tripUpdates": 0,
"vehicles": 0,
"alerts": 1
},
{
"stopId": "10364",
"name": "Överjärna kyrka",
"latitude": 59.08912,
"longitude": 17.565711,
"tripUpdates": 0,
"vehicles": 0,
"alerts": 1
}
],
"meta": {
"count": 3,
"total": 7279,
"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.