The Stockport-born defender began his career with Manchester City coming through the youth ranks before signing professional terms at the Etihad in 2015. He made his senior debut that season whilst on loan with Doncaster Rovers in League One, a 2-2 draw against Swindon Town in September 2015.
After three appearances during a month’s loan at the Keepmoat, Horsfield further progressed with City signing a one-year extension in 2017 and heading out on loan to NAC Breda in the Dutch Eredivisie in January 2017. In March of that year, Horsfield scored his first senior goal against Fortuna Sittardr
After making 16 appearances on loan, Horsfield signed permanently for NAC that summer before making a further 10 appearances in the Dutch top flight.
In the summer of 2018 he opted to return to England, signing a 2-year deal with Scunthorpe United in League One. His debut came on the opening day of the 2018/19 campain in a 2-1 win away to Coventry City. However, in January 2019 he went out on loan to Dundee FC for the remainder of the season totalling 11 appearances.
After failing to make an appearance during the 2019/20 season for Scunthorpe, the Iron allowed Horsfield to head out on loan, joining Wrexham for a month. He made his Dragons debut in an FA Cup tie at Chesterfield with the game ending 1-1. His league debut for the Dragons came at Dagenham & Redbridge with Wrexham losing out 2-1.
During his fourth appearance for the Dragons, Horsfield suffered a season-ending injury in a league match against Bromley. He returned and recovered at his parent club before his release at the end of the campaign.
In August 2020 he joined Wrexham on trial to test his fitness and signed a one-year deal with the club a few weeks later.