I’ve been using the /StopPoint/{id} API to fetch bus stop information. This API appears to find the root of the tree of StopPoint nodes that contains the StopPoint with the given id. Normally I get back a bus stop cluster or pair as the root, but sometimes the root is a transport hub or rail/metro station.
I’ve also started spotting cases where there is no parent for the bus stop - it’s not part of a bus stop pair or cluster or anything else.
My question is this:
Is this permitted for the TfL-maintained bits of the NaPTAN data?
If so, why doesn’t the TfL website gracefully handle this case?
If not, could some kind of audit be done to find and fix all the cases where a bus stop is missing a parent pair/cluster?
Example stop: ‘Dartford Grammar School for Girls’. There are two stops that share this name that are in the same place, served by the 492 in both directions. On the site, Dartford Grammar School For Girls - Transport for London works as a bus stop page, but attempting to browse to the ‘parent page’ (the immediate child of ‘Stations, stops & piers’) causes an error, suggesting the site assumes a parent can be found and falls over when it doesn’t find one.
As Dartford is outside the Greater London Authority area, Transport for London has no authority to define items there. Outside the GLA area, buses are run by private companies that are a literal law unto themselves : Bus services – Dartford Borough Council
I don’t know if I ever did find others besides these but there’s a string of them along the 492 route towards Dartford (linked by a common stop name where possible):
Outbound id
Inbound id
Stop name
2400102531
X
North Road
2400A070830A
2400102533
Seaton Road
2400102535
2400102537
Princes Road
2400A072640A
2400102539
Shepherds Lane / Havelock Road
2400102541
2400102543
Somerset Road
2400102545
240090625
Dartford Grammar School For Girls
240090627
240090629
Dartford Grammar School For Boys
2400102547
2400A019690A
West Hill / Shepherds Lane
2400A019780A
X
Priory Hill
2400A060520A
2400A019280A
Livingstone Hospital
2400102527
X
Shenley Road
2400A018820A
X
The Brent
2400A018830A
2400A018810A
Brentfield Road
2400A018840A
2400A018800A
Milestone Road
2400A018850A
2400A018790A
Brent School
2400A018860A
2400A018780A
Welsh Tavern
2400A018870A
2400A018770A
Elm Road
2400A018890A
2400A018750A
Winston Close
2400A018900A
2400A018740A
Waterstone Park
X
2400102529
Chastilian Road / North Road
X
2400109432
Constance Grove
X
2400A019270A
Park Road
X
2400A019260A
St Vincents Road
Looking closer at it, this could be an issue with the API, since I can only see this happening for stops outside the ‘490’ area (ta @briantist for the pointer) - I’ll see if I can dig up some more
Pulled some more by just cheating and looking at bus routes that escaped London. Apologies if some of these are red herrings - I hacked some code together to look for null parents.