title: Looking for a good and free reverse geocoding API
body: <p>I am familiar with two reverse geocoding APIs - Google Maps and foursquare. Both have problems. Consider lat,lng = 35.699,139.707 (Tokyo).</p>
  
  <p><strong>Foursquare:</strong></p>
  
  <pre><code>GET https://api.foursquare.com/v2/venues/search?ll=35.699,139.707&amp;oauth_token=5TJR4WQZSOW0ZWTE4ENMXKO3Y415252GITEMRPQIVPMEGCYK&amp;v=20120723&amp;limit=1
  </code></pre>
  
  <p>yields the following result:</p>
  
  <pre><code>{
  "meta": {
      "code": 200
  },
  "notifications": [
      {
          "type": "notificationTray",
          "item": {
              "unreadCount": 0
          }
      }
  ],
  "response": {
      "venues": [
          {
              "id": "4b64ebedf964a520e3d92ae3",
              "name": "まいどおおきに食堂 東新宿食堂",
              "contact": {
                  "phone": "0352911870",
                  "formattedPhone": "03-5291-1870"
              },
              "location": {
                  "address": "大久保1-1-45",
                  "crossStreet": "新宿セントラルハイツプラザ 1F",
                  "lat": 35.698492646211,
                  "lng": 139.707271456718,
                  "distance": 61,
                  "postalCode": "169-0072",
                  "city": "新宿区",
                  "state": "東京都",
                  "country": "Japan",
                  "cc": "JP"
              },
              "categories": [
                  {
                      "id": "4bf58dd8d48988d111941735",
                      "name": "Restaurant japonais",
                      "pluralName": "Restaurants japonais",
                      "shortName": "Japonaise",
                      "icon": {
                          "prefix": "https://foursquare.com/img/categories_v2/food/japanese_",
                          "suffix": ".png"
                      },
                      "primary": true
                  }
              ],
              "verified": false,
              "stats": {
                  "checkinsCount": 191,
                  "usersCount": 100,
                  "tipCount": 1
              },
              "url": "http://www.shokudo.jp/",
              "likes": {
                  "count": 0,
                  "groups": []
              },
              "specials": {
                  "count": 0,
                  "items": []
              },
              "hereNow": {
                  "count": 0,
                  "groups": []
              }
          }
      ]
  }
  </code></pre>
  
  <p>}</p>
  
  <p>I am only interested in the <code>response.venues[0].location.city</code> entry. Unfortunately, I do not know Japanese, so I cannot tell what it is. Well, google says it is Shinjuku - one of the special wards of Tokyo.</p>
  
  <p><strong>Google Maps:</strong></p>
  
  <pre><code>GET http://maps.googleapis.com/maps/api/geocode/json?sensor=false&amp;language=en&amp;latlng=35.699,139.707
  </code></pre>
  
  <p>yields:</p>
  
  <pre><code>{
     "results" : [
        {
           "address_components" : [
              {
                 "long_name" : "４１",
                 "short_name" : "４１",
                 "types" : [ "sublocality_level_4", "sublocality", "political" ]
              },
              {
                 "long_name" : "１",
                 "short_name" : "１",
                 "types" : [ "sublocality_level_3", "sublocality", "political" ]
              },
              {
                 "long_name" : "１丁目",
                 "short_name" : "１丁目",
                 "types" : [ "sublocality_level_2", "sublocality", "political" ]
              },
              {
                 "long_name" : "Okubo",
                 "short_name" : "Okubo",
                 "types" : [ "sublocality_level_1", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "locality", "political" ]
              },
              {
                 "long_name" : "Tokyo",
                 "short_name" : "Tokyo",
                 "types" : [ "administrative_area_level_1", "political" ]
              },
              {
                 "long_name" : "Japan",
                 "short_name" : "JP",
                 "types" : [ "country", "political" ]
              }
           ],
           "formatted_address" : "Japan, Tokyo, Shinjuku, Okubo, １丁目１−４１",
           "geometry" : {
              "location" : {
                 "lat" : 35.69893960,
                 "lng" : 139.7069460
              },
              "location_type" : "APPROXIMATE",
              "viewport" : {
                 "northeast" : {
                    "lat" : 35.70028858029149,
                    "lng" : 139.7082949802915
                 },
                 "southwest" : {
                    "lat" : 35.69759061970850,
                    "lng" : 139.7055970197085
                 }
              }
           },
           "types" : [ "sublocality_level_4", "sublocality", "political" ]
        },
        {
           "address_components" : [
              {
                 "long_name" : "169-8540",
                 "short_name" : "169-8540",
                 "types" : [ "postal_code" ]
              },
              {
                 "long_name" : "２",
                 "short_name" : "２",
                 "types" : [ "sublocality_level_3", "sublocality", "political" ]
              },
              {
                 "long_name" : "１丁目",
                 "short_name" : "１丁目",
                 "types" : [ "sublocality_level_2", "sublocality", "political" ]
              },
              {
                 "long_name" : "Okubo",
                 "short_name" : "Okubo",
                 "types" : [ "sublocality_level_1", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "locality", "political" ]
              },
              {
                 "long_name" : "Tokyo",
                 "short_name" : "Tokyo",
                 "types" : [ "administrative_area_level_1", "political" ]
              },
              {
                 "long_name" : "Japan",
                 "short_name" : "JP",
                 "types" : [ "country", "political" ]
              }
           ],
           "formatted_address" : "１丁目-２ Okubo, Shinjuku, Tokyo 169-8540, Japan",
           "geometry" : {
              "location" : {
                 "lat" : 35.69946460,
                 "lng" : 139.70746810
              },
              "location_type" : "APPROXIMATE",
              "viewport" : {
                 "northeast" : {
                    "lat" : 35.70081358029149,
                    "lng" : 139.7088170802915
                 },
                 "southwest" : {
                    "lat" : 35.69811561970850,
                    "lng" : 139.7061191197085
                 }
              }
           },
           "types" : [ "postal_code" ]
        },
        {
           "address_components" : [
              {
                 "long_name" : "１",
                 "short_name" : "１",
                 "types" : [ "sublocality_level_3", "sublocality", "political" ]
              },
              {
                 "long_name" : "１丁目",
                 "short_name" : "１丁目",
                 "types" : [ "sublocality_level_2", "sublocality", "political" ]
              },
              {
                 "long_name" : "Okubo",
                 "short_name" : "Okubo",
                 "types" : [ "sublocality_level_1", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "locality", "political" ]
              },
              {
                 "long_name" : "Tokyo",
                 "short_name" : "Tokyo",
                 "types" : [ "administrative_area_level_1", "political" ]
              },
              {
                 "long_name" : "Japan",
                 "short_name" : "JP",
                 "types" : [ "country", "political" ]
              }
           ],
           "formatted_address" : "Japan, Tokyo, Shinjuku, Okubo, １丁目１",
           "geometry" : {
              "bounds" : {
                 "northeast" : {
                    "lat" : 35.69984490,
                    "lng" : 139.70749510
                 },
                 "southwest" : {
                    "lat" : 35.69787060,
                    "lng" : 139.70506090
                 }
              },
              "location" : {
                 "lat" : 35.69880630,
                 "lng" : 139.70610160
              },
              "location_type" : "APPROXIMATE",
              "viewport" : {
                 "northeast" : {
                    "lat" : 35.70020673029150,
                    "lng" : 139.7076269802915
                 },
                 "southwest" : {
                    "lat" : 35.69750876970850,
                    "lng" : 139.7049290197085
                 }
              }
           },
           "types" : [ "sublocality_level_3", "sublocality", "political" ]
        },
        {
           "address_components" : [
              {
                 "long_name" : "１丁目",
                 "short_name" : "１丁目",
                 "types" : [ "sublocality_level_2", "sublocality", "political" ]
              },
              {
                 "long_name" : "Okubo",
                 "short_name" : "Okubo",
                 "types" : [ "sublocality_level_1", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "locality", "political" ]
              },
              {
                 "long_name" : "Tokyo",
                 "short_name" : "Tokyo",
                 "types" : [ "administrative_area_level_1", "political" ]
              },
              {
                 "long_name" : "Japan",
                 "short_name" : "JP",
                 "types" : [ "country", "political" ]
              }
           ],
           "formatted_address" : "Japan, Tokyo, Shinjuku, Okubo, １丁目",
           "geometry" : {
              "bounds" : {
                 "northeast" : {
                    "lat" : 35.70128920,
                    "lng" : 139.70796940
                 },
                 "southwest" : {
                    "lat" : 35.69787060,
                    "lng" : 139.7019760
                 }
              },
              "location" : {
                 "lat" : 35.69868950,
                 "lng" : 139.70306310
              },
              "location_type" : "APPROXIMATE",
              "viewport" : {
                 "northeast" : {
                    "lat" : 35.70128920,
                    "lng" : 139.70796940
                 },
                 "southwest" : {
                    "lat" : 35.69787060,
                    "lng" : 139.7019760
                 }
              }
           },
           "types" : [ "sublocality_level_2", "sublocality", "political" ]
        },
        {
           "address_components" : [
              {
                 "long_name" : "Okubo",
                 "short_name" : "Okubo",
                 "types" : [ "sublocality_level_1", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "locality", "political" ]
              },
              {
                 "long_name" : "Tokyo",
                 "short_name" : "Tokyo",
                 "types" : [ "administrative_area_level_1", "political" ]
              },
              {
                 "long_name" : "Japan",
                 "short_name" : "JP",
                 "types" : [ "country", "political" ]
              }
           ],
           "formatted_address" : "Okubo, Shinjuku, Tokyo, Japan",
           "geometry" : {
              "bounds" : {
                 "northeast" : {
                    "lat" : 35.70956610,
                    "lng" : 139.7091340
                 },
                 "southwest" : {
                    "lat" : 35.69787310,
                    "lng" : 139.70060080
                 }
              },
              "location" : {
                 "lat" : 35.70418340,
                 "lng" : 139.70558750
              },
              "location_type" : "APPROXIMATE",
              "viewport" : {
                 "northeast" : {
                    "lat" : 35.70956610,
                    "lng" : 139.7091340
                 },
                 "southwest" : {
                    "lat" : 35.69787310,
                    "lng" : 139.70060080
                 }
              }
           },
           "types" : [ "sublocality_level_1", "sublocality", "political" ]
        },
        {
           "address_components" : [
              {
                 "long_name" : "Higashishinjuku Station",
                 "short_name" : "Higashishinjuku Station",
                 "types" : [ "train_station", "transit_station", "establishment" ]
              },
              {
                 "long_name" : "２７",
                 "short_name" : "２７",
                 "types" : [ "sublocality_level_3", "sublocality", "political" ]
              },
              {
                 "long_name" : "７丁目",
                 "short_name" : "７丁目",
                 "types" : [ "sublocality_level_2", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "sublocality_level_1", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "locality", "political" ]
              },
              {
                 "long_name" : "Tokyo",
                 "short_name" : "Tokyo",
                 "types" : [ "administrative_area_level_1", "political" ]
              },
              {
                 "long_name" : "Japan",
                 "short_name" : "JP",
                 "types" : [ "country", "political" ]
              }
           ],
           "formatted_address" : "Higashishinjuku Station, ７丁目-２７ Shinjuku, Tokyo, Japan",
           "geometry" : {
              "bounds" : {
                 "northeast" : {
                    "lat" : 35.7050830,
                    "lng" : 139.7144590
                 },
                 "southwest" : {
                    "lat" : 35.6926030,
                    "lng" : 139.7000410
                 }
              },
              "location" : {
                 "lat" : 35.697920,
                 "lng" : 139.7075490
              },
              "location_type" : "APPROXIMATE",
              "viewport" : {
                 "northeast" : {
                    "lat" : 35.7050830,
                    "lng" : 139.7144590
                 },
                 "southwest" : {
                    "lat" : 35.6926030,
                    "lng" : 139.7000410
                 }
              }
           },
           "types" : [ "train_station", "transit_station", "establishment" ]
        },
        {
           "address_components" : [
              {
                 "long_name" : "169-0072",
                 "short_name" : "169-0072",
                 "types" : [ "postal_code" ]
              },
              {
                 "long_name" : "Okubo",
                 "short_name" : "Okubo",
                 "types" : [ "sublocality_level_1", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "locality", "political" ]
              },
              {
                 "long_name" : "Tokyo",
                 "short_name" : "Tokyo",
                 "types" : [ "administrative_area_level_1", "political" ]
              },
              {
                 "long_name" : "Japan",
                 "short_name" : "JP",
                 "types" : [ "country", "political" ]
              }
           ],
           "formatted_address" : "Okubo, Shinjuku, Tokyo 169-0072, Japan",
           "geometry" : {
              "bounds" : {
                 "northeast" : {
                    "lat" : 35.70972520,
                    "lng" : 139.71028470
                 },
                 "southwest" : {
                    "lat" : 35.69710930,
                    "lng" : 139.69624280
                 }
              },
              "location" : {
                 "lat" : 35.70418340,
                 "lng" : 139.70558750
              },
              "location_type" : "APPROXIMATE",
              "viewport" : {
                 "northeast" : {
                    "lat" : 35.70972520,
                    "lng" : 139.71028470
                 },
                 "southwest" : {
                    "lat" : 35.69710930,
                    "lng" : 139.69624280
                 }
              }
           },
           "types" : [ "postal_code" ]
        },
        {
           "address_components" : [
              {
                 "long_name" : "Shinokubo Station",
                 "short_name" : "Shinokubo Station",
                 "types" : [ "train_station", "transit_station", "establishment" ]
              },
              {
                 "long_name" : "１０",
                 "short_name" : "１０",
                 "types" : [ "sublocality_level_3", "sublocality", "political" ]
              },
              {
                 "long_name" : "１丁目",
                 "short_name" : "１丁目",
                 "types" : [ "sublocality_level_2", "sublocality", "political" ]
              },
              {
                 "long_name" : "Hyakunincho",
                 "short_name" : "Hyakunincho",
                 "types" : [ "sublocality_level_1", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "locality", "political" ]
              },
              {
                 "long_name" : "Tokyo",
                 "short_name" : "Tokyo",
                 "types" : [ "administrative_area_level_1", "political" ]
              },
              {
                 "long_name" : "Japan",
                 "short_name" : "JP",
                 "types" : [ "country", "political" ]
              }
           ],
           "formatted_address" : "Shinokubo Station, １丁目-１０ Hyakunincho, Shinjuku, Tokyo, Japan",
           "geometry" : {
              "bounds" : {
                 "northeast" : {
                    "lat" : 35.7078270,
                    "lng" : 139.708840
                 },
                 "southwest" : {
                    "lat" : 35.6953970,
                    "lng" : 139.6937970
                 }
              },
              "location" : {
                 "lat" : 35.7013060,
                 "lng" : 139.7000440
              },
              "location_type" : "APPROXIMATE",
              "viewport" : {
                 "northeast" : {
                    "lat" : 35.7078270,
                    "lng" : 139.708840
                 },
                 "southwest" : {
                    "lat" : 35.6953970,
                    "lng" : 139.6937970
                 }
              }
           },
           "types" : [ "train_station", "transit_station", "establishment" ]
        },
        {
           "address_components" : [
              {
                 "long_name" : "Shinjuku Station",
                 "short_name" : "Shinjuku Station",
                 "types" : [ "train_station", "transit_station", "establishment" ]
              },
              {
                 "long_name" : "３８",
                 "short_name" : "３８",
                 "types" : [ "sublocality_level_3", "sublocality", "political" ]
              },
              {
                 "long_name" : "３丁目",
                 "short_name" : "３丁目",
                 "types" : [ "sublocality_level_2", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "sublocality_level_1", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "locality", "political" ]
              },
              {
                 "long_name" : "Tokyo",
                 "short_name" : "Tokyo",
                 "types" : [ "administrative_area_level_1", "political" ]
              },
              {
                 "long_name" : "Japan",
                 "short_name" : "JP",
                 "types" : [ "country", "political" ]
              }
           ],
           "formatted_address" : "Shinjuku Station, ３丁目-３８ Shinjuku, Tokyo, Japan",
           "geometry" : {
              "bounds" : {
                 "northeast" : {
                    "lat" : 35.7005790,
                    "lng" : 139.7124960
                 },
                 "southwest" : {
                    "lat" : 35.6812220,
                    "lng" : 139.6878250
                 }
              },
              "location" : {
                 "lat" : 35.6909210,
                 "lng" : 139.7002580
              },
              "location_type" : "APPROXIMATE",
              "viewport" : {
                 "northeast" : {
                    "lat" : 35.7005790,
                    "lng" : 139.7124960
                 },
                 "southwest" : {
                    "lat" : 35.6812220,
                    "lng" : 139.6878250
                 }
              }
           },
           "types" : [ "train_station", "transit_station", "establishment" ]
        },
        {
           "address_components" : [
              {
                 "long_name" : "160-0022",
                 "short_name" : "160-0022",
                 "types" : [ "postal_code" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "sublocality_level_1", "sublocality", "political" ]
              },
              {
                 "long_name" : "Shinjuku",
                 "short_name" : "Shinjuku",
                 "types" : [ "locality", "political" ]
              },
              {
                 "long_name" : "Tokyo",
                 "short_name" : "Tokyo",
                 "types" : [ "administrative_area_level_1", "political" ]
              },
              {
                 "long_name" : "Japan",
                 "short_name" : "JP",
                 "types" : [ "country", "political" ]
              }
           ],
           "formatted_address" : "Shinjuku, Tokyo 160-0022, Japan",
           "geometry" : {
              "bounds" : {
                 "northeast" : {
                    "lat" : 35.70311470,
                    "lng" : 139.71922230
                 },
                 "southwest" : {
                    "lat" : 35.68222330,
                    "lng" : 139.69241360
                 }
              },
              "location" : {
                 "lat" : 35.69110170,
                 "lng" : 139.7067630
              },
              "location_type" : "APPROXIMATE",
              "viewport" : {
                 "northeast" : {
                    "lat" : 35.70311470,
                    "lng" : 139.71922230
                 },
                 "southwest" : {
                    "lat" : 35.68222330,
                    "lng" : 139.69241360
                 }
              }
           },
           "types" : [ "postal_code" ]
        },
     /* REMOVED FOR BREVITY */
     ],
     "status" : "OK"
  }
  </code></pre>
  
  <p>Google Maps API is in English, but its results are too low level. For instance, cities and towns are normally identified with the <code>locality</code> type. Here the locality is Shinjuku, which is one of the special wards of Tokyo, but it is an implementation detail of the administration system of Tokyo. I want to get Tokyo as the city. Of course, I could search for the <code>administrative_area_level_1</code> type token instead of the <code>locality</code>, knowing that Tokyo is actually one of the Japan prefectures. </p>
  
  <p>The foursquare API has the same problem, it reports the city as Shinjuku and the state as Tokyo, only both as in Japanese!</p>
  
  <p>Are there any simple high level reverse geocoding API which returns common sense results? I mean, no one outside Japan says "I am going to Shinjuku". People say "I am going to Tokyo".</p>
  
  <p>Thanks.</p>