飲食店・レストラン検索といえば食べログAPI、と思ってたんだけど。
一日あたりのアクセス回数は200回までとなっております。 制限を超えた場合、同日中はご利用いただけなくなりますので、予めご了承ください。
食べログAPI マニュアル[食べログ]
さいきんデータが取得できてないと思ったらこういうこと。。。
というわけで、食べログを使うのをやめて、ぐるなびやホットペッパーもいいけどたぶんもっと飲食店・レストランの数が多そうな気がする Yahoo! のローカルサーチAPI を試してみた。
ローカルサーチAPIは、店舗、イベント、クチコミ情報などの地域・拠点情報(POI)を検索するためのAPIです。
検索対象は、全国の店舗を網羅した電話帳データおよび店舗オーナーやユーザーからの投稿データです。
自分のデータもアップロードして検索対象とすることができます。アップロード方法についてはYOLPカセットギャラリー ご利用ガイドを参照してください。
ローカルサーチAPIの主な機能は以下となります。
・地域・拠点情報の名称および業種をキーワードで検索できます。
・中心位置を指定して円範囲で絞り込めます。
・矩形範囲を指定して絞り込めます。
Yahoo!デベロッパーネットワーク - 地図 - ローカルサーチ
というわけで、「全国の店舗を網羅した電話帳データ」から「グルメ業種」に絞って「中心位置を指定して円範囲」で飲食店・レストランを検索してみる。
こんなURLでアクセスしてみたら、
http://search.olp.yahooapis.jp/OpenLocalPlatform/V1/localSearch?cid=d8a23e9e64a4c817227ab09858bc1330&gc=01&lat=35.172059&lon=136.889741&dist=50&sort=dist&group=gid&detail=simple&appid=アプリケーションID
こんな感じの結果。
<?xml version="1.0" encoding="utf-8"?>
<YDF xmlns="http://olp.yahooapis.jp/ydf/1.0" totalResultsReturned="10" totalResultsAvailable="27692" firstResultPosition="1">
<ResultInfo>
<Count>10</Count>
<Total>27692</Total>
<Start>1</Start>
<Status>200</Status>
<Description></Description>
<Copyright></Copyright>
<Latency>0.028</Latency>
</ResultInfo>
<Feature>
<Id>22330922568</Id>
<Gid>kLz0e8VHLTs</Gid>
<Name>撫酣人</Name>
<Geometry>
<Type>point</Type>
<Coordinates>136.889227222222,35.172446111111</Coordinates>
</Geometry>
<Category></Category>
</Feature>
<Feature>
<Id>22330818641</Id>
<Gid>ECy1kFkedq2</Gid>
<Name>鑠鑠</Name>
<Geometry>
<Type>point</Type>
<Coordinates>136.889399444444,35.171374166667</Coordinates>
</Geometry>
<Category></Category>
</Feature>
<Feature>
<Id>22330667236</Id>
<Gid>psmbbVQJh-I</Gid>
<Name>ダブリン(DUBLIN)roomcafe’</Name>
<Geometry>
<Type>point</Type>
<Coordinates>136.889285555556,35.172690555556</Coordinates>
</Geometry>
<Category></Category>
</Feature>
(以下略)
3店舗分でこれだけのデータ。
サンプルのパラメータ概略。
パラメータ | 説明 |
---|---|
cid=d8a23e9e64a4c817227ab09858bc1330 | カセットID (なにそれ…) 要するにどこのデータベースを参照するかの指定。カセットという名のデータベースのリストは YOLPカセットギャラリー - Yahoo!ロコ にある。飲食店を検索するなら電話帳のカセットID「d8a23e9e64a4c817227ab09858bc1330」で足りると思う。 |
gc=01 | 業種コード「01(グルメ)」 Yahoo!デベロッパーネットワーク - 地図 - 業種マスター を使えば細かいジャンル(業種)が取得できるらしい。 |
lat=35.172059 | 検索する場所の中心の緯度 |
lon=136.889741 | 検索する場所の中心の経度 |
dist=50 | 検索する範囲。指定する数値の単位はキロメートル(最大50km)。小数点も指定可能。円形に店舗検索。 |
sort=dist | 近い順にソート |
group=gid | 重複店舗(なんでそんなのあるの…)をひとつにまとめて表示(distinct=true/falseでもうちょっと細かい制御もできるみたい) |
detail=simple | 結果データをシンプルに。ゴージャスな結果にするにはfullを指定する。デフォルトはstandardという真ん中ぐらいのデータ量。 |
appid=アプリケーションID | このへんから取得可能 ⇒ Yahoo!デベロッパーネットワーク - アプリケーションの管理 |
detail=simple はたしかにシンプルでいいんだけど、せっかくなので detail=full にしてみたらこんな感じの結果が返ってきた。けっこう盛りだくさん。
<?xml version="1.0" encoding="utf-8"?>
<YDF xmlns="http://olp.yahooapis.jp/ydf/1.0" totalResultsReturned="10" totalResultsAvailable="27692" firstResultPosition="1">
<ResultInfo>
<Count>10</Count>
<Total>27692</Total>
<Start>1</Start>
<Status>200</Status>
<Description></Description>
<Copyright></Copyright>
<Latency>0.041</Latency>
</ResultInfo>
<Feature>
<Id>22330922568</Id>
<Gid>kLz0e8VHLTs</Gid>
<Name>撫酣人</Name>
<Geometry>
<Type>point</Type>
<Coordinates>136.889227222222,35.172446111111</Coordinates>
</Geometry>
<Category></Category>
<Description></Description>
<Style></Style>
<Property>
<Uid>681d061b968c06c18b14232eb85815cd6c63e9f8</Uid>
<CassetteId>d8a23e9e64a4c817227ab09858bc1330</CassetteId>
<Yomi>ブカンド</Yomi>
<Country>
<Code>JP</Code>
<Name>日本</Name>
</Country>
<Address>愛知県名古屋市中村区名駅3丁目21−4</Address>
<AddressElement>
<Name>愛知県</Name>
<Kana>あいちけん</Kana>
<Level>prefecture</Level>
</AddressElement>
<AddressElement>
<Name>名古屋市中村区</Name>
<Kana>なごやしなかむらく</Kana>
<Level>city</Level>
</AddressElement>
<AddressElement>
<Name>名駅</Name>
<Kana>めいえき</Kana>
<Level>oaza</Level>
</AddressElement>
<AddressElement>
<Name>3丁目</Name>
<Kana>3ちょうめ</Kana>
<Level>aza</Level>
</AddressElement>
<AddressElement>
<Name>21−4</Name>
<Level>detail1</Level>
</AddressElement>
<GovernmentCode>23105</GovernmentCode>
<AddressMatchingLevel>6</AddressMatchingLevel>
<Tel1>052-588-7778</Tel1>
<Genre>
<Code>0110001</Code>
<Name>和風居酒屋</Name>
</Genre>
<Area>
<Code>000050</Code>
<Name>名古屋</Name>
</Area>
<Station>
<Id>24930</Id>
<SubId>2493001</SubId>
<Name>国際センター</Name>
<Railway>名古屋市営桜通線</Railway>
<Exit>1</Exit>
<ExitId>7803</ExitId>
<Distance>106</Distance>
<Time>1</Time>
</Station>
<Station>
<Id>24930</Id>
<SubId>2493001</SubId>
<Name>国際センター</Name>
<Railway>名古屋市営桜通線</Railway>
<Exit>2</Exit>
<ExitId>7804</ExitId>
<Distance>196</Distance>
<Time>2</Time>
</Station>
<Station>
<Id>24930</Id>
<SubId>2493001</SubId>
<Name>国際センター</Name>
<Railway>名古屋市営桜通線</Railway>
<Exit>4</Exit>
<ExitId>7806</ExitId>
<Distance>197</Distance>
<Time>2</Time>
</Station>
<Detail>
<ZipCode>4500002</ZipCode>
<Altitude>2</Altitude>
<Copyright>(C)Yahoo Japan</Copyright>
<CassetteOwner>ヤフー株式会社</CassetteOwner>
<CassetteHeader></CassetteHeader>
<CassetteFooter></CassetteFooter>
<CassetteOwnerUrl></CassetteOwnerUrl>
<CassetteOwnerMobileUrl></CassetteOwnerMobileUrl>
<PcUrl1></PcUrl1>
</Detail>
</Property>
</Feature>
(以下略)
1店舗の情報でこれだけ出力される。
あと、こんなのもあったり。
■ ローカルサーチAPIの変更内容
ローカルサーチAPIに、Yahoo!ロコと同等の検索機能を追加いたします。
3文字以下のひらがなまたはカタカナでのクエリのロジックが変更になります。より絞り込まれた結果が返ってくるようになります。
「ランチ」「飲み放題」「食べ放題」「女子会」「個室」で検索した場合、自動的にフラグ検索に切り替わります。
「ランチ」の場合は、LunchFlagがtrueのものが対象となります。
「飲み放題」の場合は、AllYouCanDrinkFlagがtrueのものが対象となります。
「食べ放題」の場合は、AllYouCanEatFlagがtrueのものが対象となります。
「女子会」の場合は、LadysPartyFlagがtrueのものが対象となります。
「個室」の場合は、PrivateDiningFlagがtrueのものが対象となります。
※以下のパラメータを使うことで上記のYahoo!ロコ検索機能をオフにできます。
対象パラメータ: loco_mode=false
ローカルサーチAPIの検索結果は、データの追加等で日々変わっておりますのでご了承ください。
「ローカルサーチAPI」「ジオコーダAPI」の仕様変更のお知らせ (Yahoo! JAPAN Tech Blog)
Ref.
- Yahoo!デベロッパーネットワーク
- Yahoo!デベロッパーネットワーク - 地図 - ローカルサーチ
- Yahoo!デベロッパーネットワーク - 地図 - 業種マスター
- YOLPカセットギャラリー - Yahoo!ロコ
tags: webapi yahoo yahoo_maps_api groumet restaurant
Posted by NI-Lab. (@nilab)