Gavin played with St Patrick's Athletic's U19s in 2012/13 and 2013/14 and during his time at Richmond Park he made 1 senior appearance, coming on as a substitute in a 5-0 win over UCD on 1st October 2012. In the summer of 2014 he crossed the M50 to sign for Shamrock Rovers Reserve side which was competing in the First Division and he made his debut for the Rovers B side against Cobh Ramblers at St Colman's Park on 28 June 2014.
In January 2015 Gavin played with Athlone Town during their pre-season preparations. He impressed enough to sign for the club in February 2015. Gavin played twenty-four times during the 2015 First Division season scoring three goals, as Athlone finished fifth. In November 2015, Gavin moved to division rivals Shelbourne where he made his first appearance against Shelbourne at Tolka Park on the opening night of the 2016 season. His first goal for the Reds came three weeks later against Drogheda United, also at Tolka Park, and he finished the season with three goals from 22 league appearances..
In November, 2016 Gavin left Shelbourne to sign with Longford Town ahead of the 2017 campaign.