diff --git a/lib/geocoder/lookups/freegeoip.rb b/lib/geocoder/lookups/freegeoip.rb
index 63599a487cf768bf7d56033dcd108da17752793f..a5526667cd343808446934a627d3d8f6c0dee102 100644
--- a/lib/geocoder/lookups/freegeoip.rb
+++ b/lib/geocoder/lookups/freegeoip.rb
@@ -6,6 +6,10 @@ module Geocoder::Lookup
 
     private # ---------------------------------------------------------------
 
+    def parse_raw_data(raw_data)
+      raw_data.match(/^<html><title>404/) ? nil : super(raw_data)
+    end
+
     def results(query, reverse = false)
       # don't look up a loopback address, just return the stored result
       return [reserved_result(query)] if loopback_address?(query)