【Python】Amazon SP-APIで出品商品(SKU)の情報操作|物販・セリングパートナー向け自動化手法

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

解説内容
  • PythonでAmazon SP-APIを操作する方法
  • SP-APIでAmazonセラーセントラルに登録中の商品情報(出品者SKU)を取得する方法
  • SP-APIで出品者SKUを登録・更新・削除する方法
目次

Amazon セリングパートナーAPI(SP-API)とは

【引用】Amazon Seller Services:https://developer.amazonservices.jp

Amazon SP-APIとは、商品リサーチ・出品・注文状況確認・配送・会計管理などの機能を多数取り扱う、業務効率化を実現するためのWebサービスです。

Amazon SP-APIでできること|取得できるデータ

Amazon SP-APIの活用により、商品リサーチをはじめ、自社商品の出品状況・注文状況・配送内容・売上情報の管理に至るまで、あらゆる作業の効率化が期待できます。

具体的にSP-APIをもとに、次のような機能が利用できます。

  • Amazon商品データ(商品詳細・価格・在庫・売上ランキング)の取得
  • 商品販売にかかる手数料計算
  • 商品の出品状況の管理(商品登録・参照・更新・削除)
  • 商品の注文状況の管理
  • FBA配送に対する適格性(禁止・規制品)データの取得
  • 会計(商品売上等)データの取得・レポーティング
  • 顧客との問い合わせ・メッセージの管理
  • 通知情報の管理

Amazon SP-APIの利用条件

Amazon SP-APIを利用するには、Amazon開発者として登録が必須です。

また、次のようなことを満たした上で開発者登録する必要があります。

  • Amazonセラーセントラルのアカウントを保有していること
  • 上記アカウントステータスが「大口出品」であること

【参考】物販業務を効率化する代替手段

前述で述べた通り、Amazon SP-APIを利用するにはAmazonセラーセントラルの大口出品者としてをアカウントを登録する必要があります。

大口出品者になると月額4,900円の支払いが発生することに注意が必要です。

SP-APIを利用しない代替手段として、既存のツールを用いて物販自動化を検討する方法もあります。筆者おすすめの使い勝手が良い既存ツールも合わせて紹介します。

こんな方におすすめ!

  • オンラインショッピングにおける販路を拡大したい
  • 商品リサーチに時間をかけたくない
  • 中国輸入やOEMに興味がある
  • 競合他社を効率的に分析したい
  • 自社ショップの商品売上等の時系列分析をやりたい

本記事の解説内容|商品の出品情報・在庫管理(登録・参照・編集・削除)

本記事ではAmazon SP-APIを利用して、次のようなことを実現する方法を解説します。

GETAmazonセラーセントラルに登録中の商品情報を取得
PUTAmazonセラーセントラルに商品登録(SKU作成)
PATCHAmazonセラーセントラルに登録中の商品情報更新
DELETEAmazonセラーセントラルに登録中の商品情報削除

【事前準備】Python×Amazon SP-API

Amazon SP-APIを利用するには、以下のPythonパッケージをインストールする必要があります。

pip install python-amazon-sp-api

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

credentials=dict(
            refresh_token     = 'リフレッシュトークン',   # Amazon Seller開発者登録後に入手可能
            lwa_app_id        = 'クライアントID',        # Amazon Seller開発者登録後に入手可能
            lwa_client_secret = 'クライアント機密情報',   # Amazon Seller開発者登録後に入手可能
            aws_access_key    = 'AWS アクセスキー',      #(AWS IAMユーザーロール登録時に取得可能)
            aws_secret_key    = 'AWS シークレットキー',  #(AWS IAMユーザーロール登録時に取得可能)
            role_arn          = 'AWS IAM ARN',        #(AWS IAMユーザーロール登録時に取得可能)
            )

【Python】SP-API ListingItems|出品者SKUの情報操作

Amazon SP-APIにおけるListingItems()メソッドを使用すると、Amazonセラーセントラル上の出品者SKUの情報操作が可能になります。

以下より実際にPython環境下で実現する方法を見ていきましょう!

【GET】Amazonセラーセントラルに登録中の商品情報を取得

引数に商品管理番号(SKU)および出品者トークン(SellerId)を渡し、コードを実行すると、Amazonセラーセントラルに登録中の商品情報が取得できます。

from sp_api.api import ListingsItems
from sp_api.base.marketplaces import Marketplaces

# 引数情報
Sku      = "XXXXXXXXXXXXXXXX"    # 出品中の商品管理番号(sku)
SellerId = "出品者トークン"        # 確認方法:セラーセントラル>設定>出品用アカウント>出品者トークン


# 商品検索用オブジェクト
obj = ListingsItems(marketplace=Marketplaces.JP,   # 対象のマーケットプレイスを指定
                    credentials=credentials)       # API情報を指定

# 結果取得
result = obj.get_listings_item(sellerId=SellerId, sku=Sku)()
# 結果出力
print(result)

# 出力イメージ
# {'sku': '20220405',
#  'summaries': [{'marketplaceId': 'A1VC38T7YXB528',
#    'asin': 'B0XXXXXXX',
#    'productType': 'STROLLER',
#    'conditionType': 'new_new',
#    'status': ['DISCOVERABLE'],
#    'fnSku': 'X00000000',
#    'itemName': 'Amazon 出品中の商品名',
#    'createdDate': '2022-04-04T23:04:27.586Z',
#    'lastUpdatedDate': '2022-04-04T23:04:27.586Z',
#    'mainImage': {'link': 'https://m.media-amazon.com/images/I/XXXX.jpg',
#     'height': 500,
#     'width': 500}}]}

【PUT】Amazonセラーセントラルに商品登録(SKU作成)

Amazonセラーセントラル上に新規のSKUを登録する場合、ListingsItems.put_listings_itemメソッドを用いて次のように実行します。

from sp_api.api import ListingsItems
from sp_api.base.marketplaces import Marketplaces

"""
***************************************
引数情報
***************************************
"""
SellerId = "XXXXXXXXXXXXXX"           # 出品者トークン
MpId     = 'A1VC38T7YXB528'           # 対象のマーケットプレイス(日本の場合は左記で固定)
Sku      = 'XXXXXXXX'                 # 商品管理番号(sku)
Body     = 'create info'              # SKUの商品情報


"""
***************************************
メソッド実行
***************************************
"""
obj = ListingsItems(marketplace=Marketplaces.JP,   # 対象のマーケットプレイスを指定
                    credentials=credentials)       # API情報を指定

# 結果取得
result = obj.put_listings_item(sellerId=SellerId,              # 出品者トークン
                               sku=Sku,                        # 商品管理番号(sku)
                               marketplaceIds=MpId,            # マーケットプレイスID
                               body=Body,                      # 更新情報                       
                              )()

引数情報

ListingsItems.put_listings_itemメソッド実行の際は以下の引数を指定しましょう。

スクロールできます
引数概要
sellerID・出品者トークン
・Amazonセラーセントラル画面を開き以下の方法で確認可能
・設定>出品用アカウント>出品者トークン
sku・出品者の商品管理番号(sku)
marketplaceIds・マーケットプレイスID
・日本の場合:A1VC38T7YXB528
body・後述にて解説

bodyに設定する情報

引数のbodyには、辞書式{キー:値}で以下のペアを指定しましょう。

スクロールできます
引数概要
productType・Amazon商品タイプを指定
requirements データ要件。以下をいづれかを値として指定
・LISTING:attributesに商品エンティティと販売条件を含む
・LISTING_PRODUCT_ONLY:商品エンティティのみ含む
・LISTING_OFFER_ONLY:販売条件のみ含む
attributes ・Amazonセラーセントラルに登録する商品の属性情報をJSON形式で指定

引数情報について詳しく知りたい方はAmazon ListingItems APIページをご覧ください。

【PATCH】Amazonセラーセントラルに商品中の商品情報更新

Amazonセラーセントラルに登録中の商品はListingsItems.patch_listings_itemメソッドを用いて更新できます。

from sp_api.api import ListingsItems
from sp_api.base.marketplaces import Marketplaces

"""
***************************************
引数情報
***************************************
"""
SellerId = "XXXXXXX"                             # 出品者トークン
Sku      = 'XXXXXXX'                             # 商品管理番号(sku)
ptype    = 'LUGGAGE'                             # 商品タイプ
op       = 'add|replace|delete'                  # 更新方法を指定:add(値追加)、replace(値更新)、delete(値削除)           
path     = 'url'                                 # 更新先のパス
values   = {"Key":"Value",                       # 更新内容
           "marketplace_id": 'A1VC38T7YXB528'}   # 対象のマーケットプレイス(日本の場合を例に記載)


"""
***************************************
メソッド実行
***************************************
"""
# オブジェクト
obj = ListingsItems(marketplace=Marketplaces.JP,   # 対象のマーケットプレイスを指定
                    credentials=credentials)       # API情報を指定

# 結果取得
result = obj.patch_listings_item(sellerId=sellerId,                    # 出品者トークン
                                 sku=Sku,                              # 商品管理番号(sku)
                                 marketplaceIds=MpId,                  # マーケットプレイスID
                                 body={                                # 商品情報
                                   "productType":ptype,                # 商品タイプ
                                   "patches ":[{                       # 更新情報
                                              "op":op,
                                              "path":path,
                                              "value":[values]
                                              }],
                                     })()
# 出力
print(result)

# 出力イメージ
# {
#   "productType":"LUGGAGE",
#   "patches":[
#     {
#       "op":"replace",
#       "path":"/attributes/item_name",
#       "value":[
#         {
#           "value": "AmazonBasics",
#           "language_tag": "en_US",
#           "marketplace_id": 'A1VC38T7YXB528'
#         }
#       ]
#     },

引数情報

ListingsItems.patch_listings_itemメソッド実行の際は以下の引数を指定しましょう。

スクロールできます
引数概要
sellerID・出品者トークン
・Amazonセラーセントラル画面を開き以下の方法で確認可能
・設定>出品用アカウント>出品者トークン
sku・出品者の商品管理番号(sku)
marketplaceIds・マーケットプレイスID
・日本の場合:A1VC38T7YXB528
body・後述にて解説

bodyに設定する情報

引数のbodyには、辞書式{キー:値}で以下のペアを指定しましょう。

スクロールできます
引数概要
productType・Amazon商品タイプを指定
patches・更新情報を指定

patchesに設定する情報

スクロールできます
引数概要
opいづれかの更新方法を指定
・add(値追加)
・replace(値更新)
・delete(値削除)
path・更新先のパスを指定
values・更新後の値を指定

【Delete】Amazonセラーセントラルに登録中の商品情報削除

引数に商品管理番号(SKU)および出品者トークン(SellerId)を渡しコードを実行すると、Amazonセラーセントラルに登録中のSKUが削除できます。

from sp_api.api import ListingsItems
from sp_api.base.marketplaces import Marketplaces

# 引数情報
Sku      = "XXXXXXXXXXXXXXXX"    # 出品中の商品管理番号(sku)
SellerId = "出品者トークンを入力"   # 確認方法:セラーセントラル>設定>出品用アカウント>出品者トークン

# 商品検索用オブジェクト
obj = ListingsItems(marketplace=Marketplaces.JP,   # 対象のマーケットプレイスを指定
                    credentials=credentials)       # API情報を指定

# 結果取得
result = obj.delete_listings_item(sellerId=SellerId, sku=Sku)()
# 出力結果
print(result)

# 出力イメージ
# {'sku': 'ABC12345',
#  'status': 'ACCEPTED',
#  'submissionId': 'XXXXXX',
#  'issues': [

【参考】Amazon SP-API その他機能の使い方

最後までご覧いただきありがとうございました。当サイトではAmazon物販の効率化に向けたAPI情報を多数配信しております。是非合わせてご覧下さい。

スクロールできます
記事名
【Python】Amazon SP-APIで商品情報検索・データ取得
【Python】Amazon SP-APIで競合出品商品(価格・在庫)を分析
【Python】Amazon SP-APIで商品販売にかかる手数料(出品+配送+FBA)を計算
【Python】Amazon SP-APIで商品がFBA配送禁止・規制品であるかを確認
【Python】Amazon SP-APIで出品商品(SKU)の情報操作
【Python】Amazon SP-APIで商品売上・財務会計情報を取得

最後に

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

本記事をシェア!
目次