It is expected that in the next decade, majority of world population will be living in cities. Better public services and infrastructures in the city are needed to cope with the booming population. City vehicles that cruising for parking have indirectly causing traffic, making one harder to travel around the city. Thus, a smart parking system can certainly lays the foundation to build a smart city. This paper proposed a cost-effective IoT smart parking system to monitor city parking space and provide real-time parking information to drivers. Moreover, instead of the conventional approach that uses embedded sensors to detect vehicles in the parking area, camera image and machine vision technology are used to obtain the parking status. In the prototype, twenty outdoor parking lots are covered using a 5 megapixel camera connected to Raspberry Pi 3 installed at the 5th floor of the nearby building. Machine vision in this project that involved motion tracking and Canny edge detection are programmed in Python 2 using OpenCV technology. Corresponding data is uploaded to an IoT platform called Ubidots for possible monitoring activity. An Android mobile application is designed for user to download real-time data of parking information. This paper introduces a low cost smart parking system with the overall detection accuracy of 96.40%. Also, the mobile application allows users to alert other car owners for any emergency incidents and double parking blockage. The developed system can provide a platform for users to search for empty car parking with ease and reduce the traffic issues such as illegal double parking especially in the urban area.