【Python】Amazonアソシエイト PA-APIの利用|Product Advertising APIの使い方解説

こんにちは、DXCEL WAVEの運営者(@dxcelwave)です!

このような方におすすめ!
  • Amazonアソシエイトを活用している方向け!
  • 商品情報の取得・販売価格調査・広告リンク取得などの商品リサーチを効率化したい
  • Amazon Product Advertising APIの認証情報の取得手順が知りたい
  • Python環境でAmazon Product Advertising API(商品販売API)を活用する方法が知りたい
目次

Amazon Product Advertising API(PA-API)とは

【引用】Amazonアソシエイト・プログラム:https://affiliate.amazon.co.jp/

Amazon Product Advertising API(PA-API)とは、Amazonに出品中の商品情報や販売価格等が取得できるAPIであり、Amazonアソシエイト・プログラムが提供するサービスになります。

Amazon PA-APIでは、商品キーワードによる検索機能や特定商品の詳細情報取得機能が提供されています。

Amazon PA-API(商品情報API)でできること

Amazon PA-APIでは次のようなデータ項目が収集できます。

PA-APIをシステムに取り入れることで、商品データ収集や価格査定、広告リンク作成などが自動化できるため、商品リサーチ・販売業務の効率化が期待できます。

  • 商品名
  • 商品概要
  • 商品リンク(Amazonアソシエイト・プログラムの広告リンク)
  • 価格(カート価格・最安値価格)
  • 在庫コンディション(新品・中古)
  • 在庫数
  • 商品サイズ
  • 配送情報

Amazon PA-APIの利用条件

Amazon PA-APIを利用するには、次のような要件を満たす必要があります。

  • Amazonアソシエイト・プログラムに登録していること
  • Amazonアソシエイト・プログラムの規約に合意していること
  • Amazonアソシエイト・プログラムで一定の売上実績を獲得し、審査に通過していること

Amazon Product Advertising API(PA-API)認証情報の取得手順

Amazon PA-APIを利用するにはAPIの「アクセスキー」と「シークレットキー」を取得する必要があります。

これらの取得手順を下記に示します。

Python開発環境設定

Python環境でAmazon PA-APIを呼び出すにはpython-amazon-paapiというライブラリを用います。

以下を実行して事前にインストールしておきましょう。

pip install python-amazon-paapi

【実践】PythonによるAmazon PA-API(商品情報API)の使い方解説

それでは実際にPython環境でAmazon PA-APIを活用する方法を解説します。

Pythonライブラリ・認証情報の呼出

後述で紹介するプログラミングコードの実行には、API情報の紐付けが必須です。前述で取得したAPI情報を入力し、Pythonスクリプト先頭にこのコードを貼り付けておきましょう。

from amazon_paapi import AmazonApi

# API情報
API_KEY    = "アクセスキーを入力"
API_SECRET = "シークレットキーを入力"
TrackingID = "トラッキングIDを入力"
COUNTRY    = "JP"

# API実行オブジェクト
amazon = AmazonApi(API_KEY, API_SECRET, TrackingID, COUNTRY)

ASINコードをもとに商品情報を一括取得

引数にASINコードのリストを渡し、特定の商品情報を取得したい場合、次のような関数を実行します。

# 商品検索
def productSearch4asin(asin_list):
    items = amazon.get_items(asin_list)
    return items

# 引数情報
asin_list=["B07WXL5YPW"]

# 関数実行
result = productSearch4asin(asin_list)
print(result)
# 出力イメージ
# [{'asin': 'B07WXL5YPW',
#  'customer_reviews': None,
#  'detail_page_url': 'https://www.amazon.co.jp/dp/B07WXL5YPW?tag=xxxxxx',
#  'images': {'primary': 
#             {'large': {'height': 324,
#                        'url': 'https://m.media-amazon.com/images.jpg',
#                        'width': 500},
#             'medium': {'height': 103,
#                        'url': 'https://m.media-amazon.com/images.jpg',
#                        'width': 160},}},
#  'item_info': {'by_line_info': {'brand': {'display_value': '任天堂',
#                                           'label': 'Brand',
#                                           'locale': 'ja_JP'},
#                                 'contributors': None,
#  'classifications': {'product_group': {'display_value': 'ビデオゲーム',
#                                                         'label': 'ProductGroup',
#                                                         'locale': 'ja_JP'}},
#  'features': {'display_values': ['「Nintendo '
#                                  '「Switch」にバッテリー持続時間が長くなった新モデルが登場。'],
#              'label': 'Features',
#              'locale': 'ja_JP'},
#              'product_info': {'color': {'display_value': 'ネオンブルー/ネオンレッド',
#                                         'label': 'Color',
#                                         'locale': 'ja_JP'},
#   'offers': {'listings': [{'availability': {'max_order_quantity': 1,
#                                             'message': '在庫あり。',
#                                             'min_order_quantity': 1,
#                                             'type': 'Now'},
#                            'condition': {'condition_note': None,
#                                          'display_value': None,
#                                          'label': None,
#                                          'locale': None,
#                                          'sub_condition': {'display_value': None,
#                                                            'label': None,
#                                                            'locale': None,
#                                                            'value': 'New'},
#                                         'value': 'New'},
#                            'delivery_info': {'is_amazon_fulfilled': True,
#                                              'is_free_shipping_eligible': True,
#                                              'is_prime_eligible': True,
#                                              'shipping_charges': None},
#                            'price': {'amount': 32970.0,
#                                      'currency': 'JPY',
#                                      'display_amount': '¥32,970',
#                                      'price_per_unit': None,
#                                      'savings': None},
#              'summaries': [{'condition': {'condition_note': None,
#                                           'display_value': None,
#                                           'label': None,
#                                           'locale': None,
#                                           'sub_condition': None,
#                                           'value': 'Used'},
#                             'highest_price': {'amount': 38208.0,
#                                               'currency': 'JPY',
#                                               'display_amount': '¥38,208',
#                                               'price_per_unit': None,
#                                               'savings': None},
#                             'lowest_price': {'amount': 26000.0,
#                                              'currency': 'JPY',
#                                              'display_amount': '¥26,000',
#                                              'price_per_unit': None,
#                                              'savings': None},
#                             'offer_count': 62},

ASINコードをもとに商品名・価格・広告リンクを取得

前述で示した関数を用いて、利用頻度が高いデータ(商品名・アソシエイト広告リンク・価格)のみを抽出するコードを下記に示します。

# 商品検索
def productSearch4asin(asin_list):
    items = amazon.get_items(asin_list)
    return items

# 引数情報
asin_list=['B07WXL5YPW', 'B07FD2FPMC']

# 複数の商品情報取得
results = productSearch4asin(asin_list)

# 出力確認
for i,result in enumerate(results):
    print("検索結果("+str(i+1)+")")
    print("商品名: "  + result.item_info.title.display_value)      # 商品名
    print("広告リンク: " + result.detail_page_url)                  # 広告リンク
    print("価格: " + str(result.offers.listings[0].price.amount))  # 価格
    print("\n")
# 出力イメージ
# 検索結果(1)
# 商品名: Nintendo Switch 本体 (ニンテンドースイッチ) Joy-Con(L)
# 広告リンク: https://www.amazon.co.jp/dp/B07WXL5YPW?tag=xxxx
# 価格: 32970.0


# 検索結果(2)
# 商品名: 大乱闘スマッシュブラザーズ SPECIAL - Switch|オンラインコード版
# 広告リンク: https://www.amazon.co.jp/dp/B07FD2FPMC?tag=xxxx
# 価格: 6912.0

商品キーワードをもとに商品検索結果を取得

引数に商品キーワードを渡して商品を検索したい場合、次のような関数を実行します。

関数を実行すると、キーワードに関連する商品情報が最大10個取得できます。

# 商品検索
def productSearch4keyword(kwd):
    results = amazon.search_items(keywords=kwd)
    return results.items

# 引数情報
kwd="任天堂 switch"

# 関数実行
results = productSearch4keyword(kwd)
print(results)
# 出力イメージ
# [{'asin': 'B07WXL5YPW',
#  'customer_reviews': None,
#  'detail_page_url': 'https://www.amazon.co.jp/dp/B07WXL5YPW?tag=xxxxxx',
#  'images': {'primary': 
#             {'large': {'height': 324,
#                        'url': 'https://m.media-amazon.com/images.jpg',
#                        'width': 500},
#             'medium': {'height': 103,
#                        'url': 'https://m.media-amazon.com/images.jpg',
#                        'width': 160},}},
#  'item_info': {'by_line_info': {'brand': {'display_value': '任天堂',
#                                           'label': 'Brand',
#                                           'locale': 'ja_JP'},
#                                 'contributors': None,
#  'classifications': {'product_group': {'display_value': 'ビデオゲーム',
#                                                         'label': 'ProductGroup',
#                                                         'locale': 'ja_JP'}},
#  'features': {'display_values': ['「Nintendo '
#                                  '「Switch」にバッテリー持続時間が長くなった新モデルが登場。'],
#              'label': 'Features',
#              'locale': 'ja_JP'},
#              'product_info': {'color': {'display_value': 'ネオンブルー/ネオンレッド',
#                                         'label': 'Color',
#                                         'locale': 'ja_JP'},

最後に

この記事が気に入ったら
フォローしてね!

本記事をシェア!
目次