I'm using Google Geocoding API untill i reached the rate limit (2.5k calls / day) and Openstreetmap API for the rest
https://developers.google.com/maps/documentation/geocoding/
I wanted to use this API for a simple app of mine too but in the end didn't because of this. Used Mapquest instead, which seems good too.