diff --git a/lib/geocoder/lookups/db_ip_com.rb b/lib/geocoder/lookups/db_ip_com.rb
index 8a03215757ead93bba3a68e1e49877fc47162189..bd7144d6e1c0605b63841a374e7c0b78ceac5f00 100644
--- a/lib/geocoder/lookups/db_ip_com.rb
+++ b/lib/geocoder/lookups/db_ip_com.rb
@@ -27,18 +27,22 @@ module Geocoder::Lookup
     private
 
     def results(query)
-      return [] unless doc = fetch_data(query)
+      return [] unless (doc = fetch_data(query))
 
-      if doc['error']
-        if doc['error'] == 'invalid API key'
-          raise_error(Geocoder::InvalidApiKey) || Geocoder.log(:warn, 'Invalid DB-IP API key.')
-        else
-          Geocoder.log(:warn, "DB-IP Geocoding API error: #{doc['error']}.")
-        end
+      case doc['error']
+      when 'maximum number of queries per day exceeded'
+        raise_error Geocoder::OverQueryLimitError ||
+                    Geocoder.log(:warn, 'DB-API query limit exceeded.')
+
+      when 'invalid API key'
+        raise_error Geocoder::InvalidApiKey ||
+                    Geocoder.log(:warn, 'Invalid DB-IP API key.')
+      when nil
+        [doc]
 
-        return []
       else
-        return [ doc ]
+        raise_error Geocoder::Error ||
+                    Geocoder.log(:warn, "Request failed: #{doc['error']}")
       end
     end
   end
diff --git a/test/fixtures/db_ip_com_23_255_240_0 b/test/fixtures/db_ip_com_madison_square_garden
similarity index 100%
rename from test/fixtures/db_ip_com_23_255_240_0
rename to test/fixtures/db_ip_com_madison_square_garden
diff --git a/test/fixtures/db_ip_com_quota_exceeded b/test/fixtures/db_ip_com_quota_exceeded
new file mode 100644
index 0000000000000000000000000000000000000000..f5cbef520dc81a87183cda168d25e68739d955bf
--- /dev/null
+++ b/test/fixtures/db_ip_com_quota_exceeded
@@ -0,0 +1 @@
+{"error":"maximum number of queries per day exceeded"}
\ No newline at end of file
diff --git a/test/fixtures/db_ip_com_unknown_error b/test/fixtures/db_ip_com_unknown_error
new file mode 100644
index 0000000000000000000000000000000000000000..7d77aa9092e79b0cc8082262cfaf0750855d6df1
--- /dev/null
+++ b/test/fixtures/db_ip_com_unknown_error
@@ -0,0 +1 @@
+{"error":"unknown error"}
\ No newline at end of file
diff --git a/test/test_helper.rb b/test/test_helper.rb
index 55978055c8d8e55ce18fc692e4d933ad09f762c6..87e11da448827acbaeec7ebb5a45b9c9516fb826 100644
--- a/test/test_helper.rb
+++ b/test/test_helper.rb
@@ -164,8 +164,8 @@ module Geocoder
     require 'geocoder/lookups/db_ip_com'
     class DbIpCom
       private
-      def default_fixture_filename
-        "db_ip_com_23_255_240_0"
+      def fixture_prefix
+        "db_ip_com"
       end
     end
 
diff --git a/test/unit/lookups/db_ip_com_test.rb b/test/unit/lookups/db_ip_com_test.rb
index 47fc26e68f3b3207628979e143451edf56359fa0..5425fa4dfe35876ec68f3a53b23fa85ce48343be 100644
--- a/test/unit/lookups/db_ip_com_test.rb
+++ b/test/unit/lookups/db_ip_com_test.rb
@@ -1,8 +1,6 @@
-# encoding: utf-8
 require 'test_helper'
 
 class DbIpComTest < GeocoderTestCase
-
   def configure_for_free_api_access
     Geocoder.configure(ip_lookup: :db_ip_com, db_ip_com: { api_key: 'MY_API_KEY' })
     set_api_key!(:db_ip_com)
@@ -51,14 +49,28 @@ class DbIpComTest < GeocoderTestCase
   def test_free_host_config
     configure_for_free_api_access
     lookup = Geocoder::Lookup::DbIpCom.new
-    query = Geocoder::Query.new("23.255.240.0")
+    query = Geocoder::Query.new('23.255.240.0')
     assert_match 'http://api.db-ip.com/v2/MY_API_KEY/23.255.240.0', lookup.query_url(query)
   end
 
   def test_paid_host_config
     configure_for_paid_api_access
     lookup = Geocoder::Lookup::DbIpCom.new
-    query = Geocoder::Query.new("23.255.240.0")
+    query = Geocoder::Query.new('23.255.240.0')
     assert_match 'https://api.db-ip.com/v2/MY_API_KEY/23.255.240.0', lookup.query_url(query)
   end
+
+  def test_raises_over_limit_exception
+    Geocoder.configure always_raise: :all
+    assert_raises Geocoder::OverQueryLimitError do
+      Geocoder::Lookup::DbIpCom.new.send(:results, Geocoder::Query.new('quota exceeded'))
+    end
+  end
+
+  def test_raises_unknown_error
+    Geocoder.configure always_raise: :all
+    assert_raises Geocoder::Error do
+      Geocoder::Lookup::DbIpCom.new.send(:results, Geocoder::Query.new('unknown error'))
+    end
+  end
 end