At least 48 people have been killed in Peru after a bus they were travelling in plunged 100 metres off a cliff onto a rocky beach.

The accident took place on Tuesday on a coastal highway north of the capital, Lima.

The bus tumbled down the cliff after colliding with a truck along a narrow stretch of highway known as the "Devil's Curve", state news agency Andina reported.

It was travelling from Huacho to Lima with 55 passengers on board.

Pasamayo: sube a 48 cifra de fallecidos tras accidente de ómnibus, informa @PoliciaPeru https://t.co/FIJCJr0qe8 pic.twitter.com/xqOANsdAiq — Agencia Andina (@Agencia_Andina) January 3, 2018

The incident "left at least 48 victims" dead, the Interior Ministry said in a statement on its website.

Another six were found injured and have been airlifted to a hospital near Lima.

No roads lead directly to the beach, complicating rescue efforts, according to local officials. Rescuers have had to climb down to the beach and battle the tide to recover bodies.

President Pablo Pedro Kuczynski offered condolences to families of the victims in a post on Twitter.

"For us, it is very painful to suffer an accident of this magnitude. My deep solidarity lies with the pain suffered by the relatives," he said.

Traffic accidents are common along Peru's roadways, with more than 2,600 people killed in 2016. More than three dozen died when three buses and a truck collided in 2015 on the main costal highway.

Twenty people were killed in November when a bus plunged off a bridge into a river in the southern Andes.