Current parking systems employ a single gateway-centered solution (i.e., cloud) for data processing which leads to the possibility of a single point of failure, data loss, and high delays. Moreover, the parking-spot selection process considers criteria that do not maximize parking utilization and revenue. The pricing strategy does not achieve high revenue because a fixed pricing rate is utilized. To address these issues, this paper proposes a smart parking system based on the Internet of Things (IoT) that provides useful information to drivers and parking administrators about available parking spots and related services such as parking navigation, reservation, and availability estimation. A multi-layer architecture is developed that consists of multiple sensor nodes, and fog and cloud computing layers. The acquired parking data are processed through fog computing nodes to facilitate obtaining the required real-time parking data. A novel algorithm to obtain the optimal parking spot with the minimum arrival time is also presented. Proof-of-concept implementation and simulation evaluations are conducted to validate the system performance. The findings show that the system reduces the parking arrival time by 16–46% compared to current parking systems. In addition, the revenue is increased for the parking authority by 10–15%.