↑ Количество игр и голов за профессиональный клуб считается только для различных лиг национальных чемпионатов, обновлено по состоянию на 1 февраля 2022 года.
↑ Количество игр и голов за национальную сборную в официальных матчах.
Бой занимался футболом в различных африканских академиях, профессиональную карьеру он начал в ганском клубе «Харт оф Лайонз» в 2007 году. Его вскоре заметили скауты французского «Ренна» и взяли защитника на правах аренды в резервную команду клуба[3]. Во французской команде он принял участие почти во всех матчах первенства, после чего руководство клуба приняло решение выкупить трансфер Джона. За основную команду Бой был заявлен в сезоне 2010/2011. 13 февраля 2011 года в матче против «Ниццы» он дебютировал в Лиге 1[4]. 23 февраля в поединке против «Сошо» Джон забил свой первый гол за «Ренн»[5].
Летом 2015 года Бой на правах свободного агента присоединился к «Сивасспору». 30 августа в матче против «Османлыспора» он дебютировал за новый клуб[8]. В этом же поединке Джон забил свой первый гол за «Сивасспор». По итогам сезона клуб вылетел в Первый дивизион Турции, но Бой остался в команде. В 2018 году Бой покинул турецкий «Сивасспор» после истечения срока его контракта в июне.
21 июня 2018 года Бой перешёл во французский «Мец», с которым заключил соглашение на два года[9]. 30 июля в матче против «Бреста» он дебютировал в Лиге 2[10]. 19 апреля 2019 года в поединке против «Газелек» Джон забил свой первый гол за «Мец»[11]. По итогам сезона Бой помог клубу выйти в элиту. По окончании сезона 2019/2020 он продлил контракт с клубом на один год.