レストランのデータを取得したい。
そういう時はぐるなびのレストラン検索APIがおすすめ。
食べログのように点数は無いけれど、お店のURLや画像、価格を入手できる。
一応食べログも探してみたけど、APIは公開されていない感じ。
Yelp!という海外のサービスでもレストラン検索のAPIは公開されているようだけど、ドキュメントが英語だったので使うのをやめた。
「ぐるなび Web Service」は開発者にとても親切なサイトだ。
例えば、レストラン検索のAPIの仕様は以下に公開されている。
https://api.gnavi.co.jp/api/manual/restsearch/
私は過去にNews API、Yelp、FourSquareなど海外サービスのAPIを使ってサービスを開発したけど、こんなに丁寧なサイトは初めてみたかもしれない。
テストツールも公開されているので、リクエストやレスポンスをテストできる。
テストツールを叩きながら、私の作っているアプリを以下の仕様にした。
- 位置情報とカテゴリー(料理の種類:「寿司」)を指定する
- APIを叩いて戻ってきたお店の位置情報やURLを表示する
まずはアカウントを登録してKeyIDを取得。
メールアドレスを登録したらすぐにKeyIDが送られてきた。
調査目的だと3ヶ月が有効期限のようだ。
カテゴリー指定は大業態マスタ取得APIを使う。
https://api.gnavi.co.jp/api/manual/categorylmaster/
大業態マスタAPIのリクエストとレスポンスは以下の通り。
# keyIDはアカウントに登録するともらえる let url = "https://api.gnavi.co.jp/master/CategoryLargeSearchAPI/v3/?keyid=" + keyId # 上記のURLにアクセスすると以下のレスポンスが返ってくる { "@attributes": { "api_version": "v3" }, "category_l": [ { "category_l_code": "RSFST09000", "category_l_name": "居酒屋" }, { "category_l_code": "RSFST02000", "category_l_name": "日本料理・郷土料理" }, :
カテゴリーコードが取得できた。
次にレストラン検索APIを使って周辺のお店情報を取得する。
緯度と経度、カテゴリーコードを指定する。
var url = "https://api.gnavi.co.jp/RestSearchAPI/v3/?keyid=" + keyId url += "&latitude=" + String(loc.latitude) url += "&longitude=" + String(loc.longitude) url += "&category_l=" + "RSFST08000" //ラーメン
これで周辺のラーメン屋の情報が取得できた。
便利ですね〜。