Preston born inside forward Billy Kirby played junior football for Emmanuel Rovers in 1899 before joining hometown First Division club Preston North End in November 1900, although in his first spell at Preston he didn’t make a first team appearance. He joined non league Oswaldtwistle Rovers in 1901 before moving to Southern League Swindon Town in 1902, scoring 11 goals in 33 appearances during 1902-03. He joined West Ham United in the summer of 1903, where he scored on his debut at Millwall, scoring 11 times in 36 appearances before returning to Swindon Town at the end of the 1903-04 season. His second spell at Swindon saw 4 goals in 21 appearances, before joining Portsmouth in March 1905.
Over the next 6 seasons at Fratton Park he was a regular goalscorer, and was Portsmouth’s top scorer when the club came second in the Southern League Championship in 1906-07. He received a benefit of £220 in October 1910 after scoring 100 goals in all competitions for Portsmouth, for whom he hit 5 hat tricks. In all (excluding Western League appearances) he scored 85 goals in 236 appearances before re-joining Preston North End in May 1911.
His Football League debut came at Sheffield Wednesday in September 1911, nearly 11 years after he first joined Preston, and he top scored with 14 goals in 39 appearances during the campaign, which ended in Preston’s relegation. He stayed with the club in the Second Division, and scored 8 goals in 17 appearances as they immediately returned to the First Division as Second Division Champions.
In the close season of 1913 he joined Southern League Exeter City but made only 5 appearances before joining Merthyr Town the same October. He scored 6 goals in 29 appearances for Merthyr during 1913-14.
Kirby served in the Royal Engineers during the First World War, prior to being invalided out and working at the Royal Arsenal. He played for Croydon Common in 1915-16 scoring 6 goals in 16 games in Wartime fixtures and he played in their last ever game. He also played 18 games for Brentford, scoring twice, the following season, 1916-17. He rejoined the Royal Engineers in 1917 and was killed at Passchendaele in October that year while serving with the 6th (Pioneer) Battalion. He is buried at Bard Cottage Cemetery, Belgium.