Roberts spent his youth career with Bellfield Boys Club in Kilmarnock during the 1991–92 season. He signed for Kilmarnock at the start of the 1992–93 season and stayed for 8 seasons. Roberts made 101 league appearances and scored 15 league goals. During 1999, Roberts was loaned out to Raith Rovers by Kilmarnock, where he made 3 league appearances and scored one league goal.
Roberts signed for Falkirk at the start of the 2000–01 season and stayed for one season, where he made 25 league appearances and scored 9 league goals. He then signed for Airdrieonians at the start of the 2001–02 season and made 36 league appearances and scored 12 league goals. Airdrieonians went out of business at the end of the season. He then signed for Dublin club Shelbourne. He played in the League of Ireland Premier Division in the summer of 2002.
Roberts signed for Paisley club St Mirren in the January 2003 transfer window for the remainder of the 2002–03 season. He made 13 league appearances and scored 3 league goals for the Paisley club. Roberts signed for Airdrie United at the start of the 2003–04 season and stayed for two seasons, where he made 62 league appearances and scored 3 league goals.
Roberts signed for Partick Thistle at the start of the 2005–06 season. Roberts scored a brace in his first game against Dumbarton. Roberts scored 22 goals during his first season at Firhill, as Partick Thistle gained promotion to the Scottish First Division via the play-offs. Roberts was one of 5 nominees for the Scottish First Division Player of the Year Award for the 2006–07 season. Roberts made 104 league appearances for Partick Thistle in his 4 seasons at the club and scored 30 league goals, as well as 17 goals in other competitions. His 47 goals for Thistle ensured that the Jags fans would hold him in high regard long after he left the club, particularly as many saw him as the player that led Thistle to promotion to the First Division.
Roberts signed for Ayr United in January 2009. On 18 September 2010, Roberts made history when he scored three penalty kicks for Ayr in a league fixture with East Fife. Roberts was sent off after a confrontation whilst celebrating his third.