Lafferty began his professional career with English side Burnley, where he made 89 appearances. He signed for Rangers in 2008 for £3.25 million and won three Scottish Premier League titles, the Scottish Cup once and the Scottish League Cup twice with the club. In 2012 Lafferty chose not to transfer over to the new company which owns and runs Rangers, moving to Switzerland's FC Sion. He signed for Serie B club Palermo in 2013 and led them to promotion as champions in his only season before joining Norwich City. He spent time on loan with Turkish club Çaykur Rizespor and back in England with Birmingham City. After just over a year back in Scotland with Heart of Midlothian, Lafferty re-signed for Rangers in August 2018, and then spent short spells with Sarpsborg 08, Sunderland and Reggina.