Born in Belfast, Kearns began his grassroots career in the youth team of his local club St Oliver Plunkett. He joined the youth team of English club West Ham United in July 2007, having been the player of the tournament at the Ballymena International Tournament in 2006. He soon established himself in the under-18 team and went on to spend three years with the club from 2007 to 2010. After being released by West Ham in May 2010, Kearns signed for Dundalk of the League of Ireland Premier Division in August on a short-term contract. He made his debut in a 1–1 draw with University College Dublin, before going on to make 12 appearances in his first season. Kearns scored his first competitive goals for Dundalk on 14 February 2011 with a hat-trick against Linfield in the Setanta Sports Cup. Kearns played in Dundalk's seven matches in their run to the Setanta Sports Cup Final, where his team lost 2–0 to Shamrock Rovers.
Peterborough United
Kearns signed a three-year contract with English Championship club Peterborough United on 30 August 2011 for an undisclosed fee. He made his debut for Peterborough on 24 September, in a 1–0 defeat against his former club, West Ham United, coming on as an 89th-minute substitute for Lee Frecklington. He made his first start for Peterborough on 17 December in a 1–0 victory at home to Coventry City and was named man of the match, also playing a part in the buildup to the goal when laid the ball off to Paul Taylor, who assisted with Emile Sinclair's goal. He finished his first season at Peterborough with 21 appearances. Kearns signed for League Two club York City on 4 October 2012 on a one-month loan, making his debut two days later as a 66th-minute substitute in a 0–0 draw at home to Rotherham United. On 1 November, the loan was extended for another two months. However, he was recalled by Peterborough on 29 November, after making 12 appearances for York. In January 2013, it was confirmed that Bradford City, along with Rotherham and York were interested in signing Kearns. He signed for League Two club Rotherham on 9 January 2013 on loan until the end of the 2012–13 season, making his debut on 13 January as a 51st-minute substitute in a 2–0 home defeat to Barnet. He made 10 appearances for Rotherham as they finished the season as League Two runners-up, earning automatic promotion to League One. Kearns signed for League Two team Chesterfield on 11 March 2014 on a one-month loan and made his debut that day as a 66th-minute substitute for Jimmy Ryan in a 1–1 draw away to AFC Wimbledon. On 14 April 2014, his loan was extended until the end of the 2013–14 season. He made 10 appearances as Chesterfield won the League Two title and thus promotion to League One. Kearns was released by Peterborough at the end of the 2013–14 season.
Later career
He signed a two-year contract with newly relegated League Two club Carlisle United on 11 July 2014. He left the club on 1 September 2015 after his contract was cancelled by mutual consent. Kearns signed for NIFL Premiership club Glenavon on 17 October 2015. He was previously in the advanced stages of talks with another NIFL Premiership club Linfield after leaving Carlisle, but Linfield were unable to complete the deal. It was against Linfield that Kearns would play his final game for the club, as a late substitute in the 2015–16 Irish Cup Final, which Glenavon won 2–0. Kearns signed an 18-month contract with League of IrelandPremier Division club Sligo Rovers on 5 July 2016. He signed for League of Ireland Premier Division club Limerick on 29 November 2017 in preparation for the 2018 season. He signed for NIFL Premiership club Linfield on 10 July 2018 on a two-year contract.
International career
Kearns represented Northern Ireland in a series of UEFA European Under-17 Championship qualifiers in March 2008. However, in 2010 he switched allegiances to the Republic of Ireland, going on to represent them at under-19, under-21 and under-23 levels. The IFA contested the player's decision to switch national allegiances. He was capped once by the League of Ireland XI, playing in their 5–0 defeat to Celtic at the Aviva Stadium on 31 July 2011.