The hijacker was identified as Rolando Mendoza, 55, an ex-police inspector who was reportedly upset over having been fired.
Live television footage of the daylong standoff showed up to six hostages crawling out of the bus. Some motionless people were also seen being pulled out after the police moved in, according to various reports.
The initial death toll was put at four by a spokesman for Philippines President Beningno Aquino, The New York Times reported, which added that gunshots could be heard as the police moved in.
The assault teams took action after Mendoza, armed with an M-16 assault rifle, said he had killed two hostages and would shoot others if the bus was attacked.
"I shot two Chinese. I will finish them all if they do not stop," Mendoza told a local radio network, Agence France-Presse reported.
Later, the bus driver escaped through a window, the Times reported, and screamed, "Everybody is dead!"
Mendoza, a much-decorated officer who was fired for financial extortion, took the tourists hostage early Monday and demanded that his job and benefits be reinstated.
Negotiations led to release of nine hostages, the BBC reported, but broke down after Mendoza's death threats.
Three of those freed were Filipinos, and those left on the bus were reported to be tourists from Hong Kong on a three-day tour.