According to rescue officials, three people lost their lives on the spot, while more than 20 were wounded.
The injured and the bodies were moved to a nearby medical facility.
The passenger bus was going from Sakhi Sarwar to Faisalabad, said the local police.
Confirming the death toll, Kohat District Police Officer (DPO) Suhail Khalid had said the dead included women and children also.
Read more: Karachi: Three people killed in two separate road mishaps
He said most of the victims belonged to Buner.
Rescue sources said the passenger bus was travelling from Buner to Karachi when this accident took place on Indus Highway.
Over 50 passengers were boarded on the bus.
The Khyber Pakhtunkhwa government has declared emergency in the nearby hospitals.