diff --git a/lib/geocoder/lookups/telize.rb b/lib/geocoder/lookups/telize.rb
index 4719e998d7c4f13d69ae68ce568e357e7ef7efda..b66cdae8494a7f43f060e41bf365f09d19e783e8 100644
--- a/lib/geocoder/lookups/telize.rb
+++ b/lib/geocoder/lookups/telize.rb
@@ -18,24 +18,19 @@ module Geocoder::Lookup
     def results(query)
       # don't look up a loopback address, just return the stored result
       return [reserved_result(query.text)] if query.loopback_ip_address?
-      # note: Telize returns json with a code attribute of 401 on bad request
-      doc = fetch_data(query)
-      (doc && doc['code'] == 401) ? [] : [doc]
+      if (doc = fetch_data(query)).nil? or doc['code'] == 401 or empty_result?(doc)
+        []
+      else
+        [doc]
+      end
+    end
+
+    def empty_result?(doc)
+      !doc.is_a?(Hash) or doc.keys == ["ip"]
     end
 
     def reserved_result(ip)
-      {
-        "ip"           => ip,
-        "city"         => "",
-        "region_code"  => "",
-        "region_name"  => "",
-        "metrocode"    => "",
-        "zipcode"      => "",
-        "latitude"     => "0",
-        "longitude"    => "0",
-        "country_name" => "Reserved",
-        "country_code" => "RD"
-      }
+      {"message" => "Input string is not a valid IP address", "code" => 401}
     end
   end
 end
diff --git a/lib/geocoder/results/telize.rb b/lib/geocoder/results/telize.rb
index 84aec721e787d54efefc428f521ce249e73315f0..ee8880b7696fe7c9139cb255572e0f8f2ddabe40 100644
--- a/lib/geocoder/results/telize.rb
+++ b/lib/geocoder/results/telize.rb
@@ -13,7 +13,7 @@ module Geocoder::Result
     end
 
     def state
-      @data['region_name']
+      @data['region']
     end
 
     def state_code
@@ -21,7 +21,7 @@ module Geocoder::Result
     end
 
     def country
-      @data['country_name']
+      @data['country']
     end
 
     def country_code
@@ -29,11 +29,11 @@ module Geocoder::Result
     end
 
     def postal_code
-      @data['zipcode']
+      @data['postal_code']
     end
 
     def self.response_attributes
-      %w[metrocode ip]
+      %w[timezone isp dma_code area_code ip asn continent_code country_code3]
     end
 
     response_attributes.each do |a|
diff --git a/test/fixtures/telize_10_10_10_10 b/test/fixtures/telize_10_10_10_10
index b85a5590334e3afd7ebe5d3e9ccb6eb0d5493c8b..700f75cc5041bd44b8d7a22081be711783549737 100644
--- a/test/fixtures/telize_10_10_10_10
+++ b/test/fixtures/telize_10_10_10_10
@@ -1,4 +1 @@
-{
-"message": "Input string is not a valid IP address",
-"code": 401
-}
+{"ip":"10.10.10.10"}
diff --git a/test/fixtures/telize_555_555_555_555 b/test/fixtures/telize_555_555_555_555
new file mode 100644
index 0000000000000000000000000000000000000000..b85a5590334e3afd7ebe5d3e9ccb6eb0d5493c8b
--- /dev/null
+++ b/test/fixtures/telize_555_555_555_555
@@ -0,0 +1,4 @@
+{
+"message": "Input string is not a valid IP address",
+"code": 401
+}
diff --git a/test/fixtures/telize_74_200_247_59 b/test/fixtures/telize_74_200_247_59
index 78c7ce3e57bcf79534475006a19c0cbeba3422ad..a8c64d324a97108bc79092c7d4ba0cb24f3f764f 100644
--- a/test/fixtures/telize_74_200_247_59
+++ b/test/fixtures/telize_74_200_247_59
@@ -1,12 +1 @@
-{
-  "city": "Plano",
-  "region_code": "TX",
-  "region_name": "Texas",
-  "metrocode": "623",
-  "zipcode": "75093",
-  "longitude": "-96.8134",
-  "country_name": "United States",
-  "country_code": "US",
-  "ip": "74.200.247.59",
-  "latitude": "33.0347"
-}
+{"timezone":"America\/Chicago","isp":"Layered Technologies, Inc.","region_code":"TX","country":"United States","dma_code":"0","area_code":"0","region":"Texas","ip":"74.200.247.59","asn":"AS22576","continent_code":"NA","city":"Plano","postal_code":"75093","longitude":-96.8134,"latitude":33.0347,"country_code":"US","country_code3":"USA"}
diff --git a/test/fixtures/telize_no_results b/test/fixtures/telize_no_results
index b85a5590334e3afd7ebe5d3e9ccb6eb0d5493c8b..700f75cc5041bd44b8d7a22081be711783549737 100644
--- a/test/fixtures/telize_no_results
+++ b/test/fixtures/telize_no_results
@@ -1,4 +1 @@
-{
-"message": "Input string is not a valid IP address",
-"code": 401
-}
+{"ip":"10.10.10.10"}
diff --git a/test/unit/lookups/telize_test.rb b/test/unit/lookups/telize_test.rb
index aa112b2091b29a1bfb90f82fcf12f7ed7bb5b317..864b9b70989acaee5e63eb09925d0213152329ef 100644
--- a/test/unit/lookups/telize_test.rb
+++ b/test/unit/lookups/telize_test.rb
@@ -22,4 +22,9 @@ class TelizeTest < GeocoderTestCase
     results = Geocoder.search("10.10.10.10")
     assert_equal 0, results.length
   end
+
+  def test_invalid_address
+    results = Geocoder.search("555.555.555.555")
+    assert_equal 0, results.length
+  end
 end