An independent service

This website is independently operated and is not affiliated with, endorsed by, or operated by Brighton & Hove Buses, Metrobus, the Department for Transport or the Bus Open Data Service. For official travel advice, service updates, tickets and customer support, please use the relevant bus operator’s website.

Where the data comes from

The main source is the Department for Transport’s Bus Open Data Service, usually shortened to BODS.

BODS makes timetable, route, fare and vehicle-location information published by bus operators available as open data. We currently use the timetable and vehicle-location parts of that service.

1

The operator publishes data

Operators or their technology suppliers publish schedules and automatic vehicle-location updates.

2

BODS distributes it

The Department for Transport makes the information available through open datasets and live feeds.

3

We process it

Our server imports the schedules, matches live vehicles to trips and produces the map and departure boards.

Timetables, routes and stops

Published timetable data describes routes, stops, trips, service calendars, stop sequences and scheduled departure times. We import this into local GTFS-style tables used by the website.

This gives us the planned order of stops for each individual trip, rather than assuming that every journey on a route follows exactly the same pattern. This matters because a route may have:

Route lines shown on the map are generated from the published route shapes. Where a route has several legitimate variants, the map can display more than one shape.

Live vehicle positions

Vehicle positions are obtained from the BODS SIRI-VM feed. SIRI-VM is a standard format for sharing automatic vehicle-location information between transport systems.

A live record can contain information such as:

A position is the latest observation received from the vehicle. It is not necessarily its exact location at the moment the map is viewed. Feed, network and processing delays can all make a marker appear behind the real bus.

How we match a vehicle to its journey

A location alone is not enough to identify a journey. Two buses may be close together, travelling in opposite directions, or serving different branches of the same route.

We therefore compare several pieces of information, including:

  1. An exact published journey reference, when it corresponds to an imported timetable trip.
  2. The route number and the ordered origin and destination stops.
  3. Whether the timetable service is active on the relevant date.
  4. The vehicle’s location compared with stops on the candidate trip.
  5. The timetable time at nearby stops compared with the time of the vehicle observation.
  6. The trip direction and ordered progress along the published route shape.

If the evidence is not strong enough, we prefer not to claim that a vehicle serves a particular stop. This may mean that a genuine bus is temporarily absent rather than shown on the wrong side of the road or against the wrong journey.

Non-public and special journeys

Live feeds can occasionally contain school-only, positioning or otherwise non-public journeys using a familiar route number. Confirmed examples can be excluded using their exact route, origin and destination references. We do not broadly hide every journey that mentions a school, because many ordinary public services legitimately serve schools and colleges.

How departure predictions are calculated

The live feed supplies vehicle positions, but it does not always provide a ready-made prediction for every stop. Our server therefore combines the live position with the matched timetable trip.

  1. The vehicle is matched to an individual scheduled trip.
  2. Its current progress is estimated using nearby stops and, where available, the route shape.
  3. The difference between its observed progress and its scheduled progress is calculated.
  4. That difference is applied to the remaining scheduled intervals between stops.
  5. Stops already confirmed as passed are removed.

Predictions are recalculated regularly and cached briefly. This lets many passengers use the site without every page view separately downloading and processing the complete live feed.

The displayed time is therefore our best estimate based on open timetable and vehicle-location data. It is not a guarantee that a bus will arrive at that exact time.

What “Live” and “Scheduled” mean

Live

We have matched a recent vehicle observation to this particular timetable journey and calculated a prediction from its progress.

Scheduled

The time comes from the published timetable because no sufficiently reliable live vehicle match is currently available.

“Scheduled” does not necessarily mean that the bus is cancelled or not running. It only means that this website cannot currently attach a reliable live observation to that departure.

How the map works

The browser uses MapLibre to display route lines, stops and vehicle markers over OpenStreetMap-based mapping.

Static information—such as stops and route shapes—is generated periodically and served as GeoJSON. Frequently changing vehicle and departure information is prepared by a background task and stored in a short-lived cache.

Between live observations, a marker may be moved along the matched route shape to make movement easier to follow. We limit how far a position can be corrected. If an observation is too far away from the expected route, the site avoids drawing an invented straight line across buildings or unrelated roads.

When a bus marker is selected, its popup uses the matched trip’s remaining ordered stops. Its destination normally comes from the final stop of that specific trip, which preserves branches and short workings. A curated route-level destination is used only when the trip itself lacks usable terminal information.

Accuracy and limitations

Open transport data is extremely useful, but it is not perfect. Information may occasionally be late, incomplete, contradictory or attached to the wrong journey.

Examples include:

Please allow extra time for important journeys and check official operator information for disruptions, cancellations, accessibility, fares and ticket validity.

Technical summary

Information Source or process
Timetables Operator-published open timetable data imported locally
Vehicle locations BODS SIRI-VM automatic vehicle-location feed
Stops and stop order Imported timetable and stop-time records
Route lines Published route shapes converted into GeoJSON
Live predictions Calculated by this website from vehicle progress and timetable intervals
Scheduled predictions Future calls from the active timetable calendar
Destinations The matched trip’s final stop, with curated fallback naming
Map rendering MapLibre with OpenStreetMap-based mapping
Performance Background processing, static GeoJSON and short-lived Laravel caches

Further information