The official said at least 20 people had been wounded in the blast in the market in the Khyber region, near the border with Afghanistan, and the death toll could rise.
There was no immediate claim of responsibility.
The official said it was not clear if the blast had been caused by a suicide attacker or a planted bomb.
On Saturday, a team of suicide bombers and gunmen attacked the airport in the region's main city of Peshawar.