diff --git a/addons/base_geolocalize/models/base_geocoder.py b/addons/base_geolocalize/models/base_geocoder.py
index 17a10f7e0e5ea98759b98abb72bfc96a8c89b0f0..5c2cee79ccad8957b3c2d8f42dce64fef7bbba79 100644
--- a/addons/base_geolocalize/models/base_geocoder.py
+++ b/addons/base_geolocalize/models/base_geocoder.py
@@ -55,7 +55,7 @@ class GeoCoder(models.AbstractModel):
             return self._geo_query_address_default(street=street, zip=zip, city=city, state=state, country=country)
 
     @api.model
-    def geo_find(self, addr):
+    def geo_find(self, addr, **kw):
         """Use a location provider API to convert an address string into a latitude, longitude tuple.
         Here we use Openstreetmap Nominatim by default.
         :param addr: Address string passed to API
@@ -64,7 +64,7 @@ class GeoCoder(models.AbstractModel):
         provider = self._get_provider().tech_name
         try:
             service = getattr(self, '_call_' + provider)
-            result = service(addr)
+            result = service(addr, **kw)
         except AttributeError:
             raise UserError(_(
                 'Provider %s is not implemented for geolocation service.'
@@ -77,7 +77,7 @@ class GeoCoder(models.AbstractModel):
         return result
 
     @api.model
-    def _call_openstreetmap(self, addr):
+    def _call_openstreetmap(self, addr, **kw):
         """
         Use Openstreemap Nominatim service to retrieve location
         :return: (latitude, longitude) or None if not found
@@ -95,7 +95,7 @@ class GeoCoder(models.AbstractModel):
         return float(geo['lat']), float(geo['lon'])
 
     @api.model
-    def _call_googlemap(self, addr):
+    def _call_googlemap(self, addr, **kw):
         """ Use google maps API. It won't work without a valid API key.
         :return: (latitude, longitude) or None if not found
         """
@@ -106,8 +106,11 @@ class GeoCoder(models.AbstractModel):
                 "Visit https://developers.google.com/maps/documentation/geocoding/get-api-key for more information."
             ))
         url = "https://maps.googleapis.com/maps/api/geocode/json"
+        params = {'sensor': 'false', 'address': addr, 'key': apikey}
+        if kw.get('force_country'):
+            params['components'] = 'country:%s' % kw['force_country']
         try:
-            result = requests.get(url, params={'sensor': 'false', 'address': addr, 'key': apikey}).json()
+            result = requests.get(url, params).json()
         except Exception as e:
             self._raise_query_error(e)
 
@@ -151,4 +154,3 @@ class GeoCoder(models.AbstractModel):
 
     def _raise_query_error(self, error):
         raise UserError(_('Error with geolocation server:') + ' %s' % error)
-
diff --git a/addons/base_geolocalize/models/res_partner.py b/addons/base_geolocalize/models/res_partner.py
index 6c7cbad5aac96268efcc41c3e97afe9e6bc1e036..fdf988e7db28945e25948eccbd1985a5bcb4c1ac 100644
--- a/addons/base_geolocalize/models/res_partner.py
+++ b/addons/base_geolocalize/models/res_partner.py
@@ -12,10 +12,10 @@ class ResPartner(models.Model):
     def _geo_localize(self, street='', zip='', city='', state='', country=''):
         geo_obj = self.env['base.geocoder']
         search = geo_obj.geo_query_address(street=street, zip=zip, city=city, state=state, country=country)
-        result = geo_obj.geo_find(search)
+        result = geo_obj.geo_find(search, force_country=country)
         if result is None:
             search = geo_obj.geo_query_address(city=city, state=state, country=country)
-            result = geo_obj.geo_find(search)
+            result = geo_obj.geo_find(search, force_country=country)
         return result
 
     @api.multi
diff --git a/addons/website_crm_partner_assign/tests/test_partner_assign.py b/addons/website_crm_partner_assign/tests/test_partner_assign.py
index fdae02d6d511a6a53845bb7f914673788c0dc721..985bfdb087972a4af9a233ca6f1f14e3e92c7ae7 100644
--- a/addons/website_crm_partner_assign/tests/test_partner_assign.py
+++ b/addons/website_crm_partner_assign/tests/test_partner_assign.py
@@ -29,7 +29,7 @@ class TestPartnerAssign(TransactionCase):
             'partner_id': self.customer_uk.id
         })
 
-        def geo_find(addr):
+        def geo_find(addr, **kw):
             return {
                 'Wavre, Belgium': (50.7158956, 4.6128075),
                 'Cannon Hill Park, B46 3AG Birmingham, United Kingdom': (52.45216, -1.898578),