Lammers voetbalde in de jeugd van VOAB tot hij in 2005 werd opgenomen in de jeugdopleiding van Willem II. Die verruilde hij in 2010 voor die van PSV. Hier tekende hij in juli 2015 een driejarig profcontract.[2] Lammers debuteerde op 10 augustus 2015 in het betaald voetbal, toen hij met Jong PSV een wedstrijd in de Eerste divisie speelde tegen Go Ahead Eagles. Jong PSV won het duel met het kleinste verschil na een treffer van Olivier Rommens. Lammers speelde de volledige wedstrijd.[3]
Lammers maakte op 8 augustus 2016 in de eerste wedstrijd van het seizoen 2016/17 vier doelpunten tegen FC Den Bosch. Dit was voor hem nog geen speler van Jong PSV gelukt sinds het team in 2013 toetrad tot de Eerste divisie.[4] Met een ononderbroken doelpuntenreeks in de 9e, 33e en 40e minuut maakte hij een zuivere hattrick, zijn eerste in het betaald voetbal. Nadat Philippe Rommens de score had uitgebreid en FC Den Bosch ondanks een rode kaart terug wist te komen naar 4–4, maakte Lammers in de 65e minuut het winnende doelpunt. Daarna werd hij vanwege een blessure gewisseld.[5][6]
PSV
Lammers debuteerde op 21 september 2016 in het eerste elftal van PSV, tijdens een met 4–0 gewonnen wedstrijd in de eerste ronde van het toernooi om de KNVB beker, thuis tegen Roda JC Kerkrade. Hij viel die dag in de 78e minuut in voor Gastón Pereiro.[7] Lammers' debuut in de Eredivisie volgde op 15 oktober 2016. Hij viel die dag in de 90e minuut in voor Bart Ramselaar tijdens een thuiswedstrijd tegen Heracles Almelo (1–1). In beide wedstrijden droeg hij rugnummer vijftig. Lammers verlengde in januari 2017 zijn contract bij PSV tot medio 2021.[8] Hij maakte op 7 mei 2017 zijn eerste doelpunt in de hoofdmacht. Die dag zorgde hij met een kopbal voor 1–1 tijdens een competitiewedstrijd uit bij FC Groningen. Zijn doelpunt bepaalde die dag ook de eindstand. Lammers eindigde het seizoen met vijf wedstrijden in de hoofdmacht, waarbij hij in de laatste competitieronde ook nog scoorde thuis tegen PEC Zwolle (eindstand 4–1). Met Jong PSV eindigde hij op de vierde plaats in de Eerste divisie. Hiervoor maakte hij dat jaar zeventien doelpunten, één minder dan clubtopscorer Albert Guðmundsson.
Trainer Phillip Cocu hevelde Lammers in juli 2017 definitief over naar de selectie van het eerste elftal van PSV.[9] Hij maakte op 3 augustus 2017 zijn debuut voor PSV in internationaal verband. Hij viel die dag in de 76e minuut in voor Davy Pröpper tijdens een met 1–0 verloren wedstrijd in de derde voorronde van de Europa League 2017/18, uit tegen NK Osijek. Hij kwam gedurende het seizoen 2017/18 zeven keer in actie in het eerste.
Voor het seizoen 2019/20 keerde hij terug naar PSV, maar raakte tijdens de wedstrijd om de Johan Cruijff Schaal geblesseerd aan de knie, waardoor hij het eerste deel van het seizoen miste. Lammers maakte op 23 januari 2020 zijn rentree, in een met 2–0 verloren bekerduel uit bij NAC Breda. Hij maakte op 16 februari 2020 voor het eerst sinds mei 2017 een competitiedoelpunt voor PSV. Hij zette de Eindhovenaren toen vanuit een strafschop op voorsprong in een met 3–0 gewonnen competitiewedstrijd uit bij ADO Den Haag.
Atalanta Bergamo
In september 2020 maakte Lammers de overstap van PSV naar Atalanta Bergamo, dat €10.000.000,- voor hem betaalde.[10] Op 26 september maakte hij als invaller tegen Torino FC zijn debuut voor Atalanta. In oktober scoorde hij zijn eerste twee (en enige twee) doelpunten voor Atalanta. Eerste op 4 oktober als invaller tegen Cagliari Calcio (5-2 winst), daarna op 17 oktober als invaller tegen SSC Napoli (4-1 verlies). Tijdens zijn eerste seizoen bij Atalanta startte hij maar één keer in de basis.
Eintracht Frankfurt
In seizoen 2021/22 werd hij verhuurd aan Eintracht Frankfurt. Hij maakte op 12 september als basisspeler zijn debuut tegen VfB Stuttgart.[11] In de twee daaropvolgende wedstrijden scoorde Lammers tweemaal: eerst op 16 september in de UEFA Europa League tegen Fenerbahçe SK (1-1) en daarna op 19 september tegen VfL Wolfsburg (1-1). Vanaf oktober verdween hij echter uit de basiself en daarna kwam hij maar weinig meer tot spelen. Hij speelde 22 wedstrijden voor Eintracht Frankfurt. Daarop keerde hij terug bij Atalanta.
Empoli
In het seizoen 2022/23 werd hij verhuurd aan Empoli. Daar maakte hij op 14 augustus zijn debuut tegen Spezia Calcio 1906. Op 5 september tegen US Salernitana 1919 scoorde hij zijn eerste en enige doelpunt voor Empoli. Hoewel hij tot de winterstop slechts één wedstrijd miste, verbrak Empoli toch de huurovereenkomst met Lammers.
Sampdoria
De tweede seizoenshelft van het seizoen 2022/23 speelde Lammers op huurbasis voor UC Sampdoria, dat streed tegen degradatie. Op 4 januari maakte hij tegen US Sassuolo zijn debuut voor Sampdoria. Hij scoorde op 8 april zijn enige goal voor Sampdoria in de degradatiekraker met US Cremonese, die met 2-3 verloren ging. Sampdoria eindigde dat seizoen laatste in de Serie A en Lammers keerde terug bij Atalanta.
Rangers
In de zomer van 2023 legde Schotse topclub Rangers FC 3,5 miljoen euro neer om Lammers over te nemen van Atalanta. Bij Rangers had hij concurrentie van twee andere ex-Eredivisie-spitsen, Danilo Pereira da Silva en Cyriel Dessers. Op 5 augustus maakte hij als rechtsbuiten zijn debuut tegen Kilmarnock FC. Een week later scoorde hij als nummer tien zijn eerste goal voor Rangers in een 4-0 overwinning op Livingston FC. Op 1 november was hij goed voor een goal en een assist tegen Dundee FC (0-5).
FC Utrecht
De tweede seizoenshelft werd Lammers opnieuw uitgeleend, ditmaal aan FC Utrecht. Op 14 januari maakte hij tegen Vitesse zijn debuut. Op 11 februari was hij tegen Fortuna Sittard (4-0) goed voor zijn eerste goal voor FC Utrecht en zijn derde assist. Vanaf 9 maart begon hij aan een reeks, waar hij achtereenvolgens scoorde tegen Almere City FC (1-1), N.E.C. (1-0), Feyenoord (2-4), PEC Zwolle (5-1) en Sc Heerenveen (2-3), Go Ahead Eagles (2-1) en RKC Waalwijk (2-2).
FC Twente
In de zomer van 2024 nam FC Twente Lammers over van Glasgow Rangers. De spits tekende een contract tot medio 2027.[12]
Lammers debuteerde op 3 september 2015 in Nederland onder 19. Daarmee nam hij in juli 2016 deel aan het EK onder 19. Hij scoorde in zowel de met 3–1 gewonnen wedstrijd tegen Kroatië onder 19 als in het met 2–1 verloren duel tegen Engeland onder 19. Doordat Lammers en zijn teamgenoten ook van de latere toernooiwinnaar Frankrijk onder 19 verloren, plaatsten ze zich niet voor de halve finale. Er volgde wel nog een wedstrijd voor kwalificatie voor het WK onder 20 in 2017, tegen Duitsland onder 17. Hierin maakte Lammers in de verlenging 3–3, waarna de Duitsers de beslissende strafschoppenserie wonnen. Lammers debuteerde in 2016 in Nederland onder 20 en op 24 maart 2017 in Nederland onder 21.