Taxicabs are an important element of urban public transportation. Taxicabs either cruise through city streets in search of passengers or wait at several hotspots (like airports, rail stations, malls, stadiums, taxi stands, etc). Cruising by empty Taxis increases city traffic and carbon footprint while reducing net profit. Alternatively, there might be places where passengers are waiting long for taxis. In order to improve coordination between taxis and passengers with a view to decrease passenger waiting time and to increase taxi profits, we propose a taxi selection algorithm (TSA) as well as a hotspot recommendation approach (HRA). While the proposed TSA achieves its objective through distributed coordination among the participating taxis and passengers, the HRA uses a clustering approach over a large-scale taxi dataset to pin-point hotspots. The main contribution of this paper lies in extensive experimentation using large-scale taxi dataset of SFO to show that the TSA outperforms existing taxi selection algorithms by finding a taxi which can reach the passenger in minimum time with up to 97.59% accuracy. We also evaluate the HRA using another taxi dataset from NYC which shows that 60% of the times, a taxi will get a passenger following our recommendation scheme.