Tube service stopping pattern

Hi all,

Is it possible to get the stopping pattern - e.g. all stations, semi-fast, fast, etc. - of Tube services via the arrivals api?

As far as I’m aware, this isn’t present in the /StopPoint/{station}/Arrivals endpoint. I’ve seen it present across a few sites - most notably, as below:


(I also like how this site has the history of a physical train - this is something I’d like to add to my project but that seems complex and can wait until another day!)

Any guidance will be much appreciated!


Hello and welcome to the forum!

I don’t believe this is possible with the Unified API.
I think what intertube does is parse the InputDest attribute from the Trackernet API, which it uses instead.


They are carried in the platform number where relevant such as

The words used are “fast” and “semi-fast”.

It does indeed, just to provide some more context so people don’t have to crawl through the code:

The InputDest provided by the CBTC signalling system used on the Circle, District, H&C, and Metropolitan lines provides info not only on the destination, but on the calling pattern of the train.

The InputDest is formatted as A (B/C/D), where A and B are the passenger-facing destination for that service, C is the calling pattern of the service, and D is the operational destination for that trip.

A, B and D are formatted as a three letter acronym for the station/location, followed by the platform number where known/relevant. This pattern works for all stations, but may differ for some sidings/depots.

D will be different to A and B if , when the service terminates, it is then expected to continue in the same direction out of service - for example to go into a siding or depot. In all other cases` the 3 values should be identical


For the Circle, District, and H&C lines this is quite simple, with all the options that I have seen being ALL, OO, and DO:

  • ALL is pretty self-explanatory as it means the service will be calling at all stations.
  • OO (capital letter 'o’s, not zeros) means it’s a Circle line train on the first half of the circle. Circle line trips in the timetable as split in half at Aldgate, so a clockwise Hammersmith to Edgware Road service is actually a Hammersmith to Aldgate trip, followed by an Aldgate to Edgware Road trip. The former of these trips will have the OO calling pattern, and the latter will have ALL.
  • DO eta describes these as a “Shuttle” service, but the official definition doesn’t appear to be documented anywhere public, and I can’t really guess what it could stand for.


On the Metropolitan there’s currently only CBTC coverage between Wembley Park and Aldgate, so in the southbound direction you should only ever expect to see ALL at the moment, but in the northbound direction you can expect something in the format of "M-W-PN-NPNN". Expect something similar to start appearing in the southbound direction once CBTC gets rolled out further north, albeit in the opposite order.

  • The M at the start I believe simply stands for Metropolitan, because it never seems to change to any other letter.
  • The W stands for Wembley Park. If a train is not calling at Wembley Park, this will be replaced with an X.
  • The PN stands for Preston Road and Northwick Park, for trains that are calling there. As above, if a train won’t be calling at these stations, this will be replaced with XX.
  • The NPNN stands for North Harrow, Pinner, Northwood Hills, and Northwood, and again will be XXXX if not scheduled to call there.
  • The M stands for Moor Park, and (hopefully you’re sensing a pattern here) it will be X if a train isn’t calling there.

So to give you some (non-exhaustive) examples:

  • An All Stations service to Uxbridge platform 3 would have an InputDest of "UXB1 (UXB3/M-W-PN-XXXX-X/UXB3)", as that trip is terminating at Uxbridge both in a passenger sense and an operational sense, it will call at Wembley Park, Preston Road, and Northwick Park, but cannot call at any stations between North Harrow and Moor Park, as they’re not on the Uxbridge branch.
  • A Semi-Fast service to Watford platform 1 would have an InputDest of "WAT1 (WAT1/M-W-XX-NPNN-M/WAT1)" as it would not call at Preston Road and Northwick Park, but will call at all other stations.
  • A Fast service to Amersham platform 2 that will still call at Wembley Park would have an InputDest of "AME2 (AME2/M-W-XX-XXXX-M/AME2)". If the train then proceeded to go into the north sidings at Amersham instead of reversing in the platform, the AME2 code at the very end would change to the location code specific to the siding it would be going in. Unfortunately though I do not have a list of these “out-of-service” codes to hand.

Platform numbers

Unfortunately figuring this out only via platform numbers is a little less reliable, as just because a train is running on a line where there are platforms at a station, doesn’t necessarily mean it will stop there. For example a Fast train to Amersham may still run on the “local” lines without stopping, especially in times of disruption or when there’s an infrastructure failure.

The only cases where you can reliably make an assumption to the calling pattern of a Metropolitan line train (due to the lack of platforms) is if:

  • A northbound Met line train is on platform 1 at Wembley Park, it won’t be able to call at Preston Road or Northwick Park.
  • A northbound Met line train is on platforms 1 or 2 at Harrow-on-the-Hill, it won’t be able to call at any stations between North Harrow and Northwood (inclusive).
  • A southbound Met line train is on platform 2 at Moor Park, it won’t be able to call at any stations between Northwood and North Harrow (inclusive).


Similar codes exist in the InputDest for the Jubilee and Northern lines with the TBTC signalling system, however I have found these a little trickier to decode given in practice all trains run all stations anyway.

The only notable thing is that in the Northern line’s codes, you can tell if that train will be going up the Charing Cross or Bank branches, as denoted by an "-X"/"=X" in the code for the Charing Cross branch, or a "-Y"/"=Y" for the Bank/city branch.
E.g. "KEN2-X (KEN2//KEN-LOOPNB-X) [KEN2=X/KEN-LOOPNB=X]" is a train via Charing Cross (terminating at Kennington platform 2 and reversing using the loop in the northbound direction), and "MOR2-Y (MOR2//MOR2-Y) [MOR2=Y/MOR2=Y]" is a train via the city (terminating at Morden platform 2, where it will reverse).


Thank you everybody for your swift replies - it is greatly appreciated