Nine other passengers were injured in one of Hungary's worst traffic disasters.
The passenger train was traveling at about 60 mph when it struck the bus at about 8:30 a.m. (0630 GMT) at a railroad crossing near Siofok, said the city's police chief, Capt. Tamas Hekker. The popular resort town on Lake Balaton is about 100 kilometers (60 miles) southwest of Budapest.
The impact propelled the front part of the bus about 50 meters (yards) away from the crossing while the other half burst into flames after being dragged along the tracks for some 160 yards by the train, officials said.
The crash left mounds of twisted steel barely recognizable as a vehicle, including bus metal wrapped around the front of the locomotive. The front end of the bus appeared to be charred.
Thirty people died at the scene, one died while being transported to a hospital by helicopter and two others died at a hospital, according to Hekker and Dr. Vilmos Olah of Siofok General Hospital.
The train driver and one passenger on the train were slightly injured and were being treated at a hospital, while six from the bus remained hospitalized, several in serious condition.
Contradicting earlier reports, Hekker said the driver of the bus was German, but there was no information available on his condition.
Prime Minister Peter Medgyessy called the crash "one of the all-time worst traffic accidents" in Hungary. He said he had called German Chancellor Gerhard Schroeder to express his condolences.
State railway officials said the crossing signal was flashing red when the bus started moving across the tracks as the express train approached on its way from Budapest to Nagykanizsa in southern Hungary, near the border with Croatia, officials said.
Olah said a similar crash between a bus and a train had occurred at the same crossing in 1980, when 24 Hungarian were killed.
"I don't know how many people will have to die before they put a proper crossing there," Olah said.
An eyewitness also said he had seen the bus cross the track while the warning lights were red.
"The train blew its whistle twice to warn the bus, but the train was not able to stop in time," said Istvan Galos, a 39-year-old engineer. Galos said he had reached the tracks in his car from the opposite direction when the accident occurred.
Galos said two tour buses with German license plates were traveling together. The first bus had crossed the tracks while the warning lights were flashing white, but the second crossed as the lights were already flashing red.
The crossing was unguarded and only a flashing light served as a warning of oncoming trains, with no gates or barriers. Gate or barriers are rare at Hungarian railway crossings.
Several bodies were still lying at the side of the tracks, covered with blankets, in the early afternoon. Police were trying to identify those victims before taking the bodies to a morgue.
The German Embassy said it had set up a crisis center near the scene of the accident.
The town is a popular tourist resort on Lake Balaton, Central Europe's largest lake. The area is especially popular with German tourists.
An official for Ursel-Reisen, the owner of the bus, said the passengers came mainly from two German states, Lower Saxony and Schleswig-Holstein.
From spring to fall, thousands of tourists visit the 369-square-mile lake. Hordes of holiday makers swarm to Balaton's shallow southern shores, northern hills and vineyards.
The water of Lake Balaton is rich in minerals especially calcium and magnesium and is reputed to have a therapeutic effect on bathers' blood circulation.