Born in the southern city of Gjirokastër, Batha moved to the capital Tiranë as a child where he joined the Partizani academy before moving to the academy of local rivals Tirana in 2005. He would remain at Tirana's academy until 2011, which is when he moved back to Partizani and signed his first professional contract at the age of 19. Partizani had been relegated to Kategoria e Dytë, the third-tier of Albanian football which is where Batha made his senior debut on 2 October 2011 in a 1–0 over Bilisht Sport.[4] He scored his first senior goals on 18 March 2012 against Albpetrol, scoring twice in the first half in the 2–0 win.[5] Batha helped Partizani finish top of the Kategoria e Dytë Group B table and achieve promotion back to Kategoria e Parë, before losing 3–1 to Group A winners Tërbuni in the Championship Final.[6]
Besa
Following an impressive season with Partizani in the third tier, Batha joined newly promoted Kategoria Superiore side Besa in the summer of 2012, where he made his top-flight debut in the opening game against Laçi, playing the full 90 minutes in the 1–1 draw.[7] He scored his first top-flight goal on 10 March 2013 in a 2–1 win over Tirana, scoring in injury time to win the game for Besa.[8]
Teuta
While at Besa in January 2014 Batha went to Teuta on a short-term loan as Besa were struggling
Partizani
In the summer of 2O14 Batha agreed to return to Partizani on a free. On 11 November 2015, Batha extended his contract with Partizani Tirana for another three seasons, keeping him at the club until 2018.[9]
Flamurtari
He ran down his contract with Partizani but hadn't found a club yet so Partizani gave him a special 9-extra-day contract to find a club. He joined Flamurtari
Tirana
On 18 June 2019, Batha was unveiled as the new player of KF Tirana, signing a one-year contract with an option of a further one, worth €5,000 a month.[10] On 27 October, during the 3–0 win at Luftëtari Gjirokastër, Batha missed his first career penalty; his attempt was saved by Panagiotis Paiteris.[11] During the match against title rivals Kukësi at Arena Kombëtare, Batha scored a free-kick in the 85th minute that served as a temporarily equalizer in an eventual 2–1 win, sending Tirana top of the table for the first time this season.[12] The following week, Batha scored two penalties against his ex team Partizani in a 5–1 home win, helping Tirana record their biggest win over their city rivals since 2005.[13][14]
He was instrumental for his side in midfield during the 2019–20 Albanian Superliga season, scoring 10 goals in 33 appearances, a personal best, as Tirana won the championship title for the 25th time in their 100th anniversary.[15] In 2019–20 Albanian Cup, where Tirana reached the final,[16] Batha scored once in five appearances, collecting in total 38 appearances and 11 goals. On 8 August 2020, Tirana announced to have signed Batha on a new one-year contract.[17]
Batha took squad number 10 ahead of the 2020–21 season, which was last worn by Edon Hasani who departed the club.[18] On 19 August, he captained Tirana for the first time in their UEFA Champions League first qualifying round match against Dinamo Tbilisi, which ended in a 2–0 away win.[19]
UTA Arad
Batha joined UTA Arad of Romania in the summer of 2021 and due to UTA Arad's Albanian shareholders former Tirana teammate Erjon Hoxhallari joined him a year later. Both Batha and Hoxhallari left in the summer of 2023
Al-Najma
On 9 July 2023, Batha joined Saudi Arabian club Al-Najma.[20]