Dopo aver giocato nelle giovanili del Grasshoppers, nel 2003 passa alle giovanili del Zurigo. Con la squadra Under-21 colleziona ben 47 presenze e 12 gol, riuscendo anche a debuttare in prima squadra, in campionato nel 2006. Nel 2007 fa il suo debutto in Coppa UEFA.
Il prestito allo Sciaffusa
Nel gennaio del 2008 passa in prestito allo Sciaffusa, squadra militante nella Challenge League, la Serie B svizzera, dove colleziona 16 partite e segnando anche 3 gol.
Il prestito al Bellinzona
Nel luglio del 2008 passa sempre in prestito al Bellinzona, con la possibilità di giocare con continuità nella Super League e qui vi rimane per una stagione e mezza collezionando 30 presenze e 3 gol.
Neuchâtel Xamax
Nel gennaio del 2010 viene acquistato a titolo definitivo dal Neuchâtel Xamax per 100.000 euro, qui però gioca poco, solo 13 presenze ed un gol, così nel gennaio 2011 viene ceduto in prestito all'Aarau.
Il prestito all'Aarau
Nel gennaio del 2011 passa in prestito all'Aarau, qui alla prima stagione gioca 15 partite e segna in 5 occasioni, invece nella seconda stagione disputa un gran campionato mettendo a segno ben 17 reti in 26 partite, attirando su di sé le attenzioni di diversi club della massima serie svizzera.
Grasshoppers
Nel luglio del 2012 viene acquistato a titolo definitivo dal Grasshoppers, squadra della massima serie svizzera. Nella sua prima stagione colleziona tra campionato e coppa, 33 presenze e 6 reti. Nella seconda stagione invece gioca in 32 occasioni realizzando ben 19 reti (record personale in carriera), grazie alle quali si aggiudica anche la classifica dei capocannonieri del campionato, (tra l'altro primo calciatore albanese a vincerla). Terminata la stagione 2013-2014, molte squadre si interessano a lui.
Basilea
Il 28 giugno 2014 viene acquistato a titolo definitivo dal Basilea per 1,5 milioni di euro[3] e firma un contratto quadriennale con scadenza il 30 giugno 2018[4] Nella sua prima stagione vince nuovamente, per la seconda volta consecutiva, la classifica marcatori del campionato svizzero con 22 gol.
Colorado Rapids
Il 1º febbraio 2016 viene acquistato a titolo definitivo dai Colorado Rapids per 3 milioni di euro e firma un contratto triennale.
Ha fatto il suo debutto ufficiale con la maglia delle Aquile rossonere il 14 agosto 2013 nella partita amichevole contro l'Armenia, subentrando al 55', match vinto dall'Albania per 2-0.
Viene convocato per gli Europei 2016 in Francia[5], scende in campo in occasione della partita giocata contro la Svizzera.
^(DE) Basel verpflichtet Shkëlzen Gashi., su fcb.ch, 28 giugno 2014. URL consultato il 17 agosto 2014 (archiviato dall'url originale il 19 agosto 2014).