diff --git a/lib/geocoder/lookups/opencagedata.rb b/lib/geocoder/lookups/opencagedata.rb
index 2dec74b6578a22118950cee37e6c78a1cdda6d73..1d469c799243c2c75ff0ce18d09976551a6363a7 100644
--- a/lib/geocoder/lookups/opencagedata.rb
+++ b/lib/geocoder/lookups/opencagedata.rb
@@ -47,6 +47,12 @@ module Geocoder::Lookup
         :language => (query.language || configuration.language)
       }.merge(super)
 
+      [:countrycode, :min_confidence, :no_dedupe, :no_annotations, :no_record, :limit].each do |option|
+        unless (option_value = query.options[option]).nil?
+          params[option] = option_value
+        end
+      end
+
       unless (bounds = query.options[:bounds]).nil?
         params[:bounds] = bounds.map{ |point| "%f,%f" % point }.join(',')
       end
diff --git a/test/unit/lookups/opencagedata_test.rb b/test/unit/lookups/opencagedata_test.rb
index 496ec14a5220e6d6f3051b7e6e1f25836b978529..7ed0eb321aca2694bb4dda2473224f51a77f407e 100644
--- a/test/unit/lookups/opencagedata_test.rb
+++ b/test/unit/lookups/opencagedata_test.rb
@@ -30,6 +30,24 @@ class OpencagedataTest < GeocoderTestCase
     assert_match(/bounds=40.0+%2C-120.0+%2C39.0+%2C-121.0+/, url)
   end
 
+  def test_opencagedata_query_url_contains_optional_params
+    lookup = Geocoder::Lookup::Opencagedata.new
+    url = lookup.query_url(Geocoder::Query.new(
+      "Some street",
+      :countrycode => 'fr',
+      :min_confidence => 5,
+      :no_dedupe => 1,
+      :no_annotations => 1,
+      :no_record => 1,
+      :limit => 2
+    ))
+    assert_match(/countrycode=fr/, url)
+    assert_match(/min_confidence=5/, url)
+    assert_match(/no_dedupe=1/, url)
+    assert_match(/no_annotations=1/, url)
+    assert_match(/no_record=1/, url)
+    assert_match(/limit=2/, url)
+  end
 
   def test_no_results
     results = Geocoder.search("no results")