I used to use Google's geocoding API when it was free, really hate it when they make stuff and then when it gets popular start charging $$$
I still haven't found a viable free replacement, unfortunately. I'm just doing this for personal projects, so no big budget.