A German man was dragged beneath a tram for more than 3 km (2 miles) and through seven stations, as passengers heard his screams but did not initially realise where the noise was coming from, police said on Tuesday.

The 20-year-old lost both legs and an arm in the 10-minute ordeal that left a trail of blood through the city of Dortmund. It ended when a passenger finally pulled the streetcar's emergency brake, Bild newspaper reported.

The man was unconscious when he was extricated and taken to hospital in critical condition.

"Several passengers later said they had heard his cries for help but couldn't tell where they were coming from," Dortmund police said in a statement.

- An earlier version of this story wrongly used an image of a train from MOTAT. The error is regretted.