Where the data comes from
Sources
All the data comes from the public APIs of both cities. The service guesses nothing and fills in nothing with estimates of its own — it shows what the operator publishes, and marks whatever cannot be treated as a measurement.
| data | city | notes |
|---|---|---|
| departures from stops | Gdańsk, Gdynia | the basis of the board |
| vehicle GPS positions | Gdańsk only | Gdynia publishes no equivalent |
| fleet database (equipment) | Gdańsk only | air conditioning, low floor, ramp, bike racks |
| timetables and routes (GTFS) | Gdańsk, Gdynia | this is how we know where a line starts and ends |
route geometry on the map (GTFS shapes.txt) | Gdańsk, Gdynia | the road centreline as drawn by the operator |
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.
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:
- Vehicle → city. The timestamp on a position is already a few seconds older than
the moment it is published.
- 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.
- 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.
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:
- Vehicle occupancy — neither the Gdańsk nor the Gdynia data says how many people
are on board. Checked periodically; unchanged so far.
- Driver number — not published. The
vehicleServicefield is a duty number, that
is, an identifier for a transport assignment, not for a person.
- GPS positions of Gdynia vehicles — five address variants tested, all returning
“not found”.
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.