Вихованець молодіжної академії кременчуцького «Кременя». У 2017 році потрапив до структури «Ворскли».
У 2019 році почав залучатися до тренувань першої команди полтавчан. У футболці першої команди «Ворскли» дебютував 15 грудня 2019 року в переможному (2:1) домашньому поєдинку 18-о туру УПЛ проти львівських «Карпат». Денис вийшов на поле на 90+3-й хвилині, замінивши Дениса Васіна[1]. Загалом у сезоні 2019/20 зіграв з командою у 4 матчах чемпіонату і став фіналістом Кубка України, хоча у тому турнірі жодної гри не провів.
У вересні 2020 року був відданий в оренду в рідний першоліговий «Кремінь»[2], з яким згодом підписав повноцінний контракт. За три сезони у футболці кременчуцької команди провів за неї 59 матчів, в яких забив 19 голів.
У липні 2023 року на правах оренди перейшов до запорізького «Металурга». Протягом першої половини сезону футболіст виступав за запорізький клуб у ролі одного з основних гравців, чергуючи матчі у стартовому складі та з лави запасних, відзначившись за цей період 3 забитими голами та 2 результативними передачами у всіх турнірах. На початку 2024 року футболіст залишив запорізький клуб.
У березні 2024 року футболіст на правах орендної угоди приєднався до латвійського клубу Гробіня[3]. 10 березня 2024 року дебютував у Вірслізі матчем проти «Риги»[4]. У цьому сезоні залишався основним нападником клубу, забивши 4 голи у 33 іграх чемпіонаті і допоміг йому зберегти прописку в еліті, вигравши у плей-оф.