Department for Transport
Public Transport Stops (NaPTAN)
Every public transport access point in Great Britain — 434,000 bus stops, station entrances, tram platforms, ferry and airport access points and taxi ranks — each with a map coordinate and a stable code. The official answer to 'how well served is this location?'
At a glance
- Publisher
- Department for Transport
- Updates
- Updated daily
- Cost
- Free — open data
- Last checked
- 2026-07-16
What your business can use it for
- Site selectionCount the stops within walking distance of each candidate site and see what kind they are — a location on twelve bus routes and one two streets from a station are different propositions.
- Market analysisPublic transport access shapes who can reach you, for custom and for staff. Use it to explain why footfall or recruitment differs between sites that otherwise look alike.
Works with data you already have
- Locations you already map — shops, sites, properties, jobsMap coordinatesEvery stop carries WGS84 latitude/longitude and OSGB easting/northing, so it drops onto whatever map you already have
How to get it
- NaPTAN API — the whole national register as one CSVAPINo key needed. One request returns every stop in Great Britain (~96 MB). The API always returns the current state — there is no archive, so date-stamp what you download if you care about history.
- NaPTAN site — browse and search stopsPortalThe front-end for looking things up by hand. For data, use the API above rather than scraping this.
What's involved in using it
- The main list of stops is a single, reasonably tidy file with map coordinates already on it — for straightforward "where are the stops near my sites" work this one is genuinely simple to use.
- The companion file that translates area codes into readable place names is only supplied as a technical XML file, not a spreadsheet, so if you want proper town and locality names you need someone to extract them from it first.
- Stop types are short three-letter codes that need a reference list to decode, and roughly 5% of rows are inactive or archived stops, so filter on the status column before counting or you will count stops that no longer exist.
The technical detail, for whoever sets it up (4)
- There is no postcode on a stop — the join is by coordinate, so you will need your own locations mapped before this is useful.
- A stop is not a service. This tells you a bus stop is there, not whether anything calls at it — for that you need the Bus Open Data Service timetables.
- Locality names nest confusingly: the locality may be a small village, with the town and city in separate parent columns. Use the town field for 'what place is this in?'
- The place-name gazetteer (NPTG) is hierarchical — asking the API for CSV is silently ignored.
Ask us about Public Transport Stops (NaPTAN)
Ask a factual question about Public Transport Stops (NaPTAN) — what it covers, how often it changes, whether it matches the records you keep — and we will answer, free. Or tell us what you are trying to work out, and we will tell you what it would take to get this data working next to the numbers you already have.