Kanunnikov joined Zenit U21s in 2009 and shortly after started to train with the first team, appearing on the bench on occasion.
He finally made his Premier League debut on 23 August 2009, coming as a last-minute substitute against Lokomotiv Moscow.
On 10 May 2010 his first goal in Russian Premier League was against Amkar Perm.

On 17 January 2011, Kanunnikov was on loan to Tom Tomsk for the 2011–12 season.

On 2 March 2018, he was released by mutual consent from his contract by Rubin Kazan.

On 7 March 2018, he signed with SKA-Khabarovsk until the end of the 2017–18 season.

On 27 July 2018, he signed a one-year contract with Krylia Sovetov Samara.
Kanunnikov joined Zenit U21s in 2009 and shortly after started to train with the first team, appearing on the bench on occasion. He finally made his Premier League debut on 23 August 2009, coming as a last-minute substitute against Lokomotiv Moscow. On 10 May 2010 his first goal in Russian Premier League was against Amkar Perm.
On 17 January 2011, Kanunnikov was on loan to Tom Tomsk for the 2011–12 season.
On 2 March 2018, he was released by mutual consent from his contract by Rubin Kazan.
On 7 March 2018, he signed with SKA-Khabarovsk until the end of the 2017–18 season.
On 27 July 2018, he signed a one-year contract with Krylia Sovetov Samara.
Maksim Kanunnikov