"It is with deep sadness that I report there were three confirmed casualties, two of which were on the bus and one that was on the platform," Ottawa Mayor Jim Watson told reporters at a news conference late on Friday.
Watson also said that 23 people were injured in the collision, some very seriously, and taken to hospital. The Ottawa Hospital confirmed on Twitter that it had received nine patients in critical condition from the crash.
Ottawa police chief Charles Bordeleau said the bus driver was arrested at the scene and taken in for questioning, but he declined to provide further details.
"An investigation is now underway on the cause of the collision," he told reporters.
Investigators were expected to be on the scene through the night, with frigid temperatures in Ottawa expected to dip down to minus 22 Celsius (minus 7.6 Fahrenheit) overnight.
"There's no question that the weather adds complexity at the scene," said Bordeleau. It was unclear if weather contributed to the crash.
Photos and video from the scene showed emergency responders treating a number of people on the ground, as others used ladders to unload passengers trapped on the bus' upper level.
Bilal Gill, a passenger on the upper deck, told broadcaster CBC News that people at the front were pinned under their seats.
"There was definitely people pinned. And there was a bit of blood on the floor," he said.
This the second major crash in recent years involving an Ottawa transit bus. A double-decker commuter bus crashed into a passenger train in September 2013, killing six people including the bus driver.