Gamakov is youth player of Chernomorets Burgas since 2009. In 2013, he was sent on loan at Neftochimic Burgas till end of season 2013. He won promotion in A group with the team.
Chernomorets Burgas
After end of season 2012–2013 and his good play at Neftochimic, he returned to Chernomorets. He made his debut for the team at first match of season 2013–14 against Cherno more Varna as a substitution.
On 12 July 2014, Gamakov signed with Botev Plovdiv. On 13 August, he scored a goal in the Bulgarian Supercup final but despite his excellent performance Botev Plovdiv was defeated by Ludogorets Razgrad with 1-3. Milen scored the opening goal in the derby game against Beroe Stara Zagora on 24 October. He was among the best players in the match although he was substituted at the 68 minute. Botev Plovdiv achieved a 3-1 victory. On 15 March 2015 Gamakov scored the first goal with a header for the important 2-0 home win over CSKA Sofia. On 16 and 23 May Milen Gamakov was included in the starting lineup as a defensive midfielder for the 3-2 home win over CSKA Sofia and the 1-2 away defeat from Beroe Stara Zagora. He played well but received yellow cards in both games. Milen Gamakov was named the second-place winner of the best youth player in A Grupa for season 2014-15. His teammate Tsvetelin Chunchukov won the first prize.
2015-16 season
For Botev Plovdiv season 2015-16 was marked with a lot of changes of the managers. Despite this Milen Gamakov was regularly included in the starting lineup. In February 2016, due to a lot of injuries of his team mates, Nikolay Kostov started using Gamakov as a central defender. On 13 March 2016, Gamakov played as a midfielder and scored one of the goals for the 3-1 win over Cherno More Varna.
In June 2016, Gamakov signed with Polish Ekstraklasa side Lechia Gdańsk. He spent the second half of the 2016–17 season on loan at Ruch Chorzów.
Slavia Sofia
On 1 June 2018, Gamakov signed a two year contract with Slavia Sofia.
Club statistics
International career
Under 21
Gamakov made him international debut for Bulgaria U21 in a friendly match against Azerbaijan U21 won by Bulgaria with 3:1. Gamakov scores a goal in the additional time. Antoni Zdravkov was appointed as manager of the Bulgaria national under-21 football team in October 2014 and he selected Gamakov as the new captain of the team. Milen Gamakov missed the game against Wales U21 due to a ban. In the next game, on 9 June 2015, he played 90 minutes during the 1-0 win in a friendly game with Cyprus U21. In September 2015 Gamakov was in the starting lineup for the 0-2 away victory over Romania U21 and the 3-0 home win over Luxembourg U21. He was the captain of the team and played 90 minutes in both games. On 25 March 2016 Gamakov was in the starting lineup as a captain for the goalless draw with Wales U21. Four days later, on 29 March, he played in another goalless draw, this time against Luxembourg U21. On 21 May 2016 Gamakov was in the starting lineup during the 0-1 defeat from France U21. On 6 June he played during the 0-2 defeat in a friendly game from Norway U21.