Detecting road potholes and road roughness levels is key to road condition monitoring, which impacts transport safety and driving comfort. We propose a crowdsourcing-based road surface monitoring system, simply called CRSM. CRSM can effectively detect road potholes and evaluate road roughness levels using hardware modules mounted on distributed vehicles. These modules use low-end accelerometers and GPS devices to obtain vibration patterns, locations, and vehicle velocities. Considering the high cost of onboard storage and wireless transmission, a novel light-weight data mining algorithm is proposed to detect road surface events and transmit potential pothole information to a central server. The central server gathers reports from multiple vehicles, and makes a comprehensive evaluation on road surface quality. We have implemented a product-quality system, and have deployed it on 100 taxies in the Shenzhen urban area. The results show that CRSM can detect road potholes with 90 % accuracy, with nearly zero false alarms. CRSM can also evaluate road roughness levels correctly, even with some interferences from small bumps or potholes.