Interior ministry spokesman Nasrat Rahimi said women and children were among the dead.
The Taliban said in a statement they were not involved in the attack. A top Afghan political leader, Abdullah Abdullah, was present at the event but escaped unharmed, Reuters news agency reported.
Fifty-five people were wounded, according to the Afghan ministry of health.
“The attack started with a boom, apparently a rocket landed in the area, Abdullah and some other politicians … escaped the attack unhurt,” Abdullah’s spokesman, Fraidoon Kwazoon, who was also present, told Reuters by telephone.
Broadcaster Tolo News showed live footage of people running for cover as gunfire was heard.
A health ministry spokesman said the casualty toll could rise. Dead and wounded were being ferried from the site by ambulance.
A NATO source said that the death toll was slightly higher: more than 30 killed, with 42 wounded, 20 of whom were in a serious condition.
Source: AFP and Reuters