どうもイトサル(@itosaru)です。

・Amazonアソシエイトに合格しました
・PA-APIの申請をしたのですがエラーが表示され使うことができません
・対処方法はあるのでしょうか?
せっかくAmazonアソシエイトに合格したのにProduct Advertising API(以下:PA-API)が使えないと悲しいですよね。
私もAmazonアソシエイト合格後にすぐPA-API v5.0の登録申請をしたのですが429のエラーが表示され、PA-APIを使うことができませんでした。
先に結論をいうとAPIキーの登録申請後の48時間後から使える可能性が高そうです。
この記事ではそこに至るまでの経緯を説明します。
Amazonアソシエイトに合格した当日にAPI登録申請
私がAmazonアソシエイトに合格したのは2022/7/13(火)です。
amazon様に認めていただきました!🎉
アソシエイト審査1回落ちて再審査の今回で無事承認✨これでPA-APIが使えるー!! pic.twitter.com/WWmVowkNS8
— イトサル@ブログ5カ月目 (@itosaru) July 13, 2022
そして7/13の22時ごろにAmazonアソシエイトのサイトから認証キーを作成しています。


サイト上の日付はUTCなので日本時間より9時間早くなっています
認証キー作成後にテストプログラムで動作確認するも429のエラー
この認証キー生成をもってPA-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)
# 商品検索
def productSearch4keyword(kwd):
results = amazon.search_items(item_count=2, keywords=kwd)
return results.items
# 引数情報
kwd="任天堂 switch"
# 関数実行
results = productSearch4keyword(kwd)
# 出力確認
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")
このプログラムを実行した結果、エラーコード429がリターンで返却されました。
エラーメッセージを見てみると「TooManyRequests」とのこと。
しかしリクエスト自体はプログラム内で1度しか投げておらず、アイテムカウントも2件で絞っています。
そこでAmazonアソシエイト内のScratchpadを試すことにしました。
ScratcchpadとはPA-APIを画面上から実行してリターン結果を確認できたりサンプルプログラムを出力することができるAmazonアソシエイト内のサービスのひとつです。
この画面上で自分の認証情報を入力してAPIを実行してもPythonプログラム同様に429のエラーが返却されました。

色々と調べてみた結果、時間を空けるという対処方法を見つける
公式のScratchpadでもうまく動かないため色々と調べてみたところ、下記のページを見つけました。

こちらのページには2020年からPA-APIにおいてこのような変更が加えられたとの情報があります。
Any new API keys that are generated will only start working after 48 hours.
https://www.kasareviews.com/how-to-upgrade-to-amazon-product-advertising-api-5/
日本語に翻訳すると「新しく生成されたAPIキーは48時間後から使えるようになる」とのこと。
半信半疑で2日ほど待ってみることにしました。
認証キー生成から2日後にAPIから正常リターンが返ってくるように
7/13の認証キー生成した2日後の7/15に再度Scratchpadで同様のリクエストを投げてみました。
結果は429のエラーではなく、正常な商品情報がリターンで返ってくるように!

リターンデータの内容はAmazonの規約に引っかかるかもしれないので割愛します。
Pythonのテストプログラムを実行して正しい情報が返ってきたことも確認できました。
なので認証キーの生成後48時間(2日)空けた後からPA-APIが使えるようになるというのは正しい情報のようです。
まとめ
ということで私は認証キー生成後の2日後にPA-APIから正しいリターンデータを受け取れるようになりました。
PA-APIの認証キー生成後にAPIがうまく使えない場合は2日ほど待ってから再度実行してみましょう。
またエラーメッセージの通り、本当にプログラム内で複数回のリクエストを投げているかもしれません。
改めて作成したプログラムを見直したり、Scratchpadで動作するかを合わせて確認してみましょう。
コメント