The Boeing-737 flight from Dubai to Calicut International Airport was carrying 190 passengers and crew, the civil aviation ministry said in a statement. Among them were 10 infants.
Television footage showed rescue workers moving around the wreckage in pouring rain. The aircraft lay split into at least two chunks after the plane's fuselage sheared apart as it fell into a valley 35ft below, authorities said.
A Kozhikode official said that the two pilots were among the dead.
"Unfortunately, 17 people have lost their lives. I offer my condolences to their next of kin and pray for speedy recovery of the injured," Civil Aviation Minister Hardeep Singh Puri said in a tweet.
Friday's crash is the worst passenger aircraft accident in the country since 2010, when an Air India Express flight, also from Dubai, overshot the runway and slid down a hill while landing in the southern Indian city of Mangaluru, killing 158 people.
Both Mangaluru and Kozhikode have table-top runways that are located at an altitude and have steep drops at one or both ends of the runway.
Media reports suggested the plane skidded off the runway of Calicut airport, crashing nose-first into the ground.
Kozhikode is in the southern state of Kerala, home to a large number of Indians working in the Middle East.
Puri said rescue operations had been completed and all passengers had been removed from the aircraft.
Police said earlier four people were stuck in the wreckage.
The civil aviation ministry said in a statement there was no fire on board.
India, which shut down all air travel in late March to try to contain the novel coronavirus, has restarted limited international air travel.
Air India Express IX 1344, was a government-operated repatriation flight for Indians previously unable to return home because of the travel restrictions.
TV visuals showed the aircraft's nose smashed into a brick wall, with much of the middle of the plane pulverised.
Local TV news channels showed passengers, some of them lying motionless on stretchers, brought into a hospital surrounded by health workers wearing masks because of the Covid-19 pandemic.
"Pained by the plane accident in Kozhikode" Prime Minister Narendra Modi tweeted. "My thoughts are with those who lost their loved ones. May the injured recover at the earliest," he said.