Kaastrup startede sin fodboldkarriere i SSV Fodbold, der er en sammenslutning mellem samarbejdsklubberne Stilling, Solbjerg og Virring, hvor han blandt andet blev trænet af sin mor.  AGF Kaastrup skiftede i sommeren 2013 som U/14-spiller fra SSV Fodbold til AGF. Han var en del af talenttræningen i AGF, mens han stadig spillede i SSV Fodbold. Han skrev under på sin første ungdomskontrakt 1. januar 2016, hvor han netop var fyldt 15 år. Kontrakten havde en varighed af tre år. Han var da fast mand på U/17-holdet som førsteårs U/17-spiller. Det fortsatte som andenårs U/17-spiller i U/17 Ligaen i 2016-17-sæsonen, hvor det blev til 11 mål i 26 kampe, således han var med til at hjælpe AGF til en 1. plads i landets bedste U/17-række. Dette resulterede i, at han fra starten af 2017, mens han stadig var U/17-spiller, trænede fast med ved klubbens førstehold. Han fik sin debut for AGF's førstehold den 14. juli 2017 i 1. spillerunde af Superligaen 2017-18, da han blev skiftet ind i det 75. minut i stedet for Jakob Ankersen i et 1-2-nederlag hjemme til AC Horsens. Da var han 16 år og 198 dage gammel, og det gjorde ham til den yngste debutant for AGF i Superligaen nogensinde. Han var samtidig den fjerdeyngste debutant nogensinde i Superligaen. Han skrev ulitimo marts 2018 under på en forlængelse af sin kontrakt frem til udgangen af 2020. Det gjorde ham samtidig til fuldtidsprofessionel modsat tidligere, hvor han var på ungdomskontrakt. Han blev den 27. maj 2019 udlejet til den tyske klub Borussia Dortmund. Aftalen havde en varighed af et år, og han skulle spille på klubbens andethold.  Landsholdskarriere Han fik sin debut i landsholdsregi for U/16-landsholdet den 6. oktober 2015, da han startede inde og spillede alle 90 minutter i et 0-2-nederlag på Skive Stadion. Det blev til yderligere seks kampe for U/16-landsholdet under tre forskellige samlinger i henholdsvis Danmark ved førnævnte kamp samt en mere, to venskabskampe i Holland og tre venskabskampe i Polen. Han scorede under samlingen i Polen sit første mål i en 3-2-sejr over Schweiz den 18. maj 2016. I august 2016 debuterede han på U/17-landsholdet ved Nordic Cup mod Cypern, hvor han blev skiftet ind efter 41 minutter i stedet for Emil Frederiksen. Han spillede i alt tretten kampe for U/17-landsholdet, hvor han scorede tre mål mod henholdsvis Island (2-0-sejr) ved Nordic Cup på Vousuula i Helsinki, Montenegro (1-0-sejr) på Nykøbing Falster Idrætspark i en venskabskamp og Liechtenstein (11-0-sejr) i en EM-kvalifikationskamp.