エリアマスタ取得API


URL:https://api.gnavi.co.jp/master/AreaSearchAPI/20150630/

※旧バージョン(http://api.gnavi.co.jp/ver2/AreaSearchAPI/、https://api.gnavi.co.jp/ver1/AreaSearchAPI/)をお使いの場合は、こちらのバージョンに変更をお願いします。
詳細は、「APIのURL変更のお知らせ」をご確認ください。

リクエストパラメータ

パラメータ名 必須 説明 備考
keyid string アクセスキー ぐるなびより提供されたアクセスキー
format   string レスポンス形式 xmlまたはjson(callback関数指定時にJSONP形式で出力)
callback   string コールバック関数 formatが「json」の場合のみ
lang   string 返却言語 ja: 日本語, zh_cn: 中国語 (簡体字), zh_tw: 中国語 (繁体字), ko: 韓国語, en: 英語

レスポンス

パラメータ名
(タグ名、@付きは属性名)
出現回数 説明 備考
response 1 complexType レスポンスルートノード  
@api_version - string APIのバージョン  
  area 複数回 complexType エリア情報  
area_code 1 string エリアコード  
area_name 1 string エリア名称 関東、関西などのエリア名称

サンプル

下記よりご確認ください。またAPIテストツールもご用意しています。

<!DOCTYPE html>
<html lang="ja" dir="ltr">
<head>
<meta charset="utf-8" />
<title>JSONPで地域マスタAPIの結果を取得するサンプルコード</title>
</head>
<body>
<input type="text" placeholder="enter your access key here" class="js--key"><input type="button" value="apply" class="js--apply" />
<script src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
<script>

(function(){

  var url = 'https://api.gnavi.co.jp/master/AreaSearchAPI/20150630/?callback=?';
  var params = {
    keyid: '',
    format: 'json'
  };

  var showResult = function(result){
    var res = '';
    for ( var i in result.area ){
      res += result.area[i].area_code + ' ' + result.area[i].area_name + '\n';
    }
    alert(res);
  }

  $(document).on('click', '.js--apply', function(){
    params.keyid = $('.js--key').val();
    $.getJSON(url, params, function(result){
      showResult(result);
    });
  });

})(jQuery);

</script>
</body>
</html>
                
<?php
/*****************************************************************************************
  ぐるなびWebサービスのマスタ検索APIをパースするプログラム
  注意:アクセスキーはユーザ登録後に発行されるkeyを指定してください
*****************************************************************************************/

//エンドポイントのURIとフォーマットパラメータを変数に入れる
$uri   = "https://api.gnavi.co.jp/master/AreaSearchAPI/20150630/";
//APIアクセスキーを変数に入れる
$acckey= "input your accesskey";
//返却値のフォーマットを指定
$format= "json";

//URI組み立て
$url  = sprintf("%s%s%s%s%s", $uri, "?format=", $format,"&keyid=", $acckey);
//API実行
$json = file_get_contents($url);
//取得した結果をオブジェクト化
$obj  = json_decode($json);

//結果をパース
foreach((array)$obj as $key => $val){
   if(strcmp($key,"area") == 0){
       foreach($val as $k =>$v){
          echo $v->{'area_code'} . "\t" . $v->{'area_name'} ."\n";
       }
   }
}
?>
                
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#*****************************************************************************************
# ぐるなびWebサービスのエリアマスタ検索APIを実行しパースするプログラム
# 注意:APIアクセスキーの値にはユーザ登録で取得したものを入れてください。
#*****************************************************************************************
import sys
import urllib
import json

####
# 変数の型が文字列かどうかチェック
####
def is_str( data = None ) :
  if isinstance( data, str ) or isinstance( data, unicode ) :
    return True
  else :
    return False

####
# 初期値設定
####
# APIアクセスキー
keyid     = "input your accesskey"
# エンドポイントURL
url       = "https://api.gnavi.co.jp/master/AreaSearchAPI/20150630/"

####
# APIアクセス
####
# URLに続けて入れるパラメータを組立
query = [
  ( "format",    "json"    ),
  ( "keyid",     keyid     )
]
# URL生成
url += "?{0}".format( urllib.urlencode( query ) )
# API実行
try :
  result = urllib.urlopen( url ).read()
except ValueError :
  print u"APIアクセスに失敗しました。"
  sys.exit()

####
# 取得した結果を解析
####
data = json.loads( result )

# エラーの場合
if "error" in data :
  if "message" in data :
    print u"{0}".format( data["message"] )
  else :
    print u"データ取得に失敗しました。"
  sys.exit()

# データがなかったら終了
if not "area" in data :
  print u"エリアデータがなかったため終了します。"
  sys.exit()

# 出力件数
disp_count = 0

# マスタデータ取得
for area in data["area"] :
  line                 = []
  area_code            = ""
  area_name            = ""

  # エリアコード
  if "area_code" in area and is_str( area["area_code"] ) :
    area_code = area["area_code"]
  line.append( area_code )
  # エリア名称
  if "area_name" in area and is_str( area["area_name"] ) :
    area_name = u"{0}".format( area["area_name"] )
  line.append( area_name )
  # タブ区切りで出力
  print "\t".join( line )
  disp_count += 1

# 出力件数を表示して終了
print "----"
print u"{0}件出力しました。".format( disp_count )
sys.exit()
                
package jp.javadrive;
import java.net.URL;
import java.net.HttpURLConnection;
import com.fasterxml.jackson.databind.*;
/*******************************************************************************
 * ぐるなびWebサービスのエリアマスタ取得APIを実行し結果をパースするプログラム
 * 注意:アクセスキーはアカウント登録時に発行されたキーを指定してください。
 *      JsonをパースするためにライブラリにJacksonを追加しています。
 ******************************************************************************/
public class TestJavaArea {

      public static void main(String[] args) {

          // アクセスキー
          String acckey = "input your accesskey";
          // 返却形式
          String format = "json";
          // エンドポイント
          String gnaviRestUri = "https://api.gnavi.co.jp/master/AreaSearchAPI/20150630/";
          String prmFormat = "?format=" + format;
          String prmKeyid = "&keyid=" + acckey;
          //URI組み立て
          StringBuffer uri = new StringBuffer();
          uri.append(gnaviRestUri);
          uri.append(prmFormat);
          uri.append(prmKeyid);

          //APIを実行して結果を表示
          getNodeList(uri.toString());
      }

        private static void getNodeList(String url) {
            try {
                URL restSearch = new URL(url);
                HttpURLConnection http = (HttpURLConnection)restSearch.openConnection();
                http.setRequestMethod("GET");
                http.connect();
                //Jackson
                ObjectMapper mapper = new ObjectMapper();
                viewJsonNode(mapper.readTree(http.getInputStream()));
            } catch (Exception e) {
          //TODO: 例外を考慮していません
            }
        }

        private static void viewJsonNode(JsonNode nodeList){
            //結果を表示
            if(nodeList != null){
                for(JsonNode n : nodeList.get("area")){
                  String area_code = n.path("area_code").asText();
                  String area_name = n.path("area_name").asText();
                  System.out.println(area_code + "¥t" + area_name);
                }
            }
        }
}
                

エラー仕様

パラメータ名
(タグ名)
出現回数 説明
gnavi 1 complexType ルートノード
@api_version - string APIのバージョン
  error 1 complexType エラー
  code 1 integer エラーコード(詳細は「エラーコード一覧」をご覧ください)
message 1 string エラーメッセージ

エラーコード一覧

エラーコード エラーメッセージ エラー内容
600 NoShop 指定された店舗の情報が存在しない。
601 Invalid Access 不正なアクセス(認証エラー)。
602 Invalid Shop Number 不正なぐるなび店舗IDパラメータが指定された。
603 InvalidType 不正なパラメータが指定された。
604 Internal Server Error 処理中にエラーが発生した。

サンプルエラーレスポンス

<gnavi api_version="20150630">
  <error>
    <code>603</code>
    <message>指定されたパラメーターは存在しません</message>
  </error>
</gnavi>
              

データを正しく返却できない際は、上記のようなエラーデータを返却します(返却形式がXMLの場合)。

さっそく「ぐるなび API」を使ってみる