- 楽天ブックス系APIを使って、楽天ブックスの商品情報を
- 楽天ブックス系APIを使って、人気の書籍・CDを調べたい
- 楽天ブックス系APIを使って、書籍・CDごとにアフィリエイトURLを作成したい
本記事では、Pythonを用いて「楽天ブックス総合検索API」使って、売れ筋の書籍・CDの商品情報の抽出する方法を徹底解説していきます。
楽天ブックス系APIとは?
楽天ブックスの商品情報を取得することが可能なAPIのことです。誰でも無料で利用でき、非常に簡易的なリクエストを送るだけで、豊富な商品情報を返してくれます。キーワードでの商品検索のほか、ジャンル別、在庫状態等の絞り込みでの検索も可能です。

今回は楽天ブックス系APIの中でも最も汎用性の高い、「楽天ブックス総合検索API」の使い方を解説していきます。特に、「キーワード」、「ジャンル」、「ISBN/JANコード」を指定して、売れ筋の楽天ブックス商品情報を抽出するPythonコードを紹介します。コピペで簡単に流用が可能です。
今回抽出する商品情報一覧
タイトル、著者名、ISBNコード/JANコード、商品説明文、アフィリエイトURL、税込価格、在庫状況、商品画像URL、出版社名、出版日/発売日、レビュー平均、レレビュー件数
事前準備:アプリIDの登録
アプリIDの登録がまだの方(アプリケーションID・アフィリエイトIDをまだお持ちでない方)は、こちらで楽天APIについての総まとめ、アプリID登録の仕方を紹介しているのでぜひ参考にしてみてください。
Pythonコード
早速Pythonコードを紹介していきます。まずは、検索したいように入力パラメータ(11~16行目、ハイライトした箇所)を入れていきましょう。
import requests
import pandas as pd
import json
from pandas import json_normalize
#urlの作成
base_url = 'https://app.rakuten.co.jp/services/api/BooksTotal/Search/20170404?' #ランキングAPIのベースとなるURL
item_parameters = {
'applicationId': '自分のアプリケーションID', #アプリID
'affiliateId' : '自分のアフィリエイトID', #アフィリエイトID
'keyword' : 'テスト', #検索キーワード
'booksGenreId' : '001', #楽天ブックスジャンルID
#'isbnjan' : 'XXX', #ISBNコード/JANコード
'sort' : 'sales' #ソート
}
#jsonデータの取得
r = requests.get(base_url, params=item_parameters)
jsondata = r.json()
#print(json.dumps(jsondata, indent=2,ensure_ascii=False))
#jsondata内のItemsにアクセスした後に、データフレームに格納
df = json_normalize(jsondata['Items'])
#必要な情報だけ抽出
df_pickup = df.loc[:, \
['Item.title', \
'Item.author', \
'Item.isbn', \
'Item.jan', \
'Item.itemCaption', \
'Item.affiliateUrl', \
'Item.itemPrice', \
'Item.availability', \
'Item.largeImageUrl', \
'Item.publisherName',
'Item.salesDate', \
'Item.reviewAverage', \
'Item.reviewCount']]
#項目の日本語辞書作成
rename_dic = \
{'Item.title':'タイトル',\
'Item.author':'著者名',\
'Item.isbn':'ISBNコード',\
'Item.jan':'JANコード',\
'Item.itemCaption':'商品説明文',\
'Item.affiliateUrl':'アフィリエイトURL',\
'Item.itemPrice':'税込価格',\
'Item.availability':'在庫状況',\
'Item.largeImageUrl':'商品画像URL',\
'Item.publisherName':'出版社名',\
'Item.salesDate':'出版日/発売日',\
'Item.reviewAverage':'レビュー平均',\
'Item.reviewCount':'レビュー件数'}
#項目名変更
df_pick_rename = df_pickup.rename(columns = rename_dic)
#データフレームCSVに出力
df_pick_rename.to_csv('rakuten_books.csv', index=False, encoding='utf_8_sig')
アプリID・アフィリエイトID
ご自身の、アプリIDとアフィリエイトIDを入力してください。(こちらで発行可能です)
キーワード・ジャンルID・ISBNコード/JANコード
こちらは、3つのうち、いずれかが指定されていることが必須です。また、「ISBNコード/JANコード」が入力されている時、「キーワード」および「ジャンルID」は自動的に無効となります。
サンプルコードにはkeywordに「テスト」というワードが入っていますが、任意のキーワードに変更するか、指定しない場合はコメントアウト(’keyword’の前に”#”を入力)してください。
楽天ブックスのジャンルIDはこちらで紹介しているので参考にしてみてください。書籍のほか、CDやPC周辺機器など、大きいジャンルから細かいジャンルまで指定が可能です。
ISBNコード/JANコードはサンプルコード上ではコメントアウトしていますが、必要に応じて入力してください。
ソート
以下から、並び順を選択できます。サンプルコードには売れ筋順を出力できるよう”sales”が入力されています。
- standard:標準(デフォルト)
- sales:売れている
- +releaseDate:発売日(古い)
- -releaseDate:発売日(新しい)
- +itemPrice:価格が安い
- -itemPrice:価格が高い
- reviewCount:レビューの件数が多い
- reviewAverage:レビューの評価(平均)が高い
データの出力について
最終的に抽出した商品情報をCSVに出力できる仕様になっています。試しにサンプルコードに出力した商品情報リストを確認してみましょう。
このように、商品情報がきちんと抽出できているのがわかります。在庫状況についてですが、数字の意味はそれぞれ、下記の通りなので参考までに。
- 1:在庫あり
- 2:通常3~7日程度で発送
- 3:通常3~9日程度で発送
- 4:メーカー取り寄せ
- 5:予約受付中
- 6:メーカーに在庫確認

まとめ
今回紹介した方法は、あくまで楽天ブックス総合検索APIの使い方の一例であり、最も基本的な使い方です。検索条件をカスタマイズしたり、抽出する商品情報などをカスタマイズしたりしてオリジナルのAPIリクエストを作ることも可能です。公式HPに、楽天ブックス総合検索APIの入力・出力パラメータの一覧が載っているので参考にしてみてください。