How to reverse geocode without Google? [closed]

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.


I use http://nominatim.openstreetmap.org for reverse lookups, it's very easy to use:

http://nominatim.openstreetmap.org/reverse?format=json&lat=54.9824031826&lon=9.2833114795&zoom=18&addressdetails=1


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 pay if you need more.


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.


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);
});

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