diff --git location/location.admin.inc location/location.admin.inc
index 37200bc..5a707f2 100644
--- location/location.admin.inc
+++ location/location.admin.inc
@@ -27,6 +27,14 @@ function location_admin_settings() {
     '#options'        => $iso_list_sorted,
     '#description'    => t('This will be the country that is automatically selected when a location form is served for a new location.')
   );
+  $form['location_enabled_countries'] = array(
+    '#type'           => 'textfield',
+    '#title'          => t('Enabled countries'),
+    '#size'           => 50,
+    '#maxlength'      => 800,
+    '#default_value'  => variable_get('location_enabled_countries', ''),
+    '#description'    => t('Space delimited list of countries codes, which should be included in countries list. Special code: <b>xx</b> means NOT LISTED. Leave field empty if all countries (and xx - NOT LISTED) should be included. Example: <b>xx us ca mx</b>')
+  );
   $form['location_display_location'] = array(
     '#type'           => 'radios',
     '#title'          => t('Toggle location display'),
diff --git location/location.install location/location.install
index 8f8978d..dbe27a3 100644
--- location/location.install
+++ location/location.install
@@ -23,6 +23,7 @@ function location_uninstall() {
   variable_del('location_display_location');
   variable_del('location_usegmap');
   variable_del('location_locpick_macro');
+  variable_del('location_enabled_countries');
 
   // Delete geocoder settings.
   $result = db_query("SELECT name FROM {variable} WHERE name LIKE 'location_geocode_%'");
diff --git location/location.module location/location.module
index a24d026..f6a898b 100644
--- location/location.module
+++ location/location.module
@@ -676,7 +676,7 @@ function location_locationapi(&$obj, $op, $a3 = NULL, $a4 = NULL, $a5 = NULL) {
             );
           }
           else {
-            $options = array_merge(array('' => t('Please select'), 'xx' => t('NOT LISTED')), location_get_iso3166_list());
+            $options = array_merge(array('' => t('Please select')), location_get_enabled_countries_list());
             return array(
               '#type'           => 'select',
               '#title'          => t('Country'),
@@ -1501,7 +1501,7 @@ function template_preprocess_location(&$variables) {
   // Map link.
   $variables['map_link'] = '';
   if (!empty($location['map_link'])) {
-    // Do not use $location for generating the map link, since it will 
+    // Do not use $location for generating the map link, since it will
     // not contain the country if that field is hidden.
     $variables['map_link'] = location_map_link($variables['location']);
   }
@@ -1780,3 +1780,25 @@ function location_google_geocode_accuracy_codes() {
     9 => t('Premise (building name, property name, shopping center, etc.) level accuracy'),
   );
 }
+
+/**
+ * Returns a list of enabled countries, which will be used in select lists.
+ * Enabled countries can be set on admin/settings/location page
+ */
+function location_get_enabled_countries_list() {
+  $list = location_get_iso3166_list();
+  $enabled_countries = variable_get('location_enabled_countries', '');
+  if (!empty($enabled_countries)) {
+    $enabled = array_flip(explode(' ', $enabled_countries));
+    foreach ($list as $code => $name) {
+      if (!isset($enabled[$code])) {
+        unset($list[$code]);
+      }
+    }
+    // Add special option: xx - NOT LISTED
+    if (isset($enabled['xx'])) {
+      $list = array_merge(array('xx' => t('NOT LISTED')), $list);
+    }
+  }
+  return $list;
+}
