Where the data comes from

Sources

All data comes from public APIs and official GTFS files published by transport authorities. The service guesses nothing and fills in nothing with estimates of its own — it shows what the source publishes and marks whatever cannot be treated as a measurement.

datacitynotes
departures from stopsGdańsk, Gdyniathe basis of the board
shared ZTM/ZKM stop polesGdańsk, Gdyniathe official mapping combines both feeds into one board
vehicle GPS positionsGdańsk, GdyniaGdańsk reports speed and schedule deviation; Gdynia (GTFS-RT) only location — we derive speed and heading ourselves, see below
fleet database (equipment)Gdańsk onlyair conditioning, low floor, ramp, bike racks
timetables and routes (GTFS)Gdańsk, Gdyniathis is how we know where a line starts and ends
route geometry on the map (GTFS shapes.txt)Gdańsk, Gdyniathe road centreline as drawn by the operator
railway GTFS timetableSKM Tricityscheduled train departures
railway delays and platformsPKP PLK (open railway data)SKM, POLREGIO and PKP Intercity; delay in minutes, platform, cancelled passage
bus GTFS timetableSłupsk, Tczewscheduled departures, without an open real-time API

Scheduled timetable sources are PKP SKM in Tricity, the Municipal Infrastructure Authority in Słupsk, and Tczew City Hall (Tczew Public Transport). These boards are always marked “scheduled”, so a timetable is never presented as a live measurement.

Railway boards KEEP the “scheduled” marking even though we have been adding PKP PLK data to them since 9 September 2026: the timetable is still the basis, and movement information arrives where it exists. The three states mean different things and must not be conflated: “on time” means the carrier confirmed the passage with no deviation, “+N min” is a measured delay, and no annotation means we do not know — usually because the train has not departed yet. For a train already running we show the last measurement from its route (the tooltip names the station), not a forecast for your station — because these data contain no forecast.

How often

Departures for the stops you are looking at refresh every few seconds. Separately from that, the service observes every stop in both cities, so that the statistics do not depend on what somebody happens to be looking at — otherwise a line's history would begin the moment the first user opened it.

The stop catalogue and the official ZTM/ZKM shared-pole mapping are checked hourly. A shared pole is displayed once and its board combines departures from both authorities. A temporary mapping-file failure does not split pairs that have already been recognised.

The SKM GTFS is downloaded daily. The official Słupsk and Tczew pages change the ZIP address when a timetable changes, so every 12 hours the service reads each “Open data” page again, discovers the current file, and rebuilds the index. A failed update retains the last valid timetable and is retried with increasing backoff.

How fresh the vehicle position on the map is

Under the vehicle map you will see “measured N s ago”, and that number almost never drops to zero. This is not a fault — it is made up of three stretches, and the first two are not on our side:

  1. Vehicle → city. The timestamp on a position is already a few seconds older than

the moment it is published.

  1. Published every ~22 s. The city puts out a new snapshot roughly every twenty-two

seconds. Between publications a newer position simply does not exist — nobody has it.

  1. Our fetch and display. This is the stretch we try to keep as short as possible:

instead of polling at a fixed rhythm and landing on a random phase of the city's cycle, we schedule each fetch for just after the expected publication. Measured against the live source: on arrival a snapshot is 6 s old instead of 18 s (median), with the same number of requests.

In practice this means the number under the map circles roughly between 11 and 33 seconds and grows by a second every second until a new snapshot arrives. We show it plainly rather than rounding it to “just now”, because for a vehicle doing 50 km/h twenty seconds is a quarter of a kilometre — and it is better that this is visible.

Vehicle speed and heading — measurement or estimate

It depends on the city, so we label it plainly.

Gdańsk publishes speed, heading and schedule deviation in its feed. We show those values as they arrive — that is a measurement from the vehicle.

Gdynia publishes location only in GTFS-RT: neither speed nor heading (verified: not one of nearly two hundred records carries those fields). So we compute them from two consecutive positions of the same vehicle — distance travelled over elapsed time. That is an estimate, which is why we print it with a tilde: "~12 km/h". The tilde means "this is what the arithmetic gives", not "this is what the dashboard shows".

Two things worth knowing about that estimate:

~60 s (Gdańsk every ~22 s). A bus that waited at a stop and a red light and then drove 300 m comes out slower than its speed in motion. The median for moving Gdynia vehicles is about 20 km/h, which is commercial speed rather than instantaneous speed.

vehicle has not moved, we show "stopped" — without a tilde, because that is an observation. When the feed repeats the same snapshot (which happens regularly, as we poll more often than it publishes), we keep the last result instead of announcing that the vehicle has halted.

The heading arrow on a Gdynia marker comes from the same arithmetic, so a vehicle gets one only after its second measurement — on the first marker after it appears on the map there is no arrow.

Where the route line on the map comes from

Route geometry is drawn from both cities' shapes.txt — the road centreline as drawn by the operator, not a track derived from vehicle GPS. The difference matters: GPS readings arrive every ~22 s, which at typical speeds puts points a median of 88 m apart, and up to 480 m on fast stretches. A route rebuilt from those points would cut corners exactly where the corner is.

The feed describes every variant of a service separately: a short turn, a night diversion, a run to the depot. Gdańsk has 1353 variants across 97 lines, Gdynia 3101 across 88. We show the longest run in each direction, because it contains the others as its own segments — the question "where does this line go" is about the corridor, not about a single journey.

We draw one line at a time. A map view of 1.8 × 1.2 km in central Gdańsk is crossed by 657 route variants from 49 lines, over 45 thousand points in total. Drawn together they are not a map but a smudge.

What is NOT in the data

A few things checked and confirmed as unavailable:

are on board. Checked periodically; unchanged so far.

is, an identifier for a transport assignment, not for a person.

(vehiclePositions). There is no counterpart with delays (tripUpdates, alerts) at the analogous addresses, so we show no schedule deviation for Gdynia vehicles. The positions themselves have been on the map since 9 September 2026.

analytics database since 9 September 2026, but they cannot be tied to a specific departure: departure boards identify a vehicle by an id from the transit API, while the GTFS-RT feed uses the fleet number painted on the bus. Those are two different namespaces, so Gdynia runs stay in the "outside GPS" class — the exception being Gdynia stops served by a Gdańsk vehicle (line 171, for instance). The statistics say so explicitly in their own caveats.

is our own calculation rather than a measurement, and that feed reports neither signal quality nor a trip identifier. One shared number would average a measurement with an estimate.

Equipment icons

The icons next to a vehicle come from the fleet database and say what the vehicle is fitted with — not whether a given thing is switched on right now. An air-conditioning icon does not mean the air conditioning is running; it means the vehicle has it. That distinction is also spelled out in the tooltip on every icon.