Treningi piłki nożnej rozpoczął w Miranda Magpies, skąd trafił do Sutherland Sharks. Następnie trenował w New South Wales Institute of Sport (NSWIS), a następnie spędził dwa lata w Australian Institute of Sport. W sezonie 2013 rozegrał 16 meczów w barwach tego klubu i strzelił 1 gola. W lipcu 2014 podpisał dwuletni kontrakt z Sydney FC.
W styczniu 2016 podpisał trzyipółletni kontrakt z Rosenborg BK. Zadebiutował w tym klubie 19 marca 2016 w wygranym 1:0 spotkaniu z Strømsgodset IF. W 2016 zdobył z klubem mistrzostwo i puchar Norwegii. W styczniu 2018 został wypożyczony na pół roku do RC Lens z opcją wykupu i podpisania trzyletniego kontraktu. Latem 2018 powrócił do Rosenborgu.
Latem 2019 przeszedł do Aarhus GF. W nowej drużynie zadebiutował 11 września w pucharze Danii w wygranym 6:2 meczu z Marstal/Rise IF, w którym zdobył dwie bramki, natomiast w Superligaen zagrał po raz pierwszy 20 września 2019 w wygranym 2:1 spotkaniu z Odense BK. 31 sierpnia 2021 został piłkarzem francuskiego Grenoble Foot 38.