PHPで楽天トラベル施設検索APIを利用する

PHPで楽天トラベル施設検索APIを利用する

PHP(Laravel)で楽天トラベル施設検索APIを使った宿泊施設検索を行ったときの記録。

楽天ウェブサービスとは

楽天ウェブサービスは、無料で利用できる楽天の公開情報を取得できるAPIサービス。

楽天の楽天トラベル施設検索APIドキュメント

▼楽天の楽天トラベル施設検索APIドキュメント
https://webservice.rakuten.co.jp/api/simplehotelsearch/

API利用方法

ヘッダメニューの「アプリID発行」リンクから、アプリIDを発行する

アプリIDをつけて、以下のようなURLにアクセスすると、
「東京駅の半径1Km圏内の宿の検索結果がXML形式で返される。

https://app.rakuten.co.jp/services/api/Travel/SimpleHotelSearch/20170426?
applicationId=[アプリID]
&format=xml
&latitude=128440.51
&longitude=503172.21
&searchRadius=1

やりたいこと

ある場所(緯度・経度で指定)から半径3km圏内にある宿泊施設を調べたい。

リクエストパラメータについて

リクエストパラメータは色々あるが、以下の項目を考慮してAPI呼び出しを行うといい感じだった。

項目名パラメーターデフォルト備考
アフィリエイトIDaffiliateId指定無しIDを指定すると、施設情報ページURLなどのURL全般がアフィリエイトURLで返される。
レスポンス形式formatjson
json か xml を選択可。
json を選択した場合、 callback パラメーター指定により jsonp 形式にすることも可能。

出力フォーマットバージョン formatVersion1出力フォーマットのバージョン指定。
2 を指定すると、JSONの出力方法が改善されて参照しやすくなる。
緯度latitude緯度を指定。
経度longitude経度を指定。
緯度経度タイプdatumType入力及び出力パラメータの緯度経度タイプを指定。
1:世界測地系、単位は度。
2:日本測地系、単位は秒。
検索半径searchRadius緯度経度検索時の検索半径(単位km)
0.1以上、3.0以下であり、小数点以下は1桁までであること
1ページあたりの取得件数hits301ページ毎の取得件数を制限するパラメータ。
1以上、30以下の整数であること。
施設画像サイズhotelThumbnailSize2出力パラメータの施設画像サムネイルURLの画像サイズを指定する。
1:小 60 x 60
2:中 80 x 80
3:大 200 x 200

<!>あとがき
サムネイルURLは、hotelThumbnailUrlの名称で返ってくるが、hotelImageUrlと同じ画像だった。hotelImageUrlのサイズが、500×500で返ってくるので、そちらを利用した。
返却情報タイプresponseTypemiddle出力パラメータの返却情報タイプを指定する。
small:最低限の情報のみ
middle:中くらい
large:すべての情報
ソートsortstandardstandard:おすすめ順
+roomCharge:最安値料金(安い順)
-roomCharge:最安値料金(高い順)

▼おすすめ順とは
1. 区分コード、施設番号による検索の場合
standard:施設番号順
2. 経度緯度による検索の場合
standard:指定された座標から近い順

実装方法について

guzzlehttp/guzzle ライブラリを使うと便利。
Laravel7の場合は、標準ライブラリになっている。

$response = Http::get('https://app.rakuten.co.jp/services/api/Travel/SimpleHotelSearch/20170426/', [
    'applicationId' => '00000000000000000000',
    'latitude' => '128440.51',
    'longitude' => '503172.21',
    'searchRadius' => 1
]);

▼HTTPクライアント 7.x Laravel
https://readouble.com/laravel/7.x/ja/http-client.html

Web技術カテゴリの最新記事