The bus veered off the road and fell close to railway lines in the district of Mestre, which is connected to Venice by a bridge, Reuters reported.
The cause of the accident was unclear. Venice city councillor Renato Boraso said one line of enquiry was that the driver, a 40-year-old Italian who was among those killed, had been taken ill before the crash.
He said the coach had been carrying 40 passengers, of whom 21 had died and 18 were injured.
The death toll could rise because several of those hurt were in critical condition, he added.
Five of the victims were Ukrainians and one was German, said Venice’s prefect Michele Di Bari, the local representative of the interior ministry.
The bus was also carrying passengers from France and Croatia, Italian news agency ANSA reported.
AMK/PR