久々にeByaのAPIリファレンスを見に行ったらFinding API終了のお知らせがあったので共有と新しいBrowse APIなるもののお知らせがあったのでお知らせ半分、自分の予習半分でまとめました
Finding API終了の知らせ
作っちゃえば運用するだけのツールなんで久しく開いてなかったリファレンスページを開くと見慣れないメッセージがあったので早速翻訳した結果がコチラ
注: Finding APIのすべての呼び出しは非推奨になっており、2025 年 2 月 5 日に廃止される予定です。この API の代替として、高度な検索機能も備えたBrowse APIがあります。
https://developer.ebay.com/devzone/finding/callref/finditemsadvanced.html
いつの間に非推奨!?そして廃止予定!?
このFinding APIはセラーID等から商品一覧を取得できるfindItemsAdvance含まれていて、このfindItemsAdvanceは私がeBay関係で受注した案件でも番多く利用してきたのでなかなかの衝撃
私は自身eBayを利用していないのですが、過去発注いただいたクラインとから修正依頼あるかもしれないしこれからもeBayのツール作成を受注する可能性あるんで新しいBrowse APIを見ていきます
Browse APIについて
早速リファレンス画面へ
https://developer.ebay.com/api-docs/buy/browse/resources/methods
(なんとなく画面のテイストが変わった気がしますが)大きく分けてitem_summary、itemの2つににカテゴライズされてそれぞれ2つ、5つのAPIが準備されていますがその中でもよく使いそうなものをピックアップ
search
おそらくこれがfindItemsAdvanceの代替になる
キーワード検索の他、フィルターで抽出結果のフィルタリングとかできそうなのでこれを注視していく
getItem
Trading APIの方にあるGetItemの代替っぽい
Trading APIは特に終了のお知らせはないので継続利用しても問題ないと思うのですが、新しいBrowse APIに準備されているので今後は新しくツールを作らならコチラを使うようにした方が良さそう
ItemIDを指定すると商品の詳細が取得できるシンプルなAPI
getItems
getItemの簡易版を最大20個を同時に取得できる
どうせならgetItemで詳細情報収集した方がいい気もしますが 5,000回/1日 の制限があるのでこっちで必要情報が間に合うならこちらを推奨
searchでfindItemsAdvanceを再現できるのか
本題のFinding APIが使えなくなった時の代替になるかの検証ですが、条件は今までの受注経験から”SellerIDベースで一覧取得できるか“で、結論から言うと
searchではSellerIDを条件に情報収集できません
正確には”SellerIDだけを条件に取得できない”なので近い条件では取得できる可能性はありますが指定したSellerIDの全商品の取得は2024年6月現在では確認できませんでした
とは言え、公式がBrowse API(item_summary)への移行を推奨しているので使い方のまとめと完全再現できないと判断した理由をまとめていきます
item_summaryをPythonで実行する
大きく分けて”request headers”と”Resource URI”の二つを設定してAPIを投げます
request headersについて
まずはrequest headersから
https://developer.ebay.com/api-docs/static/rest-request-components.html#headers
headers = {
'Accept': 'application/json',
'Accept-Charset': 'utf-8',
'Accept-Encoding': 'gzip',
'Accept-Language': 'en-US',
'Authorization': 'Bearer {accessToken}',
'Content-Type': 'application/json',
'Content-Language': 'en-US',
}
findItemsAdvanceでは”App ID”を必要としていましたが、item_summaryでは”accessToken”が必要らしい
“accessToken”とは何と言われるとhttps://developer.ebay.com/my/keysから遷移した先にある”Get OAuth Application Token”で表示される画面びっしりの文字がトークンになるのでポップアップの最下部にある”Copy Token”でトークンをコピーすればそれがaccessTokenになる
念のため書いておくと”Bearer “の後ろにトークンを貼るのでAuthorizationだけ抜粋すると↓のような感じに
'Authorization': 'Bearer v^1.1#i^1#f^0#r^0#p^1#I^3#t^H4sIAAAAAAA・・・',
その他は基本固定で良さそう
Resource URIについて
続いて各パラメータについて
https://developer.ebay.com/api-docs/buy/browse/resources/item_summary/methods/search#h2-input
resource_uri = R'https://api.ebay.com/buy/browse/v1/item_summary/search?'
uri_para = {
'q': <string>,
'gtin': <string>,
'charity_ids': <string>,
'fieldgroups': <string>,
'compatibility_filter': <CompatibilityFilter>,
'auto_correct': <string>,
'category_ids': <string>,
'filter': <FilterField>,
'sort': <SortField>,
'limit': <string>,
'offset': <string>,
'aspect_filter': <AspectFilter>,
'epid': <string>,
}
# 設定したクエリパラメータを追加する
resource_uri += urllib.parse.urlencode(uri_para)
指定できるものは多いけど実際に必要そうなものは数える程度
注意点をいくつか抜粋
- 「q」、「category_ids」、「epid」、または「gtin」クエリ パラメータが必須
※Error Code:12001参照 - <FilterField>はhttps://developer.ebay.com/api-docs/buy/static/ref-buy-browse-filters.html参照
- selleridの指定は<FilterField>の中にある
findItemsAdvancedでもitemFilterで制限していたので似たような制御のようで1.の必須パラメータが邪魔して全件取得ができないのがsearchの問題点
itemFilterをパラメータにしてもらえれば欲しい情報が取得できそうなラインナップなのが残念ポイントで、キーワードを設定した検索で良ければ取得できそうだけどそうじゃない感
あとがき
eBayを利用した物販やっている人はfindItemsAdvanceを使って特定セラーの情報を収集するツールを使っているイメージなので2025年2月5日は衝撃の日になりそう
時間ができたらもう少しBrowse APIを調べてみたいです(需要ありそうだし)
コメント