Pop app
The Pop app is a mobile app focused on providing real-time information for the Tyne and Wear Metro. It is available on the Apple App Store and the Google Play Store. It does not require an account to use but does require agreeing to an End User License Agreement. It is developed by Nebula Labs[1] on behalf of Nexus under the code-name "Nexus Next Generation".
Features
[edit | edit source]- View Metro service status updates[2]
- Subscribe to push notifications for service status updates[1][2]
- View the real-time locations of passenger trains via a map[3][4]
- Check the next passenger trains due at a station[1][3]
- Plan a Metro journey[1][2]
- Connect to Metro Connect[5]
- Find ways to contact Nexus[4][6]
- Check the occupancy of some car parks[1][4]
- Check the data on a Pop card (previously a separate app. Only on NFC-supported devices)
- Store your Pop card in your Google Wallet (only on Android)[2]
- Buy a One Week Metro Season Ticket (only on Android)[2][4]
Technical details
[edit | edit source]Programming languages and frameworks
[edit | edit source]The Pop app is developed using Swift (for the iOS app), Kotlin (for the Android app), Django (a web framework for Python, used for the APIs)[1] and Vue.js (a web framework for Javascript, used for the map).
Map
[edit | edit source]The Pop app map is an embedded web page meaning you can access it without using the Pop app, such as from a desktop. The realtime data shown on the map updates periodically (every 10 seconds at the time of writing).
APIs
[edit | edit source]The Pop app uses a number of purpose-built APIs, which are the servers your device connects to when refreshing realtime data or when purchasing tickets.
This wiki does not act as documentation for any part of the Pop app or its APIs. The purpose of this section is to provide insight into how the app works, which is necessary for understanding some of the technical limitations of the app.
Primary API
[edit | edit source]The primary API is responsible for:
- providing car park data, which is in turn provided by a "custom local government API"[1]
- handling purchases of the One Week Metro Season Ticket via Stripe
Realtime API
[edit | edit source]The realtime API can be broken down further into "the geo API" and "the times API". The creator of this wiki hosts a proxy for the realtime API which adds a number of features on top of the underlying API, such as data collation, streaming, a history and timetables. The realtime API restarts at 3AM every day.
The times API is the most well-known of Nexus' APIs and is what provides the "Personal PID" (the due times at the bottom of the "Track your Metro" page of the Pop app). Nexus hosts a web app based on the realtime API which, as well as showing the map, also allows you to directly query the times API for individual platforms.
The geo API is newer and is what provides the train statuses and service statuses shown in the map. It requires a JWT to access, but there are a couple endpoints which provide one without requiring any other authorization.
Journey plan API
[edit | edit source]The journey plan API is provided by Nebula Labs. The domain name dedicated to it starts with "ken", which is likely a reference to Metro Ken, a mascot used to inform customers about modernization work. The API is responsible for:
- the journey planner, using GTFS technology[1]
- status updates for car parks (this is the note or warning shown alongside each car park)
- providing Metro service status updates
- providing the available categories for push notifications
- subscribing to push notifications
Realtime data quirks
[edit | edit source]The volatile nature of the realtime API means that it has a lot of technical quirks which cause strange behaviour in the Pop app. A number of these known quirks are listed in the table below.
| Symptom | Cause | Times API affected | Geo API affected |
|---|---|---|---|
| Trains get stuck departing a station when they enter a siding or depot. Other trains appear to overtake these trains. A number of trains still appear to be active in the middle of the night, despite being in the depot. | The realtime API does not track trains entering sidings or depots. These trains will appear stuck having departed their last station. Usually, these trains will disappear after a few minutes. However, other times they will stay there until they leave the siding/depot, or until the API is restarted. | Yes | Yes |
| Green line trains with a destination inside the shared stretch (e.g.: South Gosforth) will show in the map but will not show as due at any stations in the shared stretch. | The times API tries to predict which line a train is running on based on the selected station and the train's destination. This line color used to be shown alongside each time in the Pop app. The Pop app no longer uses this data at all, but it still tried to parse it. The Pop app only expected either "YELLOW" or "GREEN" as the values. However, the API can't figure out the line color when both the stations it is referencing are in the shared stretch, so will report a line of "UNKNOWN". When the Pop app tries to parse this, it encounters an error. | Yes | No |
| Green line trains with a destination inside the shared stretch but which haven't reached the shared stretch yet (e.g.: at South Hylton headed to South Gosforth) will be completely missing from the map until entering the shared stretch and will disappear briefly from the due times when entering the shared stretch. | Unknown, but could be related to the line color issue described above. | No | Yes |
| Green line trains with a destination inside the shared stretch will disappear from the due times when approaching Regent Centre or Fellgate and reappear when approaching South Gosforth or Pelaw. | Yes | No | |
| Trains will disappear from the map while at their termini, or whenever the driver leaves the cab, even if the train is still in service and is showing in the due times. | The geo API stops tracking trains if the driver is keyed out of them for longer than a couple minutes, which they often do at termini or when responding to an emergency brake activation. | No | Yes |
| Trains running off-timetable will report completely inaccurate due times. Trains show as "Due" at stations they are nowhere near. | The times API seems to trust the timetables more than realtime data. Nexus often disables the realtime API entirely during major disruption due to the inaccuracy of the times API. The geo API is generally resistant to disruption, but Nexus is unable to disable the times API without also disabling the geo API. | Yes | Indirectly |
| Non-passenger trains showing in the Pop app, even showing destinations like "Not In Service" or "Gosforth Depot". | The realtime API is only meant to provide data on passenger trains. However, non-passenger trains do still show up from time to time. | Yes | Yes |
| Trains don't appear to arrive at Sunderland when heading northbound between Park Lane and St Peter's | Unknown | Yes | Yes |
| Trains will briefly show as departing Wansbeck Road platform 2 after departing Fawdon platform 2 towards Airport | Unknown | Yes | Yes |
| At midnight on the dot, trains at South Shields platform 2 will instantly appear to swap to the old South Shields platform 1 with the same arrival time. | Unknown | Yes | Yes |
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 "How can travellers get up to the minute journey information?", Nebula Labs (archived)
- ↑ 2.0 2.1 2.2 2.3 2.4 Nexus. "Pop app for Tyne and Wear Metro" (archived)
- ↑ 3.0 3.1 Nexus. "Track your Metro user guide" (accessed 16 February 2026)
- ↑ 4.0 4.1 4.2 4.3 Nexus (29 January 2025). "Nexus launches real time Metro map through the Pop app" (archived)
- ↑ Nexus. "Metro Connect" (accessed 16 February 2026)
- ↑ Nexus. "Metro customer reporting system is switching to WhatsApp" (accessed 16 February 2026)