Grant played junior hockey with the Langley Chiefs of the British Columbia Hockey League in the 2007–08 season. He scored 24 goals and 63 points in his rookie season and was drafted in the 2008 NHL Entry Draft by the Ottawa Senators. Grant returned to Langley for one more season before going to Michigan State University. In his freshman year at MSU, Grant played in 38 games and was an Honorable Mention for the CCHA All-Rookie Team. Following his sophomore season at Michigan State, Grant chose to leave MSU and signed a three-year entry-level contract with Ottawa March 10, 2011. Grant made his professional debut immediately with Ottawa's AHL affiliate, the Binghamton Senators and was a member of the Binghamton Calder Cup-winning championship team. Grant spent the next full season with Binghamton and returned to Binghamton for the 2012–13 season. On February 16, 2013, Grant made his NHL debut in a game against the Toronto Maple Leafs. His final season with Binghamton was 2014–15. Grant was not offered a new contract by the Senators and he became a free agent. On July 1, 2015, Grant signed a one-year contract with the Calgary Flames. On July 2, 2016, Grant signed a one-year two-way contract as a free agent with the Buffalo Sabres. After a successful training camp with the Sabres, he made the opening night roster to begin the 2016–17 season. Primarily centering the fourth-line, Grant appeared in 35 games for 3 assists with Buffalo before he was placed on waivers. Grant was claimed by the Nashville Predators the following day on January 11, 2017, and on February 6, 2017 after 6 games with the Predators he was subsequently reclaimed on waivers by Buffalo after being waived by Nashville. He was immediately assigned to AHL affiliate, the Rochester Americans. He later appeared in 5 further games with the Sabres, playing out the rest of the season in regaining his scoring touch with the Americans to contributed 19 points in 23 games. On July 1, 2017, Grant signed a one-year, one-way deal as a free agent with the Anaheim Ducks. With the Ducks suffering through early injuries at training camp, Grant made the opening night roster for the 2017–18 season. Grant added an initial offensive presence with the Ducks, before finding his role on the Ducks third-line and responding with a career year, where he produced 12 goals, 12 assists and 24 points in 66 games. Having played his first full season in the NHL, Grant left the Ducks as a free agent and agreed to a one-year, $650,000 contract with the Pittsburgh Penguins on July 20, 2018. Having attended the Penguins training camp and pre-season, Grant was cut from the opening night roster and upon clearing waivers was assigned to begin the 2018-19 season, with AHL affiliate, the Wilkes-Barre/Scranton Penguins. Grant was recalled after 5 games in Wilkes-Barre/Scranton and added depth to the Penguins in recording 2 goals and 5 points in 25 games. On January 16, 2019, Grant was returned to the Anaheim Ducks after a trade with the Penguins in exchange for Joseph Blandisi. Grant played out the remainder of the season on the Ducks roster, contributing with 2 goals and 9 points in 31 games. On June 20, 2019, Grant was re-signed by the Ducks to a one-year $700,000 contract extension. In the following 2019–20 season, Grant established a career high 14 goals through 49 games with the Ducks, before he was dealt at the NHL trade deadline to the Philadelphia Flyers in exchange for Kyle Criscuolo and a 2020 fourth-round pick on February 24, 2020.