Basic implementation of the nominatim API from open street map (OSM).
Can be used for geocoding service. Does have some limitations (see usage policy).
For bulk services either implement caching or set up your own internal geocoding service.