Adding naptan data to

Hi all, I have started to add naptan data to map nodes but without even checking what the benefit would be first. I have added some of Bromley, all of Widmore and a few in Plaistow for starters. I have cross checked data from the naptan database,, tfl live departures website and existing osm data.

Would this actually be something worth continuing or am i just wasting hours of my time?

I have come across a few errors which i have resolved by cross checking everything.
Here’s an example of one of my updated nodes. It was a “bertha james day centre” stop which has changed its name to “wendover road” as the day centre no longer exists. The ibus announcements and naptan database have both already been updated but the tfl journey planner still shows it as bertha james day centre? Does this mean that data is used from multiple sources?

name=Wendover Road
naptan:CommonName=Wendover Road Bromley
naptan:Indicator=Stop BJ
naptan:Street=MASONS HILL
network=London Buses

Any thoughts or suggestions?

Welcome @robbietee

I presume you’re stating with importing - this is the national reference source.

I’ve managed to import the data on a weekly basis and then use a MATERIALIZED VIEW to map the data to to various other uses.

I’ve been trying to cross-ref it with and I think it’s clear that there are clearly two different data sources here: one the “” and the other at the Ordnance Survey.

There is another Postcode database (the “PAF”) which has some very strange thing in it, but few of the are transport nodes. This is “owned” by the Royal Mail and is treated - fairly or otherwise - as the primary source for many business purposes.

Hi @robbietee

This bus stop (and its counterpart in the other direction)) was renamed a few months ago but the Unified API doesn’t appear to have updated correctly.

We’re looking into what’s happening to bring the old name into our data.


Hello and welcome to the forum!

The work you are doing is interesting, since we have recently been doing some work around OpenStreetMap (we’ll probably be sharing details soon).

NaPTAN is designed to be the canonical dataset of bus stops (and other kinds of station) across Great Britain, so I can certainly see some use in referencing the AtcoCode for each bus stop. However, I do wonder about the utility of including other data from NaPTAN. Data in NaPTAN can potentially change at any time, so OpenStreetMap could easily become outdated. If you took the AtcoCode from OSM, you could then cross-reference with NaPTAN to get the most up-to-date information.

Just my two cents!

Hi, Yes, i actually used the smaller London “490stops.csv” file from the API

What materialised view do you use? Sorry if this is a silly question. Before now i have only ever made minor edits to osm but i’ve just discovered on how much ive been missing out on by not using JOSM.

I have had a look at briefly but there’s so much data i couldn’t find the Bromley area. I got sidetracked by new things to play with on JOSM to be fair. I’ll have another look.

I do use the PAF but only in the sense of Royal Mails postcode finder. Unless there’s a free version of the actual PAF itself? That’s all i’ve ever done to be honest.

Hi James, Oh, so its a genuine error i’ve discovered then. Glad I pointed it out so that it can be resolved. There are a few more stops on the tfl journey planner that are either old and no longer exist as physical stops or are named slightly differently.
I will have a look and send you the details if i may.


Hi Leon. OK, so for now i will probably stick to just adding the NaPTAN details such as naptan:NaptanCode or SMS code/Stop Number as tfl call it and “naptan:AtcoCode” is correct by referencing against the NaPTAN database.
I’ll also please osm by upgrading the tags to bus=yes which looks like it needs doing for every bus stop in the world…I’ll just be concentrating on Bromley for the minute, lol

Sorry guys i should have replied to you all in the same message. I’ve read the telling off/tip window now.

1 Like

That sounds like a very pointless exercise to me, unless it’s on a highway tagged bus=no (which would be a lunatic place to site a bus stop). An absence of tags to the contrary already implies that buses can use the highway containing the bus stop, and therefore the part of the highway where the bus stops too.

You might then be tempted instead to add motor_vehicle=no to lanes which contain bus stops, but that would also be incorrect. In almost all cases, except in bus lanes, vehicles are allowed to drive over bus stops markings, provided they do not park there. So it is only the bus lane, not individual bus stops, which would require tagging motor_vehicle=no (and in most cases, that too is implied by other tagging and doesn’t need to be explicitly stated.

Also, remember that the bus_stop node (in London at least) is typically mapped alongside the highway, on the pavement (sidewalk in OSM terms). Bus=yes would not be appropriate there.

I know but osm reports it as a “warning” for every bus stop. I dont think the tag has anything to do with whether the bus can use the highway. Its just to inform that its a stop for buses even though its already called a bus stop. I’ve found out how to update nodes in mass so i’m not bothered. All the areas i’m interested in will be done.

The correct fix for that is to find out why it is warning about something which it probably should not be warning about. It shouldn’t be fixed by bodging the data in a way that’s unnecessary and not intended.

OSM also very strongly discourages doing bulk edits in the manner you suggest, and in particular bodging the data to “correct” an error in an OSM-related tool is considered improper.

So, what’s the particular circumstance in which you get that warning? If we can better understand why the warning is occurring (and it’s not a warning I’ve ever seen when editing OSM) editors can take it up with the right person and try to get it fixed properly.

1 Like

It is shown as a warning when editing in iD browser edition. I initially thought nothing of it and was just updating tags as “suggested” by the editor but you are right, it does need questioning as to why it does it. I will take some screenshots of it and flag it with osm as to why its doing it.

Right, so every bus stop in Bromley from the naptan database is now updated. Bickley is my next target. Ive found a much easier way of updatinf the data without flicking between multiple tabs.

What i’ve found so far:

Most stops had the incorrect value of “naptan:Bearing N” which i know has been an issue and probably still is for most of London.

Most of the naptan:Indicator data was either completely wrong or just showed a letter instead of the correct naptan format of either “Stop Letter” or “->Letter”. I know bus use this data on their site so it is nice to have this corrected even if its just for them.

There are some bus stop positions that are incorrect, some of which are quite far out. I plan to send a list of actual bus stop positions verified in person over the next few weeks.

Most, if not all old “inactive” stops are still shown on the tfl journey planner and in some places the map actually gets quite messy. For example, the area around stop 4900004411SE

Screenshot from 2023-06-26 18-45-05

Some of the “naptan:CommonName” data was not correct or showed old names. I know this can quite easily become out of date again as with all the data but its better than being years out of date.

I presume you’ve worked out that the → are compass directions? :slightly_smiling_face:

Bromley North… has a North and East

Bromley South


and Bickey

Yes, and its the direction from which the buses approach the stop not the direction of travel for “naptan:Bearing”.

Apologies my message above states that use the naptan indicator field when in fact they use “local_ref” but the same applied. Lots of them were wrong.

Have a look at the stop positions for stops A and B in Bromley South :rofl:. I could send correct ish positions from bing but i will do it once and do it properly and get the actual latitude and longitude. Even if tfl are not overly concerned, it’ll make me happy and im sure people using the tfl app will be happier.

Most of the things you mention in that post are quite different things from adding the bus-yes tag, which is what I was specifically referring to when I suggested it should not be done.

I don’t have time at the moment to study the more detailed problems you mention in this later post, but certainly I can see at least some of them to be more plausible. I have myself “moved” several bus stops on OSM (my editor name is harg) where others have flagged an error, in some cases confirming it with TFL open data but in many cases had to visit the stop because opendata was wrong too.

Specifically though, it’s tagging a bus stop as bus=yes which I object to being added, because apart from being stupidly nonsensical, any such tag should be applied to the highway that the stop is alongside, not to the stop itself.

@harry My “What i’ve found so far:” post was not referring to bus=yes tags at all. That was the previous post.

Just so that its clear incase it has come across in the wrong way.
1: I 100% agree with your opinion on the bus=yes issue. OSM shouldn’t be warning about it when editing in iD. I will not be adding the tag to any future edits (and will revert any added back) as its use is not appropriate.
2: I have not asked you to study any problems i have found. It was a general post on the forum continuing on from the original topic. Please feel free to look into them if you wish, but do bear in mind that i have not asked you to do anything.

Thanks, Rob

OK, So here’s where i’ve got to. Data added, amended & verified for the following naptan areas:

Bromley - N0060488
Bromley Common - E0034076
Bromley Park - N0075219
Bickley - E0034072
Hayes - E0034108
Southborough - E0034147
Grove Park - E0034663 (This area would be so much easier to work with if it were split into smaller sections. ie Grove Park & Burnt Ash)
Widmore - E0034161
Plaistow - E0034136
Downham - E0034661

I started making a list of issues, which as it grew turned into a .csv spreadsheet of its own. 105 items so far. About 75 of them just need their street adding to the naptan database. The others are all name changes and bus stop position updates.

My aim is to work through the whole London Borough of Bromley. Just bus stops first. Then i will go back over the whole lot, checking the routes which will probably then take me slightly out of the borough. For example routes like 208 which start/end in Lewisham so I will probably do all the stops along all the routes that pass through Bromley.

Are there any areas in Bromley that are particularly bad for missing or incorrect data or stop positions or shall i just keep ploughing on through it?

There is a London wide issue where the tfl maps are showing all stops, even inactive/deleted ones so its very messy looking in built up areas. I know this has been mentioned by others and i am assuming its already being looked into. For example:

Should look more like this (Now i’ve put all the stops in the right places):

Oh, and heres the sheet so far :rofl:

ATCO Common Name Suggested New Common Name Naptan Street New Naptan Street New Latitude New Longitude Position Verified By Notes
490009774E Meadway Pickhurst Park Mead Way Pickhurst Park MEAD WAY Mead Way not Meadway
490009774S1 Pickhurst Lane THE AVENUE
490009774N Pickhurst Lane PICKHURST LANE
490013498S The Pickhurst PICKHURST LANE
490013498N Club Gardens Road PICKHURST LANE
490005448S Club Gardens Road HAYES LANE
490007951W Hayes Library PICKHURST LANE
490007951E Hayes Library PICKHURST LANE
490007954W Hayes Street BASTON ROAD
490006866S Five Elms Road BASTON ROAD
490007949S1 Hayes Hill Road PICKHURST LANE
490007949S2 Hayes Hill Road PICKHURST LANE
490007941D Hayes Station Approach STATION APPROACH
490007941A Hayes Station Approach STATION APPROACH
4900HAYS1 Hayes (Kent) Rail Station STATION APPROACH 51.3762561 0.0107026 Bing Aerial Imagery Position of Rail Station Entrance
490004611S Burnt Ash Road Hail & Ride Winn Road WINN ROAD Burnt Ash Road was never correct.
490017852S Senlac Road Hail & Ride Jevington Way JEVINGTON WAY
490018572N St Augustine’s Church BARING ROAD
490018573W Baring Road Grove Park LE MAY AVENUE
490007568W Le May Avenue Luffman Road LE MAY AVENUE
490007565A Grove Park Bus Station BARING ROAD
490001124N Grove Park Bus Station GROVE PARK BUS STATION
4900GRVPK1 Grove Park Rail Station BARING ROAD 51.4309843 0.0214413 Bing Aerial Imagery Position of Rail Station Entrance
490015553G Chinbrook Road Baring Road CHINBROOK ROAD
490003290E Amblecote Road CHINBROOK ROAD
490003290W Amblecote Road CHINBROOK ROAD
490013403E Marvels Lane Chinbrook Road Chinbrook Road Marvels Lane CHINBROOK ROAD Road you are on should be referenced first.
490013403W Marvels Lane Chinbrook Road Grove Park Road Marvels Lane GROVE PARK ROAD Road you are on should be referenced first.
490001124E Grove Park Station BARING ROAD
490008258W Hither Green Cemetery VERDANT LANE
490008258S Hither Green Cemetery VERDANT LANE
490005868E Crutchley Road WATERS ROAD
490014581N Whitefoot Lane VERDANT LANE
490014581S Whitefoot Lane VERDANT LANE
490014009N Vanoc Gardens NORTHOVER
490010393S Northover DOWNHAM WAY
490012116E Churchdown CHURCHDOWN
490011435N Downham Health Centre CHURCHDOWN
490006168W Cinderford Way CINDERFORD WAY
490004430DA Bromley Road Downham Way BROMLEY ROAD
490015092E Rangefield Road Valeswood Road RANGEFIELD ROAD
490004422N Bromley Hill Cemetery BROMLEY HILL
490004422S Bromley Hill Cemetery BROMLEY HILL
490014900N Woodside Road Southborough SOUTHBOROUGH ROAD
490012253E Southborough Library SOUTHBOROUGH LANE
490004336N Turpington Lane Community Centre TURPINGTON LANE
490004336S Turpington Lane Community Centre TURPINGTON LANE
490015902SE Ash Row Hail & Ride Lovelace Avenue LOVELACE AVENUE
490008973S Faringdon Avenue Larch Way Hail & Ride Faringdon Avenue Larch Way FARINGDON AVENUE
490008890SW Faringdon Avenue Birch Row Hail & Ride Faringdon Avenue FARINGDON AVENUE
490008573S Bromley Common The Crown BROMLEY COMMON
490012253E Southborough Library SOUTHBOROUGH LANE
490014900N Woodside Road Southborough SOUTHBOROUGH ROAD
490010748N Park Avenue Bromley BROMLEY HILL
490010748S Park Avenue Bromley LONDON ROAD
490014230N Warner Road (BR1) LONDON ROAD
490007999S Warner Road (BR1) LONDON ROAD
490006765N2 Farwig Lane LONDON ROAD
490006765S2 Farwig Lane LONDON ROAD
490004029N Bird In Hand Lane BICKLEY ROAD
490004029E Bird In Hand Lane BICKLEY ROAD
490013236W The Avenue Beaconsfield Road THE AVENUE
490013236S The Avenue Beaconsfield Road THE AVENUE
490005352S Clarence Road SOUTHLANDS GROVE
490005352E Clarence Road SOUTHLANDS GROVE
490007929C Hawthorne Road SOUTHLANDS GROVE
490007929D Hawthorne Road SOUTHLANDS GROVE
4900185590 Bickley Station HAWTHORNE ROAD ATCO Conflict. 490018559E1 used by Tfl.
490018559W Bickley Station HAWTHORNE ROAD
490018903E St George’s Road HAWTHORNE ROAD
490018904W Albyfield HAWTHORNE ROAD
490018905E Barfield Road Barfield Road Blackbrook Lane BARFIELD ROAD Name to match stop in opposite direction.
490018905W Barfield Road Blackbrook Lane BARFIELD ROAD
490018906N Aquila Estate Golf Road Aquila Estate GOLF ROAD
490010549E Oldfield Road St Georges Road OLDFIELD ROAD
4900BROMLYN1 Bromley North Rail Station TWEEDY ROAD 51.4082575 0.0169356 Bing Aerial Imagery Position of Rail Station Entrance
4900004425O West Street Bromley West Street College Green WEST STREET Other stop in street with same name.
490004419B Bromley Magistrates Court LONDON ROAD
4900004419G Bromley Magistrates Court BECKENHAM LANE
4900004411SE High Street Market Square HIGH STREET
490004408Z High Street Market Square HIGH STREET 51.4059589 0.0139055 Bing Aerial Imagery
4900006507W Bromley High Street The Mall HIGH STREET 51.40193 0.01602 GPS. Actual Pole Position
490006507Y Bromley High Street The Mall HIGH STREET 51.40182 0.01611 GPS. Actual Pole Position
490012775J St Mark’s Church WESTMORELAND ROAD
4900012775K St Mark’s Church WESTMORELAND ROAD
490004724N Hayes Road Cameron Road HAYES ROAD
490012861S Beadon Road CAMERON ROAD
490012861N Beadon Road CAMERON ROAD
490007953S Hayes Road Hayes Lane HAYES ROAD
490007953N Hayes Road Hayes Lane HAYES ROAD
490003262W Almond Way Hail & Ride Almond Way ALMOND WAY
490001037W Bromley South Station BROMLEY HIGH STREET HIGH STREET 51.40075 0.01669 GPS. Actual Pole Position Street Name should be the actual name.
490001037X Bromley South Station BROMLEY HIGH STREET HIGH STREET 51.40062 0.01707 GPS. Actual Pole Position Street Name should be the actual name.
490001037Z Bromley South Station BROMLEY HIGH STREET HIGH STREET 51.4004831 0.0171397 Bing Aerial Imagery Street Name should be the actual name.
490001037A Bromley South Station BROMLEY HIGH STREET HIGH STREET 51.4002041 0.0169255 Bing Aerial Imagery Street Name should be the actual name.
490011423E Rangefield Road DOWNHAM WAY 51.4248819 -0.0022001 Bing Aerial Imagery
490008890S1 Faringdon Avenue Birch Row Hail & Ride Faringdon Avenue Birch Row FARINGDON AVENUE 51.3840819 0.0606417
490008665T Bromley Civic Centre KENTISH WAY 51.4055448 0.0188557 Bing Aerial Imagery
490008665Q Bromley Civic Centre KENTISH WAY 51.4047105 0.0186271 Bing Aerial Imagery
490009634N Marbrook Court MARVELS LANE 51.4330558 0.0290949 Bing Aerial Imagery
490006452N Edward Tyler Road MARVELS LANE 51.4349028 0.0258286 Bing Aerial Imagery
490001036N Bromley North Station NORTHSIDE ROAD 51.4088279 0.0164765 Bing Aerial Imagery
490005868W Crutchley Road WATERS ROAD 51.4339931 0.006944 Bing Aerial Imagery Current stop position very inaccurate
490004425N West Street Bromley WEST STREET 51.4068497 0.0148142 Bing Aerial Imagery
490014577N2 Whitebeam Avenue Larch Way Hail & Ride Whitebeam Avenue WHITEBEAM AVENUE

Thanks, Rob

Is the supplied info of any use to tfl in making the appropriate corrections? I don’t mind doing it if it will help keep the systems correct and accurate, but it is time consuming and I would hate to waste my time if it could be better spent doing something else.
If there is anything specifically that i could do differently to help please let me know, i am happy to help.

Kind Regards,