New Tube Customer Volumes and Movements Data

As our city grows, so does the demand for transport. This means that it can get very busy at specific times at the most heavily used places. Some customers have told us they would like more information to help them avoid the very busiest times and places when they have the flexibility.

Today we’re releasing new London Underground data to show customer volumes and movements in stations and train occupancy for a typical weekday, so you can see the busiest locations and times on our network. This will enable open data users to create features for planning quicker and more comfortable journeys.

With London’s population growing rapidly, demand on Tube services is higher than ever and we hope the release of this new data will help tackle crowding

Two’s a crowd

The complete datasets are now available as downloadable csv files and selected elements have been integrated into our Unified API:

  1. Station entries, exits and interchange data. The complete dataset gives passenger flow numbers within stations based on customer entries, exits and interchanges, in 15 minute increments, from the opening to the close of the service. The Unified API contains data on customer flows to platforms for entries and interchanges only.
  2. Line loading data. This dataset indicates on a scale from 1-6 (with 6 being the highest) how busy trains are likely to be as they arrive at and depart from the stations. This data is available in 15 minute increments from the opening to the close of service.

Both datasets are updated once a year based on ticket barrier taps data and survey data. You can use these datasets to identify when stations and services are at their busiest during a typical weekday, to indicate the busiest times to travel and alternative. You can find more data about our services on a typical day in the Rolling Origin and Destination Survey. (RODS)

How does it work?

The complete Crowding data sets are available here, along with detailed documentation.

Selected data elements have been integrated into in the Unified API. Read on to find out what is available.

Data on volumes of passenger flows to station platforms for entries and interchanges in 15 minute increments and line loading data is exposed via the API endpoint STOPPOINT.


The following URL can be used to provide crowding data for all the lines, and both directions for particular stop IDs:{ids}?includeCrowdingData=true

The data structure will be the same as the existing STOPPOINT, however with the additional “Crowding” object data added to the Line Property:

Identifier[ ]
“$type”: “Tfl.Api.Presentation.Entities.Identifier,Tfl.Api.Presentation.Entities”,”id”: “victoria”,
“name”: “Victoria”,
“uri”: “/Line/victoria”,
“type”: “Line”
“TimeSlice”: “0015-0030”,
“value”: 2},
“TimeSlice”: “0015-0030”,
“value”: 2},
“Direction”: “Inbound”,
“LineDirection”: “SB”,
“NaptanFrom”: “940GZZLUEUS”,
“NaptanTo”: “940GZZLUWRR”,
“PlatformDirection”: “SB”,
“TimeSlice”: “0015-0030”,
“value”: 1},
“Direction”: “Outbound”,
“LineDirection”: “NB”,
“NaptanFrom”: “940GZZLUEUS”,
“NaptanTo”: “940GZZLUKSX”,
“PlatformDirection”: “NB”,
“TimeSlice”: “0015-0030”,
“value”: 1},

You are also able to filter further by Line and Direction. The URL that can be used to filter is:{ids}/Crowding/{line}?direction={direction}

An example URL would be :

The response from the above URL would be in the same structure as the previous URL except with a more refined data set. Below is a snippet of the UI version of the API:



Tell us what you think

We encourage the community to provide feedback on our new data sets to help us continue to enhance and improve our open data products. Please let us know your thoughts in the comments section below.

Published by

Ashiq Hussain

Full Stack Software Developer at TFL Online

5 thoughts on “New Tube Customer Volumes and Movements Data”

  1. This blog is a good idea and keeping in touch with passengers is to be welcomed. A little less ‘management speak’ e.g. not so many ‘data sets’ would be welcomed too. As would remembering that are passengers not customers. Apart from that, keep up the good work.


  2. Great news. I’m researching how people find it difficult and distressing to claim a seat if they need one during busy periods (especially if they have an invisible disability). This data could be a massive help to them.


  3. Hi
    This is one of the more confusing data sets to interpret. Could we have it a little more explained.

    “$type”: “Tfl.Api.Presentation.Entities.PassengerFlow, Tfl.Api.Presentation.Entities”,
    “timeSlice”: “0845-0900”,
    “value”: 50

    “$type”: “Tfl.Api.Presentation.Entities.PassengerFlow, Tfl.Api.Presentation.Entities”,
    “timeSlice”: “0845-0900”,
    “value”: 4

    I find this quite useless really as we don’t know what day of the week this relates to.

    Thanks for an explanation.


    1. Hi Steve,

      On the STOPPOINT url (!/StopPoint/StopPoint_Get) you are able to select the RESPONSE SCHEMA and find exactly what each of the properties refer to.

      timeSlice = Time in 24hr format with 15 minute intervals e.g. 0500-0515, 0515-0530 etc.

      For PassengerFlow data object the “value” = Count of passenger flow towards a platform

      For TrainLoading data object the “value” = Scale between 1-6, 1 = Very quiet, 2 = Quiet, 3 = Fairly busy, 4 = Busy, 5 = Very busy, 6 = Exceptionally busy

      The data is static and refers to a particular snapshot of data of a typical day.


Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s