diff --git a/lib/geocoder/lookups/postcode_anywhere_uk.rb b/lib/geocoder/lookups/postcode_anywhere_uk.rb
new file mode 100644
index 0000000000000000000000000000000000000000..2b4a835ec2816d284d545b75cfafedd2ecc14ee6
--- /dev/null
+++ b/lib/geocoder/lookups/postcode_anywhere_uk.rb
@@ -0,0 +1,37 @@
+require 'geocoder/lookups/base'
+require 'geocoder/results/postcode_anywhere_uk'
+
+module Geocoder::Lookup
+  class PostcodeAnywhereUk < Base
+
+    BASE_URL_GEOCODE_V200 = 'services.postcodeanywhere.co.uk/Geocoding/UK/Geocode/v2.00/json.ws'
+
+    def name
+      'PostcodeAnywhereUk'
+    end
+
+    def required_api_key_parts
+      %w(key)
+    end
+
+    def query_url(query)
+      format('%s://%s?%s', protocol, BASE_URL_GEOCODE_V200, url_query_string(query))
+    end
+
+    private
+
+    def results(query)
+      response = fetch_data(query)
+      return [] if response.nil? || !response.is_a?(Array) || response.empty?
+
+      return response
+    end
+
+    def query_url_params(query)
+      {
+        :location => query.sanitized_text,
+        :key => configuration.api_key
+      }.merge(super)
+    end
+  end
+end
diff --git a/lib/geocoder/results/postcode_anywhere_uk.rb b/lib/geocoder/results/postcode_anywhere_uk.rb
new file mode 100644
index 0000000000000000000000000000000000000000..b3194959022f817788ca118f5e3a35708380192f
--- /dev/null
+++ b/lib/geocoder/results/postcode_anywhere_uk.rb
@@ -0,0 +1,29 @@
+require 'geocoder/results/base'
+
+module Geocoder::Result
+  class PostcodeAnywhereUk < Base
+
+    def coordinates
+      [@data['Latitude'].to_f, @data['Longitude'].to_f]
+    end
+
+    def blank_result
+      ''
+    end
+    alias_method :state, :blank_result
+    alias_method :state_code, :blank_result
+    alias_method :postal_code, :blank_result
+
+    def country
+      'United Kingdom'
+    end
+
+    def country_code
+      'UK'
+    end
+
+    def address
+      [@data['Location'], @data['OsGrid']].join(', ')
+    end
+  end
+end
\ No newline at end of file