How to reverse geocode without Google?

Reverse Geocoding

Reverse Geocoding Problem Overview


Are there any web services (paid or free) out there besides the Google Maps API which allow you to reverse geocode?

My particular application will have access to a latitude and longitude and I need to be able to get the US Zip Code or State.

The reason I can't use Google is that the Terms of Service seems to indicate that if you use Google Maps API, you need to use the data to display a Google map.

I am using C# .Net framework in case that's relevant.

Reverse Geocoding Solutions


Solution 1 - Reverse Geocoding

Solution 2 - Reverse Geocoding

Geonames can give you either a placename:

> http://ws.geonames.org/findNearbyPlaceName?lat=40.65&lng=-73.78

or a zip code:

> http://ws.geonames.org/findNearbyPostalCodes?lat=40.65&lng=-73.78

It's free as long as you credit them and you need fewer than 15000 lookups per day. You can http://www.geonames.org/commercial-webservices.html">pay</a> if you need more.

Solution 3 - Reverse Geocoding

I am not a fan of MS. But check this out: http://msdn.microsoft.com/en-us/library/ff859477.aspx

RESTful Location Service API does not seem to post any restriction.

You can user Find Location By Point API: http://msdn.microsoft.com/en-us/library/ff701710.aspx

I tried out the sample for geoNames, the result is not good enough for me as I need county information, and the response time is slow.

Solution 4 - Reverse Geocoding

openstreetmap:

$.getJSON('https://nominatim.openstreetmap.org/reverse', {
	lat: position.coords.latitude,
	lon: position.coords.longitude,
	format: 'json',
}, function (result) {
	console.log(result);
});	

geonames:

$.getJSON('https://secure.geonames.org/countryCode', {
	lat: position.coords.latitude,
	lng: position.coords.longitude,
	type: 'JSON',
	username: 'demo'
}, function (result) {
	console.log(result);
});
					

				
					

				

Solution 5 - Reverse Geocoding

ArcGIS provides a free (and paid) API:

https://developers.arcgis.com/rest/geocode/api-reference/geocoding-reverse-geocode.htm

It provides an address for a given location (lat/lon). It doesn't even require an API key, but they suggest you get a free one to avoid rate limits.

Here is an example API call, with a JSON response:

http://geocode.arcgis.com/arcgis/rest/services/World/GeocodeServer/reverseGeocode?location=4.366281%2C50.851994&langCode=fr&outSR=&forStorage=false&f=pjson

Solution 6 - Reverse Geocoding

Nominatim Search Service from MapQuest Open API is free and has no request limit (soft limit of 1/sec).

> http://open.mapquestapi.com/nominatim/v1/reverse.php?format=json&lat=44.0776182&lon=-92.5296981

TOS can be found here

Solution 7 - Reverse Geocoding

Take a look at Geocoda - free for up to 1K forward or reverse geocoding calls per month, reasonably priced for more.

Update Feb. 2019 - Geocoda is now closed.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionjessegavinView Question on Stackoverflow
Solution 1 - Reverse GeocodingWoodyDRNView Answer on Stackoverflow
Solution 2 - Reverse GeocodingstevemegsonView Answer on Stackoverflow
Solution 3 - Reverse GeocodingxueruView Answer on Stackoverflow
Solution 4 - Reverse Geocodingrahulroy9202View Answer on Stackoverflow
Solution 5 - Reverse GeocodingmoollazaView Answer on Stackoverflow
Solution 6 - Reverse GeocodingrynopView Answer on Stackoverflow
Solution 7 - Reverse GeocodingbrokenbeatnikView Answer on Stackoverflow