iTunes Store/App Store Search API を使ってみる


iTunes Store, App Store の Search API の使い方の説明です (2011/8/13 新規作成)。

API / 基本形 / 引数 / / 戻る / トップページ


API

iTunes Store, App Store, iBookstore, Mac App Store では、 その項目を検索する Search API が提供されています。 アフィリエイト用に用意されているようですが、アフィリエイトとは関係なく、 登録不要で使える便利な API です。 iTunes の曲や、iPhone/iPad/iPod touch 用の iOS アプリ、 Mac App Store のアプリを検索して、詳しい情報が取得できます。
 
検索しても日本語の情報が少なかったので、 自分で調べた情報をここにメモがてら、残していこうと思います。 拙作の bgmTunes で これらの機能を使っています。

Search API 呼び出しの基本形

Search API を呼び出すのは簡単で、REST API で呼び出し、 JSON フォーマットのデータを受け取ります。 そのため、JavaScript を使って Web ページから呼び出すこともできますし、 適当なプログラミング言語から http 接続を使って呼び出すことも簡単です。
 
Search API の URL は http://itunes.apple.com/search? となります。 引数の指定で必須なのは、検索語を示す term と、国を示す country のみです。 API Key などは必要ありません。 なお、http://ax.phobos.apple.com.edgesuite.net/WebObjects/MZStoreServices.woa/wsSearch でも呼べますが、非公式な指定のようです。
 
引数 term に日本語を渡したい時は、UTF-8 で文字列を用意して、 URL エンコーディングをすれば良いです。 country には、日本なら JP を渡します。
何を探したいかは、引数 entity で指定します。 曲なら song, album、アプリなら software, iPadSoftware, macSoftware などを 指定します (例:「Beatles」の曲を検索iOS アプリの「ゆれくる」を検索)。
 
もう一つ、ID を指定して情報を引っ張ってくる lookup もあります。 URL は http://itunes.apple.com/lookup? となります。 iTunes ID であれば、引数 id にその値を渡すだけです (カンマ区切りで 複数指定可能)。 ID は search 結果の中の trackId です。
 
公式ドキュメントには明示されていませんが、lookup は search と 同じ引数指定ができるようで、逆に言えば指定をしないと 米国版の情報を取りに行ってしまいます。 例えば、太鼓の達人の情報を取ろうとして、 http://itunes.apple.com/lookup?id=366956158 と指定しても国内でしか提供されていないこのアプリの情報は取れません。 そのため、 http://itunes.apple.com/lookup?country=JP&id=366956158 と引数 country を指定すれば 情報が取れるようになります。

Search API の引数の詳細

API に渡せる引数は 公式ドキュメント に乗っていますが、実際には書かれていない引数も渡せるようです。
 
隠し引数として、検索結果を何番目から表示するか指定できる offset があります。 引数 limit で結果件数を最大 200 件まで指定できますが、offset と併用して 複数回 API を呼び出すことで、もっと多くの結果を取得できます。

Search API 以外で情報を取る方法

Search API は細かい指定ができないため、目的の情報を取るのに 他の機能を利用した方が便利なことがあります。
 
各ジャンルの人気順の情報を取るなら、 RSS Generator を 使うと良いです。 その名の通り RSS でデータが得られるため、 XML でパースすれば目的の情報が取れます。
RSS Generator で生成される URL は https://itunes.apple.com/jp/rss/topsongs/limit=10/xml のような形になってますが、 末尾を /json にすれば JSON フォーマットに、 さらに 「?callback=関数名」を加えると JSONP フォーマットになるようです。 URL に含まれる limit=10/ は数値を増やすことで検索結果件数を変えられますが、 最大 400 まで指定できるようです。
 
RSS Generator で使われている Genre ID (Search API の引数で指定できる genreIndex とは別ものなので注意) は Genre IDs Appendix に一覧の一部があり、 日本の Genre ID の全部は、 http://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/genres?cc=jp から JSON 形式で取得できます。 引数 id で Genre ID を指定してそのジャンル以下のみを得ることもできます。 ここで得られる JSON データには各ジャンルのページや RSS の URL も載っており、 それによると https://itunes.apple.com/WebObjects/MZStoreServices.woa/ws/charts?cc=jp&g=14&name=Songs のような URL でそのジャンルのランキング上位の曲などの ID が JSON 形式で得られるようです。 さらに引数 limit で取得件数を指定できるようです。
 
iTunes のデータベースの中身を丸ごと提供する Enterprise Partner Feed もあります。 全曲・アプリに対して処理する場合に便利ですが、 パートナーシップを結ぶ必要があり、主に法人向けと思われます。
 
また、ドキュメント化されていない隠し API ですが、カスタマーレビューを http://itunes.apple.com/jp/rss/customerreviews/id=366956158/json のような URL で取得できるようです。 この指定だと JSON フォーマットで (こちらも「?callback=関数名」を加えて JSONP フォーマットにできます)、 末尾を /xml にすれば XML フォーマットになります。

戻る