diff --git a/lib/geocoder/results/yandex.rb b/lib/geocoder/results/yandex.rb
index 4871e57e3bdea179a3d7abdce9a919184ca9fe36..bae4258b383cda7338cbd7ceef6680775e9828ce 100644
--- a/lib/geocoder/results/yandex.rb
+++ b/lib/geocoder/results/yandex.rb
@@ -12,9 +12,9 @@ module Geocoder::Result
     end
 
     def city
-      if state.empty? and address_details.has_key? 'Locality'
+      if state.empty? and address_details and address_details.has_key? 'Locality'
         address_details['Locality']['LocalityName']
-      elsif sub_state.empty? and address_details.has_key? 'AdministrativeArea' and
+      elsif sub_state.empty? and address_details and address_details.has_key? 'AdministrativeArea' and
           address_details['AdministrativeArea'].has_key? 'Locality'
         address_details['AdministrativeArea']['Locality']['LocalityName']
       elsif not sub_state_city.empty?
@@ -33,7 +33,7 @@ module Geocoder::Result
     end
 
     def state
-      if address_details['AdministrativeArea']
+      if address_details and address_details['AdministrativeArea']
         address_details['AdministrativeArea']['AdministrativeAreaName']
       else
         ""
@@ -41,7 +41,7 @@ module Geocoder::Result
     end
 
     def sub_state
-      if !state.empty? and address_details['AdministrativeArea']['SubAdministrativeArea']
+      if !state.empty? and address_details and address_details['AdministrativeArea']['SubAdministrativeArea']
         address_details['AdministrativeArea']['SubAdministrativeArea']['SubAdministrativeAreaName']
       else
         ""
@@ -75,7 +75,7 @@ module Geocoder::Result
     end
 
     def sub_state_city
-      if !sub_state.empty? and address_details['AdministrativeArea']['SubAdministrativeArea'].has_key? 'Locality'
+      if !sub_state.empty? and address_details and address_details['AdministrativeArea']['SubAdministrativeArea'].has_key? 'Locality'
         address_details['AdministrativeArea']['SubAdministrativeArea']['Locality']['LocalityName'] || ""
       else
         ""