Swanson started his career at Scottish Third Division side Berwick Rangers before moving to Scottish Premier League club Dundee United in 2008. He moved to England in 2012 to play for Peterborough United. After two years with Peterborough he signed for Coventry City, but he then moved back to Scotland on loan at St Johnstone. Swanson was released by Coventry in September 2015 and then signed for Heart of Midlothian, where he spent five months before returning to St Johnstone. Swanson then played on Hibernian for a brief period before returning to St Johnstone once again in 2018. In 2020 he joined East Fife on a two-year deal and left in summer of 2022.
Swanson completed a move to the Scottish Premier League with Dundee United on 1 January 2008 after agreeing terms in October 2007, having previously turned down a move to Hamilton Academical.[4] Making his debut the following day as a substitute in the 4–1 win over Hearts, Swanson scored his first goal for United in a 2–0 victory over Motherwell in March 2008, going on to feature in a number of matches that season. In 2008–09, Swanson was used mainly as a substitute, starting in only seven of his 30 league appearances. In the 2009–10 season, Swanson started United's opening three league matches, assisting three of the club's four goals in the process.
His good performances for United meant that Swanson was selected for the Scotland squad in October 2011.[5] Soon afterwards, however, Swanson strained a medial ligament.[5] At the end of the 2011–12 season, Swanson's contract expired and he opened talks with Championship side Peterborough United over a possible move to England.[6]
Peterborough United
On 6 June 2012, Swanson signed a two-year contract with English Championship club Peterborough United after making over 100 appearances for Dundee United.[7]
The midfielder made a total of 79 appearances scoring 5 goals before rejecting a new contract offer with Posh at the end of the 2013-2014 season.
Swanson won the EFL Trophy with Peterborough United at Wembley Stadium in 2014.
Swanson signed on loan for St Johnstone for the latter part of the 2014–15 season on 3 February 2015.[9] He returned to Coventry City for close season 2015, but had his contract terminated on 1 September 2015 by mutual consent.[10]
Heart of Midlothian
Swanson signed for Heart of Midlothian on 9 September 2015, agreeing a contract to the end of the 2015–16 season.[11]
St Johnstone (second spell)
After just five months with Hearts, Swanson signed for his former side St Johnstone in February 2016 on an 18-month deal.[12]
In April 2017, Swanson brought St Johnstone in to disrepute after becoming involved in an on-pitch brawl with teammate Ricky Foster. Both players were suspended by the club[13] and were subsequently fined four weeks' wages.[14]
Hibernian
On 25 April 2017, Hibernian announced that they had signed Swanson on a pre-contract agreement.[15] Injuries restricted his appearances for Hibs in the first part of the 2017/18 season.[16] Swanson was linked with a return to St Johnstone in January 2018,[16] but he decided against this.[17] His contract with Hibs was cancelled on 31 August 2018.[18]
St Johnstone (third spell)
After his release from Hibernian, Swanson resigned for St Johnstone in September 2018, stating that he was "at his happiest" whilst playing for the Perth club.[19] He was released by the club in May 2020.[20]
East Fife
On 30 July 2020, Danny Swanson signed for East Fife, on a two-year deal.[21]