この記事で解決するお悩み
- 楽天APIのジャンルID一覧が知りたい
- 楽天APIのジャンルIDを自分で調べたい
はじめに
楽天APIのジャンルID一覧とPythonでの調べ方を紹介します。ジャンルIDとは、楽天APIで楽天商品のジャンルを指定する際に必要なIDのことです。このジャンルIDを使えば、簡単にジャンルごとのランキングやURLを拾ってくることができます。
今回は、Pythonのサンプルコードも載せてあるので、「より深い階層のジャンルIDを調べたい!」という方や、IDの追加や更新が起きた際に「最新のジャンルIDを調べたい!」という方に役立つ情報となっています。ぜひ参考にしてみてください。
ジャンルID一覧(レベル2まで)
PythonでのジャンルID調べ方
事前準備
楽天APIのアプリ登録が済んでいない方(アプリケーションIDまだ発行していない方)はRakuten Webserviceのページの「アプリID発行」から登録・ID発行を済ませてください。(下記画像青枠部分)

Pythonソースコード
楽天ジャンル検索APIを使って、ジャンルを取得することも可能です。早速コード載せていきます。11行目(ハイライトされた箇所)のアプリIDを適宜自分のIDに変えてください。
import requests
import pandas as pd
import json
import time
import copy
#urlの作成
base_url = 'https://app.rakuten.co.jp/services/api/IchibaGenre/Search/20140222' #ジャンル検索APIのベースとなるURL
item_parameters = {
'applicationId': '自分のアプリケーションID',
'format': 'json',
'formatVersion': 2,
'genreId': 0,
}
#ジャンルID、ジャンル名を取得する
#df: 取得ジャンル情報、g_list: 対象ジャンル情報、g_level: ジャンル階層、g_id: ジャンルID、g_name: ジャンル名
def get_genre(df, g_list, g_level, g_id, g_name, max_level):
# 関数内のリストにのみ反映させる
temp_g = copy.deepcopy(g_list)
# ジャンルID
temp_g.extend([g_level, g_id, g_name])
# 追加しようとするリストのサイズがDFの列サイズより小さいと警告が出るため、対処
add_null = 0
if len(df.columns) > len(temp_g):
while len(df.columns) > len(temp_g):
temp_g.append("")
add_null += 1
df = df.append([temp_g])
# 列サイズの対処処理を実施していた場合、元の列数に戻す
if add_null > 0:
for i in range(add_null):
temp_g.pop()
# 現階層に対する子ジャンルが存在するかをチェックする
item_parameters["genreId"] = g_id
get_api = requests.get(base_url, params=item_parameters)
temp_list = get_api.json()
time.sleep(1) #楽天API規約に則って1secあける
try:
# 子ジャンルが存在する場合、階層を下げてジャンル情報を取得する
child_genre_id = temp_list["children"]
for j in child_genre_id:
if j["genreLevel"]>max_level:
break
df = get_genre(df, temp_g, j["genreLevel"], j["genreId"], j["genreName"], max_level)
except:
pass
return df
def main(max_level):
# 最上位階層の取得
r = requests.get(base_url, params=item_parameters)
item_data = r.json()
time.sleep(1) #楽天API規約に則って1secあける
# 取得したジャンル情報を保持するデータフレームを用意
df_g = pd.DataFrame()
# 階層を掘ってジャンル情報を取得する
for i in item_data["children"]:
# 最上段ジャンル情報
parent_g_level = i["genreLevel"]
parent_g_id = i["genreId"]
parent_g_name = i["genreName"]
# 最上段ジャンルに紐づく、子ジャンル情報の取得
g_list = []
df_g = get_genre(df_g, g_list, parent_g_level, parent_g_id, parent_g_name, max_level)
df_g.to_csv("List.csv", header=False, index=False, encoding='utf_8_sig')
return
if __name__ == "__main__":
max_level = 2
main(max_level)
まず、親ジャンルを調べて、84行目(ハイライトされた箇所)で指定した階層まで、どんどん探索していくコードになっています。ちなみに全階層調べようとすると、筆者の環境で数時間以上かかってしまいます。必要な箇所だけ深く探索したり、階層レベルを絞って検索してみてください。
応用編:ランキングとアフィリエイトURLを取得する
このジャンルIDを指定して、楽天商品のランキングとそのアフィリエイトURLを取得する方法もこちらで紹介しています。アフィリエイトで稼ぎたいブロガー必見となっていますので、ぜひ参考にしてみてください。