The bus driver veered off track to avoid hitting stray cattle on the road, authorities said.
The accident occurred in Barabanki district, 40 kilometers (37 miles) southwest of Lucknow city. Another 32 were injured out of the total 60 passengers onboard.
There are fears the number of dead could increase as several passengers received critical injuries, Senior Police Officer Yamuna Prasad said. They were being treated in a hospital.
More than 110,000 people are killed every year in road accidents across India, according to police. Most crashes are blamed on reckless driving, poorly maintained roads and aging vehicles.