The first railway in
Perth was the
Eastern Railway from
Fremantle to
Guildford via Perth, which opened on 1 March 1881.
Western Australian Government Railways (WAGR) was formed in 1890 as the operator of railways in Perth and
Western Australia. The
South Western Railway opened on 2 May 1893. On 28 September 1899, the first
trams in Perth begin operating. In 1903, the first
private bus operator began, operating routes from
Victoria Park to the Perth central business district (CBD).
Trams in Fremantle begin operating in 1905 and were abolished in 1952. The first diesel railcars, the
WAGR ADG class, enter service on 28 November 1954, replacing steam locomotives. This allowed for shorter stop spacings, leading to the opening of seven new railway stations on that date. Later that year, the Joondalup line was extended to
Currambine railway station. The operation of Transperth services underwent a reorganisation in the mid-1990s, with bus and ferry operations contracted out to private operators. Responsibility for managing the system was transferred to the Department of Transport. The Transperth brand was also transferred to the Department of Transport, with the brand to be used by all the companies which were to operate services under contract. The MTT adopted the trading name
MetroBus on 14 February 1995. The operation of the ferries was transferred to
Captain Cook Cruises in February 1995. It was initially planned that MetroBus would compete with the private sector for contracts, and it was successful in bidding for the Joondalup North, Armadale South and
Perth CATs contracts in 1995 and 1996 whilst several other contracts were awarded to the private sector. The government later announced that it would withdraw MetroBus from operating and it would tender out the remaining contract areas. MetroBus ceased operating bus services on 4 July 1998. In December 1999, enabling legislation for the
Mandurah line was passed, paving the way for the construction of the line. It was initially planned to branch off the
Armadale line, but was later rerouted to go via a direct route south of Perth in the median of the
Kwinana Freeway, necessitating tunnelling under the Perth CBD. This led to the development of the
Thornlie–Cockburn line as a branch off the Armadale line instead. On 1 July 2003, the
Public Transport Authority was formed, taking over from the Department of Transport of the ownership and management of Transperth services. An extension of the Joondalup line to
Clarkson station opened on 4 October 2004. The first
Transperth B-series trains enter service in 2004 as well and
Nowergup railcar depot opens.
Thornlie station opened on 7 August 2005, and on 23 December 2007, the Mandurah line opened. On 21 September 2014, an extension of the Joondalup line to
Butler station opened. In July 2016, the
Perth Busport opened, replacing Wellington Street bus station. The busport is underground and has a dynamic bus stand allocation system to increase capacity for the same number of bus stands. On 3 November 2016, construction begins on the
Forrestfield–Airport Link, later to become known as the
Airport line. In 2018 and 2019, the government passed legislation to construct an extension of the Joondalup line to
Yanchep, the
Ellenbrook line as a spur off the Midland line, and an extension of the Thornlie line to
Cockburn Central station along the Mandurah line, completing the original plans for the Mandurah line to spur off the Armadale line. These projects are all part of the
Metronet project to improve Perth's public transport system, which involves several station rebuilds and improvements as well. The Airport line opened on 9 October 2022 and the Yanchep extension opened on 14 July 2024, coinciding with the renaming of the Joondalup line to the Yanchep line. In January 2023, testing for the
Transperth C-series train commenced. These trains entered service on 8 April 2024. The
Ellenbrook line opened on 8 December 2024 while 8 June 2025 saw both the opening of the
Thornlie–Cockburn line and the reopening of the inner section of the
Armadale line. ==Services==