diff --git a/lib/geocoder/results/google.rb b/lib/geocoder/results/google.rb
index e293c0ba12b6bea6683ec43ec7a7ff0af3c6f956..d692b8e8aba2c1d23785b693bf5b90c268a95dd3 100644
--- a/lib/geocoder/results/google.rb
+++ b/lib/geocoder/results/google.rb
@@ -59,6 +59,16 @@ module Geocoder::Result
       end
     end
 
+    def street_number
+      if street_number = address_components_of_type(:street_number).first
+        street_number['long_name']
+      end
+    end
+
+    def street_address
+      [street_number, route].compact.join(' ')
+    end
+
     def types
       @data['types']
     end
diff --git a/test/services_test.rb b/test/services_test.rb
index 551040c92b1eeb2f10fee08e14d2a469a81789fb..c2eb493f88cd0c2a7019a8a784a7e59bcc6b4968 100644
--- a/test/services_test.rb
+++ b/test/services_test.rb
@@ -17,6 +17,12 @@ class ServicesTest < Test::Unit::TestCase
       result.address_components_of_type(:route).first['long_name']
   end
 
+  def test_google_result_components_contains_street_number
+    result = Geocoder.search("Madison Square Garden, New York, NY").first
+    assert_equal "4",
+      result.address_components_of_type(:street_number).first['long_name']
+  end
+
   def test_google_returns_city_when_no_locality_in_result
     result = Geocoder.search("no locality").first
     assert_equal "Haram", result.city
@@ -27,6 +33,11 @@ class ServicesTest < Test::Unit::TestCase
     assert_equal nil, result.city
   end
 
+  def test_google_street_address_returns_formatted_street_address
+    result = Geocoder.search("Madison Square Garden, New York, NY").first
+    assert_equal "4 Penn Plaza", result.street_address
+  end
+
   def test_google_precision
     result = Geocoder.search("Madison Square Garden, New York, NY").first
     assert_equal "ROOFTOP",