Google Geocode API “REQUEST_DENIED” in JSON response – reverse geocode action

geocodegoogle-maps-api-3google-places-api

Looked everywhere — and have read dozens of other questions regarding Google APIs (Maps, Geocode, Places, Autocomplete, etc) — and nothing has worked.

I have an API key with Places, Static Maps, and Maps v3 & v2 services enabled.

I am trying to perform a reverse geocode (get street address information via JSON from lat/long coords).

Here is the URL I am passing in my JavaScript (last 5 digits of API key replaced with #####:

http://maps.googleapis.com/maps/api/geocode/json?latlng=49.8925136,-97.1466635&sensor=true&key=AIzaSyDbfv8bFidX1hSbXwwKTTxWQYgU7g####

The JSON response is:

{
    "results" : [],
    "status" : "REQUEST_DENIED"
}

As you can see, there is a "sensor=true" parameter being passed – which is the problem according to the Google Document supporting this API, but that is clearly not the case here.

I also tried passing simply

http://maps.googleapis.com/maps/api/geocode/json?latlng=49.8925136,-97.1466635&sensor=true

which returns expected JSON response when the URL is entered into the addressbar of a browser — but when added to the JavaScript in my HTML file, I again receive:

{
    "results" : [],
    "status" : "REQUEST_DENIED"
}

Any assistance is welcome, and greatly appreciated.

Best Answer

Google don't particularly want you to use this static API in a web page. You should be using the Maps API in a web page, and its associated geocoding functionality (because you need to show the results on a map anyway). These static APIs are intended for use server-side, so it looks like they now refuse requests which come with an HTTP_REFERER header.

(Using the key server-side allows you to keep track of statistics, but an invalid key will always result in REQUEST_DENIED whether there is a referrer header or not.)