Rangers Shinnie made his first-team debut for
Rangers on 17 March 2007, coming on as a substitute for
Dado Pršo in a
Scottish Premier League match against
Aberdeen. On the same day, he scored two goals for Rangers' under-19 team against
St Mirren under-19s. In April, he scored the first goal in the 5–0 win over rivals
Celtic as Rangers won the 2007
Scottish Youth Cup Final. He went on to sign a new three-year professional contract to expire in the summer of 2010.
Dundee (loans) Scottish First Division club
Dundee signed Shinnie in November 2008 on loan for the rest of the season. On 29 November, he made his debut, coming on as a substitute in a 1–1 draw against
St Johnstone; three months later on 21 February 2009, he scored his first senior goal in a 4–1 win over
Livingston. Towards the end of the season, he scored an
own goal in a 2–0 defeat to
Clyde, Shinnie broke his foot during pre-season, and once back to fitness, returned to Dundee in January 2010 on loan until the end of the season. As in his first spell, he was a first-team regular for the duration of the loan spell.
Inverness Caledonian Thistle Released by Rangers at the end of the 2010–11 season, Shinnie signed a two-year contract with SPL club
Inverness Caledonian Thistle after impressing as a trialist in pre-season. He made his debut against
Motherwell at
Fir Park on 23 July. Shinnie scored his first goal for Inverness in a 2–1 victory over St Mirren on 1 October, On 17 December 2011, he came on as a substitute against former club Rangers at
Ibrox Park and scored to make the score 1–1. It was his seventh goal of the season but Inverness lost the game 2–1. Shinnie scored the second goal as Inverness beat
Dunfermline Athletic 3–1 in the
Scottish Cup fourth round replay on 18 January 2012, but broke a
metatarsal during the match. The injury required surgery which was expected to keep him out for the rest of the season, although he was fit enough to return for the last three games. By mid-October the following season, Shinnie had scored seven goals, and manager
Terry Butcher was anxious for him and teammate
Josh Meekings to extend their contracts. At the end of the month he scored the first goal in Inverness CT's 3–0
League Cup quarter-final defeat of Rangers at Ibrox. His form earned him his first call-up to the full
Scotland squad, and when he took the field in the
friendly against
Luxembourg, he became the first Inverness CT player to be capped for Scotland at senior level. but had still not ruled out staying with Inverness CT. Shinnie scored the opening goal in the League Cup semi-final, but opponents
Heart of Midlothian equalised, and then won the match in a
penalty shootout. Shinnie's goalscoring form dipped as the season wore on – he produced only three goals in the 17 matches after the League Cup Final, compared with thirteen from 28 before it. and a place in the
PFA Scotland SPL Team of the Year Birmingham City in 2013 pre-season In April, Shinnie signed a pre-contract agreement to join English
Football League Championship club
Birmingham City when his Inverness contract expired at the end of the season. He stated the move was "a difficult decision", but that "a three-year deal in a good league like the Championship was the right decision." and that he hoped the move would help him push for a place in the national team. Shinnie made his Birmingham debut in a 1–0 defeat to
Watford on the opening day of the season. He should have scored at
Queens Park Rangers in September, when he "blazed his shot over the crossbar" after Birmingham broke at pace, and he spent four games out of the league side, during which time he worked in the gym to improve his physical strength and in training on sharpness. He returned to orchestrate a 4–0 win against
Millwall when manager
Lee Clark's change of formation allowed him to play in his preferred
playmaker role, and his first league goal opened the scoring in a 2–0 win at
AFC Bournemouth on 14 December. He was regularly involved on matchdays for a time, but it was often as a substitute or in an unaccustomed wide position, and he was out of the side entirely between mid-January and March 2014. and scored a headed goal in a 3–2 win away at fellow relegation candidates Millwall, but was substituted early in the next match when Clark wanted to field an extra striker. He was an unused substitute in the final match of the season, as Birmingham came back from 2–0 down at
Bolton Wanderers to avoid relegation on
goal difference via a stoppage-time equaliser and other results going in their favour. Shinnie started the opening match of the
2014–15 season, but was omitted from the next two, and then injured his back playing for the under-21 side. His next first-team appearance was at
Blackburn Rovers on 21 October when he was recalled to the squad by the
caretaker managers the day after Clark was sacked; he came on in the 80th minute and came close to scoring an equaliser when his shot from struck the underside of the crossbar but failed to cross the line. Incoming manager
Gary Rowett used Shinnie as the creative player in his preferred
4–2–3–1 formation, By December, the
Birmingham Mail reporter thought he was "enjoying the finest spell of his Birmingham career", and a goal in a 6–1 defeat of
Reading was a deserved reward for what Rowett called "fantastic" work-rate and build-up play. In March 2015, he scored the winner against Clark's new club,
Blackpool, but then lost his regular place to loanee
Diego Fabbrini. Shinnie signed a two-year contract extension in the 2015 close season, but lost his first-choice playmaker role to loanee
Jon Toral, whose goalscoring – and the fact that he was part of a winning side – made him hard to leave out.
Loans Shinnie joined fellow Championship club
Rotherham United on 27 January 2016 on loan until the end of the season. He made his debut three days later, as a second-half substitute with his side 2–1 down at home to
Charlton Athletic; the match finished as a 4–1 defeat. He made his debut in Hibs' next match, coming on after 69 minutes with his side 2–0 ahead against St Mirren. He scored three goals from 34 appearances,
Luton Town Shinnie was released by Birmingham at the end of the
2017–18 season, and on 1 June 2018, he signed for Luton Town on a permanent two-year contract.
Charlton Athletic Shinnie joined League One club Charlton Athletic on 16 October 2020 on loan for the
2020–21 season. He scored his first goal for Charlton in a 2–0 win over
Oxford United on 27 October 2020. On 19 February 2021, Shinnie's loan was made into a permanent deal until the end of the 2020–21 season. On 18 May 2021, it was announced that Shinnie would leave Charlton Athletic at the end of his contract.
Livingston Shinnie joined
Scottish Premiership club
Livingston on a two-year deal on 19 July 2021. ==International career==