diff --git a/lib/geocoder/results/yandex.rb b/lib/geocoder/results/yandex.rb
index 841da9887e1c074699960caffa886b2ca0e76f70..f69c10cfc89810471ff3c41d8bdd1d43d2f97866 100644
--- a/lib/geocoder/results/yandex.rb
+++ b/lib/geocoder/results/yandex.rb
@@ -16,8 +16,10 @@ module Geocoder::Result
         address_details['Locality']['LocalityName']
       elsif sub_state.empty?
         address_details['AdministrativeArea']['Locality']['LocalityName']
-      else 
-        address_details['AdministrativeArea']['SubAdministrativeArea']['Locality']['LocalityName']
+      elsif not sub_state_city.empty?
+        sub_state_city
+      else
+        ""
       end
     end
 
@@ -62,5 +64,13 @@ module Geocoder::Result
     def address_details
       @data['GeoObject']['metaDataProperty']['GeocoderMetaData']['AddressDetails']['Country']
     end
+
+    def sub_state_city
+      if sub_state && sub_state["Locality"]
+        sub_state['Locality']['LocalityName']          
+      else
+        ""
+      end
+    end
   end
 end