I have to geocode a huge dataset, with about 35 million addresses from Brazil. I was not able to find a good solution, even considering paid geocoders. So, I'd like to know if there is any geocoder service that has good accuracy and matching rate and, at the same time, allows bulk geocoding and also allows the storage of the lat/long results in a permanent database.
My initial idea was to do the geocoding using R, which has packages for many geocoders, like OSM/Nominatim (geocode_OSM), Google (ggmap) and HERE (HereR). Another possibility was to use QGIS, which also has geocoding plugins with the same 3 geocoders. So, I did a short benchmark with these geocoders and noticed that it would not be possible to use any of them:
- OSM/Nominatim (https://nominatim.org/): It's free, but does not allow bulk geocoding. Its accuracy and matching rate is also below my requirements.
- Google Geocoding API: Has a good accuracy and matching rate. However, terms of use do not allow geocoding results storage. According to https://cloud.google.com/maps-platform/terms/maps-service-terms: "Customer can temporarily cache latitude (lat) and longitude (lng) values from the Geocoding API for up to 30 consecutive calendar days, after which Customer must delete the cached latitude and longitude values." Because of this restriction, I understand that it would not be allowed to do what I have to do using Google API;
- HERE Geocoding API: Also has a good accuracy and matching rate, but with my test dataset both, accuracy and matching rate, were a little bit bellow than Googles API results. However, HERE API has similar terms of use restrictions than Google, not allowing results storage (https://knowledge.here.com/csm_kb?id=public_kb_csm_details&number=KB0016408).
I noticed that most of the API geocoders have similar restrictions than the observed in Google and HERE APIs. That's probably because they are web services created for apps, but not for bulk geocoding.
So, I’d like to know if there are any other bulk geocoding options (free or paid), without lat/long results storage restrictions.