BOAM - Bus Opal Assignment Model

This dataset provides an indicator of historic bus occupancy for individual bus services from January 2020.


This is a companion discussion topic for the original entry at https://opendata.transport.nsw.gov.au/dataset/boam-bus-opal-assignment-model

We have been advised that the data from 18 October 2020 onwards at this point is unreliable due to upstream systems. Please use the data with caution.

We will update here when we hear further about the data updates/fixes.

There are ongoing issues so extracts to FOAM, BOAM and ROAM have stopped. A catch up set of data will be produced once upstream issues are resolved.

The data is coming back through now for the FOAM, BOAM and ROAM data.

are the Occupancy numbers grouped into ranges of 20 based on the numbers for the seated capacity or based on those for the overall (including standing capacity)?

so does occupancy rande 21-40 mean that 21-40% of the overall or of the seating capacity is occupied?

many thanks leon

Hi Leon,

It is the number of passengers arriving at that stop. It is not in percentage.

1 Like

hello again,

can one tell me how the actual arrival time is obtained? by GPS mapping to stop coordinates? or sensors only activated at stops (door openings or bluetooth)? I guess it is an automated approach…

thank you :slight_smile:

Hi Leon, BOAM is an assignment model - Bus Opal Assignment Model. For buses the actual arrival time is based on the on-board GPS system. If there is an outage the actual arrival time might be missing.

Hi there,

I am wondering how I can download all BOAM data set in a bulk as csv?

How can I also calculate available space for each Trip?

Thanks for your help

Hi Asad

Thanks for reaching out. There may be ways to do this programatically but we aren’t set up to assist on that front - maybe one of the friendly forum peeps can help you out?

The BOAM data does provide some occupancy level information. (Is that what you mean by ā€œavailable spaceā€?)

1 Like

Hi Yvonne,

Thank you for response.

Basically, I am trying to understand how to calculate the ā€œOccupancy Statusā€ which is defined in BOAM documentation (User account | TfNSW Open Data Hub and Developer Portal).

In the data set, there are two columns SEATED_CAPACITY and STANDING_CAPACITY. However, I do not think these columns indicate the number occupied seats or standing areas.

Thanks in advance for the clarification.

Hi Asad
We only provide occupancy bands. In the case of BOAM it’s in bands of 20. So 0-20 would mean that up to 20 people were on board. Note it’s based on ā€˜tap ons’ and ā€˜tap offs’ and we understand some people do not tap on or off - for example school kids often do not tap on and off.
Capacity indicates the potential number of possible people to be seated or standing.
Hope that helps clarify matters.

Hi @yvonne.lee

Thank you for the clarification.

I have seen an earlier post from you that this data is not reliable from 18/10/20 onwards. Can you please tell me more about this? Which columns are not reliable ? Do we know what is the accuracy percentage ?

Thanks
Asad

Changes to Bus Opal Allocation Model (BOAM) Data Feed

What’s happening?
A few attribute calculations in the BOAM data feed are being updated due to changes in the underlying logic.

Key changes
Tap On / Tap Off (CTP cards):
Customers without a tap‑off will now be counted in the occupancy range from their boarding stop through to the final stop.
Actual Arrival Time:
Will now use GTFS‑Realtime predicted arrival times.
Bus Attributes:
Bus doors, seated capacity, and standing capacity will now show actual values instead of defaults.
Opal Record Status:
This field will now be blank.

What does this mean for me?
No structural or schema changes. You will see different values in passenger allocation, timings, capacity, and Opal mapping as these fields now use updated operational logic.

How can I get further support?
Should you require further support or have any queries about this change, please get in touch with us at OpenDataProgram@transport.nsw.gov.au.

When is it happening?
The tentative date is Wednesday, 4 March 2026. We will confirm the final date soon.

It has been confirmed that the changes will take effect on 4 March 2026.