The train was travelling from Jalandhar to the city in Punjab state, with TV channel Times Now reporting that those struck were unable to hear it approach due to the overbearing sound of firecrackers being let off.
The state police commissioner said 58 bodies have been recovered, but there could be more to come.
The speeding train did not stop following the accident, which also saw at least 60 people taken to hospital.
It happened at about 7pm local time (2.30pm UK time) and a number of rail services were cancelled afterwards.
Indian Prime Minister Narenda Modi, who earlier in the day attended a Dussehra celebration in Delhi, confirmed that families of the victims would receive "financial relief" from the government.
He also tweeted: "Extremely saddened by the train accident in Amritsar.
SKY News.