I would say that you have two more options for obtaining the required functionality.
First, you can use kludge to focus results on more meaningful ones (although I would not highly recommend this method, which may be sufficient for your needs.)
Before you begin your initial request for the Google Geocoding API to get data for startup results, first determine the country in which the city is located. Then you can use the country string as a suffix to request geocoding.
Sort of:
var country = 'UK'; // from initial query, reverse geocode, etc. geocoder.geocode({ 'address': address + ', ' + country },
See the answer in this question for an example. Google geocoder returns wrong country ignoring region prompt
Secondly, the premise that you "obviously cannot configure or change this data" is erroneous. You can filter the results by country. Something like the following snippet shows how to expand the results.
geocoder.geocode({ 'address': address }, function(results, status) { if(status == google.maps.GeocoderStatus.OK) { for(var i = 0, l = results.length; i < l; i++) { for (var j = 0, l2 = results[i].address_components.length; j < l2; j++) { for (var k = 0, l3 = results[i].address_components[j].types.length; k < l3; k++) { if(results[i].address_components[j].types[k]=="country") { var country = results[i].address_components[j].long_name;
Finally, if you have implemented a CGI wrapper for geocoding, you can cache the results. Thus, your application will automatically create your database for you. This will save the actual execution of geocoding in general for known results. I think this is almost what you are hinting at in your question, and there are no reasons why you could not pre-populate your cache with known results if you could find a reliable data source.
Take a look at this document, which describes various geocoding strategies using Api maps - it discusses things like caching, etc. https://developers.google.com/maps/articles/geocodestrat
EDIT
You can use something like geoPlugin
http://www.geoplugin.com/webservices/php#php_class
Take a look at the functions of nearby places, this does exactly what you want.
http://www.geoplugin.com/webservices/extras