One man was killed in the crash and a second passenger died at Jackson Memorial Hospital, The Miami Herald reported. At least three passengers were reported to be in critical condition and about 30 were being treated at the hospital.
Lt. Arnold Piedrahita, a spokesman for Miami-Dade Fire Rescue, said the bus driver was not hurt.
The bus was operated by Miami Bus Service Corp. The Federal Motor Carrier Safety Administration said the company has no record of safety violations or drivers using alcohol or drugs but has allowed drivers to operate buses while fatigued on at least one occasion.
The front of the bus was crushed in the crash and the door would not operate, requiring rescue workers to use the Jaws of Life to extricate passengers.
Edwin Aparicio, 3, who had just flown in from Bogota, Colombia, saw the bus just after the crash.
"Wow, like a can of sardines," he said in Spanish, talking about the crumpled roof of the bus.
Herman Garcia, who is employed at the airport to guide arriving cruise passengers to buses to the Port of Miami, said the driver apparently did not know that large buses have designated routes and pickup and dropoff points.
Piedrahita said the overpass is marked with a large sign warning that vehicles more than 8 1/2 feet high cannot pass.