diff --git a/lib/geocoder/lookups/mapbox.rb b/lib/geocoder/lookups/mapbox.rb
index 797c2648b3fe14a20cc58ad822256a3d75194349..36b11b018f5dc09970d6a52694162cc984ed30d1 100644
--- a/lib/geocoder/lookups/mapbox.rb
+++ b/lib/geocoder/lookups/mapbox.rb
@@ -9,7 +9,8 @@ module Geocoder::Lookup
     end
 
     def query_url(query)
-      "#{protocol}://api.mapbox.com/geocoding/v5/#{dataset}/#{url_query_string(query)}.json?access_token=#{configuration.api_key}"
+      path = "#{mapbox_search_term(query)}.json?#{url_query_string(query)}"
+      "#{protocol}://api.mapbox.com/geocoding/v5/#{dataset}/#{path}"
     end
 
     private # ---------------------------------------------------------------
@@ -25,7 +26,11 @@ module Geocoder::Lookup
       end
     end
 
-    def url_query_string(query)
+    def query_url_params(query)
+      {access_token: configuration.api_key}.merge(super(query))
+    end
+
+    def mapbox_search_term(query)
       require 'cgi' unless defined?(CGI) && defined?(CGI.escape)
       if query.reverse_geocode?
         lat,lon = query.coordinates
diff --git a/test/unit/lookups/mapbox_test.rb b/test/unit/lookups/mapbox_test.rb
index 33d15924856546b2fe4b469877166cd6e25c6cc4..5976442ef7ea90e3ad7c4df08eab4f18d9f94770 100644
--- a/test/unit/lookups/mapbox_test.rb
+++ b/test/unit/lookups/mapbox_test.rb
@@ -14,6 +14,12 @@ class MapboxTest < GeocoderTestCase
     assert_equal "https://api.mapbox.com/geocoding/v5/mapbox.places/Leadville%2C+CO.json?access_token=abc123", query.url
   end
 
+  def test_url_contains_params
+    Geocoder.configure(mapbox: {api_key: "abc123"})
+    query = Geocoder::Query.new("Leadville, CO", {params: {country: 'CN'}})
+    assert_equal "https://api.mapbox.com/geocoding/v5/mapbox.places/Leadville%2C+CO.json?access_token=abc123&country=CN", query.url
+  end
+
   def test_result_components
     result = Geocoder.search("Madison Square Garden, New York, NY").first
     assert_equal [40.749688, -73.991566], result.coordinates