Amazon Product Advertising API

Amazonのドキュメントを勝手にまとめたものであり、内容については責任を負いかねますので正確な情報を期待する場合はご自身でAmazonのサイトの最新情報をご確認ください

https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html

Product Advertising APIになってからの変更

  • Product Advertising API契約をしてもらうkeyをつかって署名をしたリクエストをおくらないとデータがもらえなくなった
  • Reviewsレスポンスグループについてレビューの本文ではなく、レビューへのリンクが返される (2010-11-09)
  • 利用率低下につき以下のオペレーション/レスポンス・グループはサポートを終了(2010-10-15)
    • オペレーション
    • CustomerContentLookup, CustomerContentSearch, Help, ListLookup, ListSearch, TagLookup, TransactionLookup, VehiclePartLookup, VehiclePartSearch, VehicleSearch
    • レスポンスグループ
    • ListmaniaLists, MerchantItemAttributes, PromotionDetails, Subjects, Tags, TagsSummary, VariationMinimum

はじめ方

APIの概要

http://developer.amazonwebservices.com/connect/kbcategory.jspa?categoryID=19

  • cite: https://affiliate.amazon.co.jp/gp/advertising/api/detail/main.html
    • Amazon の商品セレクションへのアクセス
    • Product Advertising API を利用すると、書籍、CD、家電&カメラ、アパレル&シューズ、食品&飲料をはじめとする数百万を超える Amazon の商品データへのアクセスが可能となります。
    • Amazon.com, Amazon.fr, Amazon.ca, Amazon.de, Amazon.co.jp ならびに Amazon.co.uk のデータ取得が可能です。
    • Amazon の豊富な商品関連コンテンツも利用可能
    • Product Advertising API では、Amazon の豊富な商品関連コンテンツやサービスである、強力なサーチ機能や商品の詳細情報、関連商品やアクセサリなどの取得も可能です。
    • 紹介料の獲得
    • Product Advertising API のリクエストにアソシエイト・タグを含めていただくと、API は自動的にアソシエイトタグ入りの URL を返すため、その URL をご利用いただくだけで、Web サイトのビジターがリンクを通して Amazon の対象商品をお買い上げになった場合、紹介料の獲得が可能となります。
    • (注: ご利用になるアソシエイト・タグは、必ずProduct Advertising APIへのご登録と同一のEメールアドレスのもとに登録されたものをご使用ください。登録アドレスが一致しない場合、必要なサポートが受けられない場合があります)
  • Amazonサイトと同様にAPIの商品データは国ごとにわかれており、問い合わせるURLも国ごとに異なる
  • XML over HTTP または SOAP が使える。
  • SOAPベースで使用したい場合は、VS.NETの機能を使って*.wsdlからラップクラスを作ることができる。.NET Frameworkの機能を使って通信可能。
  • APIにはバージョンがあり、バージョンの表現方法は日付。リクエストを投げるときに指定する

APIの制限

ID関連

  • アカウントの識別および Product Advertising API のリクエスト送信をするために、固有の公開/秘密キー(アカウント識別子)を使用しないといけない
  • 秘密キーであるアカウント識別子またはパスワードであるデータフィードアクセスID は、個人利用のためものであり、秘密キーの秘密性およびセキュリティの管理をしなければならない
  • 秘密キーまたはパスワードを、他の個人または事業体に販売、譲渡、サブライセンスまたは公開してはならない
    • (公開キーであるアカウント識別子またはユーザー名であるデータフィードアクセスID は秘密ではない)
  • 自分のもの以外のアカウント識別子またはデータフィードアクセスID を使用してはならない
  • リンクに使用するアソシエイトタグは、Product Advertising APIアカウント所有者のEメールアドレスと同一のEメールアドレスのもとに設定されたものでなければならない

トラフィック関連

  • APIへのアクセスのために使用される各アカウントは、1時間につき2,000リクエストまでの当初利用限度が認められる、それ以上については30日間に発生する出荷された商品の1時間あたりの収益100円ごとに、1時間につき500リクエスト(1時間につき最大25,000リクエストまで)が可能
  • (リクエストの計測のために)アマゾンへのリンクはProduct Advertising APIのレスポンスにより返されるURLを改変なしに使用しなければならない
  • リクエスト送信を行うアプリケーションは毎秒1コールを超えないこと、さらにサイズが40Kを超えるファイルを送信してはいけない

商品データの扱い関連

  • Amazon関連の商標・ロゴを勝手に使ってはならない
  • アマゾンサイトの宣伝およびマーケティング、ならびにアマゾンサイト上の商品およびサービスの販売促進を主な目的として使うこと
  • 取得した商品情報から別のサイトのページにリンクしたり誘導してはならない、アマゾンサイトの関連商品の詳細ページにのみリンクを張ること
    • (ただし、商品関連コンテンツに密接に関連していない部分は、アマゾンサイト以外のサイトへのリンクを含んでもよい)
  • 勝手にモバイル端末で使うウェブサイトやアプリケーションで商品情報を使ってはならない
  • もらったデータを改変して表示しないこと。イメージのリサイズ、テキストを短縮する場合のみok
  • 商品データはキャッシュの目的で24時間保存してよい、ASINだけはライセンス契約終了まで格納してもよい。ただしクライアントアプリケーションの場合は商品データを格納、キャッシュしてはいけない
  • データの更新が一時間以内でない場合は、価格情報、発送可能時期を表示する場合、隣接して取得した時刻/日付を表示しないといけない、データの取得が当日である場合に限り日付を省略し時刻のみの表示でよい
  • 下記の免責事項を、価格情報または発送可能時期についての情報のそばに記載するか、またはハイパーリンク、ポップアップ、スクリプト・ポップアップその他類似の方法で提供しなければならない
    • 「価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。商品の販売においては、購入の時点で [Amazon.co.jp または Javari.jp の適用ある方] に表示されている価格および発送可能時期の情報が適用されます。」
  • アプリケーションでテキストで商品情報を表示する場合は、以下の免責事項をエンドユーザーに見えるところに表示すること
    • 「[本アプリケーション内または本サイト上の適用ある方]で表示されるコンテンツの一部は、アマゾンジャパン株式会社またはその関連会社により提供されたものです。かかるコンテンツは、お客様に「現状有姿」で提供されており、随時変更または削除される場合があります。」

API利用のベストプラクティス

http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1057にある。

  • 最新のAPIのバージョンを使用すべし
  • 必要最低限のResponseGroupを指定すべし
  • 自分のAssociateTagを使うべし
  • 2xx,4xx,5xxで返されるエラーハンドリングをすべし
  • 商品データは頻繁に変わるのでデータのキャッシュは慎重にすべし
  • 正当なAWSAccessKeyIdを使うべし
  • API規約を読むべし

でもこれどう見てもプラクティスというよりAmazonからのお願いにしか見えない。そら記事の評価☆ふたつになるわ。

REST

(リクエストにはさらに署名を追加しないといけない)

Amazon E-Commerce Service 4.0」(以下、ECS 4.0)では、情報を取得するためにRESTとSOAPの2種類が用意されている。
RESTとは、REpresentational State Transfer の略であり、現在の一般的なWebのアーキテクチャを示す、リソースを特定するURIと、リソースにアクセス、操作するためのプロトコルとして、シンプルなHTTP(POST、GET、PUT、DELETE)を使用することがRESTの定義になる。
この簡便さから、ECS4.0に対するアクセスの、80%以上はREST API経由(2005/01 ITMedia情報)

リクエスト先は以下の通り

地域 リクエスト先
JP http://ecs.amazonaws.jp/onca/xml|https://ecs.amazonaws.jp/onca/xml
CA http://ecs.amazonaws.ca/onca/xml|https://ecs.amazonaws.ca/onca/xml
DE http://ecs.amazonaws.de/onca/xml|https://ecs.amazonaws.de/onca/xml
FR http://ecs.amazonaws.fr/onca/xml|https://ecs.amazonaws.fr/onca/xml
UK http://ecs.amazonaws.co.uk/onca/xml|https://ecs.amazonaws.co.uk/onca/xml
US http://ecs.amazonaws.com/onca/xml|https://ecs.amazonaws.com/onca/xml
  • &SubscriptionId=&AssociateTag= には、subscription IDとアソシエイトIDを指定する
  • &Version= は、ECS 4.0で新たに導入されたパラメータのひとつ。自分が期待するECSのバージョンを指定する、過去互換を保つ。
    • 現状Versionの表現方法は日付で YYYY-MM-DD
  • &Operation :APIの機能を選ぶ
    • BrowseNodeLookup (商品がリストされるカテゴリの取得)
    • CartAdd (カートに商品追加)
    • CartClear (カートをクリア)
    • CartCreate (リモートショッピングカートを作成)
    • CartGet (カートを取得)
    • CartModify (カート内の情報変更)
    • ItemSearch (商品名、著者名などで検索)
    • ItemLookup (ASINなどのItemIdで、商品を検索)
    • SellerListingLookup (IDによる販売者一覧の検索)
    • SellerListingSearch (名前による販売者一覧の検索)
    • SellerLookup (販売者の検索)
    • SimilarityLookup (関連商品の検索)
    • 利用率低下のため2010-07-25に以下のOperationの提供は終了された
    • CustomerContentLookup
    • CustomerContentSearch
    • Help
    • ListLookup
    • ListSearch
    • TagLookup
    • TransactionLookup
    • VehiclePartLookup
    • VehiclePartSearch
    • VehicleSearch
  • &ResponseGroup : 取得したい情報(カンマで複数指定できる)
    • Accessories(デジカメなどのアクセサリのASIN)
    • AlternateVersions
    • BrowseNodeInfo
    • BrowseNodes (商品がリストされるカテゴリ)
    • Cart
    • CartNewReleases
    • CartTopSellers
    • CartSimilarities
    • Collections
    • EditorialReview (商品の紹介文)
    • Images(商品画像のURL)
    • ItemAttributes (商品の詳細情報)
    • ItemIds (商品のASIN、商品数、ページ数)
    • Large (沢山の情報)
    • Medium (中くらいの情報)
    • MostGifted
    • MostWishedFor
    • NewReleases
    • OfferFull(在庫情報や価格など)
    • OfferListings
    • Offers (新品か中古かなど)
    • OfferSummary  
    • PromotionSummary
    • RelatedItems
    • Request (RESTリクエストのパラメータ)
    • Reviews (カスタマーレビュー)
    • SalesRank (売り上げランキング)
    • SearchBins
    • Seller
    • SellerListing
    • Similarities(関連商品)
    • Small (最小限の情報)
    • TopSellers
    • Tracks (音楽CDの楽曲情報)
    • Variations
    • VariationImages
    • VariationMatrix
    • VariationOffers
    • VariationSummary(最高値や最安値、出品数など)
  • &SearchIndex : 商品の種類 (国によって異なる以下はJPの情報: http://docs.amazonwebservices.com/AWSECommerceService/2010-09-01/DG/index.html?APPNDX_SearchIndexValues.html )
    • All (すべて)
    • Apparel (服&ファッション小物)
    • Automotive (カー&バイク用品)
    • Baby (ベビー&マタニティ)
    • Beauty (コスメ)
    • Blended (すべての商品)
    • Books (和書)
    • Classical (クラシック音楽)
    • DVD (DVD)
    • Electronics (家電&カメラ)
    • ForeignBooks (洋書)
    • Grocery (食品&飲料)
    • HealthPersonalCare (ヘルス&ビューティ)
    • Hobbies
    • HomeImprovement
    • Jewelry (ジュエリー)
    • Kitchen (ホーム&キッチン)
    • Music (ミュージック)
    • MusicalInstruments (楽器)
    • MusicTracks (曲名から調べる)
    • OfficeProducts (文房具・オフィス用品)
    • Shoes (シューズ&バッグ)
    • Software (PC ソフトウェア)
    • SportingGoods (スポーツ&アウトドア)
    • Toys (おもちゃ&ホビー)
    • VHS (VHS)
    • Video (DVD&VHS)
    • VideoGames (TVゲーム)
    • Watches (時計)
  • &Page : 任意の数字
    • デフォルト1
    • 現状、10件ずつしかとれない。11-20件の情報を手に入れるには&Page=2を指定する必要がある
  • &Operation=ItemSearch の場合の検索キー
    • &Keywords= : 検索したいキーワード
    • &BrowseNode= : BrowseNode番号 (Amazonのカテゴリごとのベストセラーを取得)
  • &ContentType
    • text/xml (結果をXMLで取得したい場合) 
    • text/html (結果をHTMLで取得したい場合)
  • &Style
  • &Sort

ItemLookup

あらかじめASINがわかってるときに詳細情報を取得するために使う。

http://ecs.amazonaws.jp/onca/xml
 ?Service=AWSECommerceService
 &AWSAccessKeyId=[Your Access Key ID Here]
 &Operation=ItemLookup
 &ItemId=[An ASIN]
 &ResponseGroup=Large
 &Timestamp=[YYYY-MM-DDThh:mm:ssZ]
 &Signature=[Request Signature]

ItemLookupで検索をする場合&ItemIdにASINを指定すれば良い。

AssociateTagをつけると、DetailPageURLにはTag=xxxが付いているが、実際にそのページに飛ぶとRedirectされて、AssociateTagが消えてしまう。これについては下記にあるように仕様。http://developer.amazonwebservices.com/connect/thread.jspa?threadID=10829&tstart=15
URLからTagは消えるが、Sessionは24時間有効とのこと。

ItemSearch

任意のKeywordで作品を検索するときに使う。

http://ecs.amazonaws.jp/onca/xml
 ?Service=AWSECommerceService&SubscriptionId=[Your Subscription ID Here]
 &Operation=ItemSearch
 &Keywords=[A Keywords String]
 &SearchIndex=[A Search Index String]
 &Sort=[A Sort String]
 &Timestamp=[YYYY-MM-DDThh:mm:ssZ]
 &Signature=[Request Signature]

キーワードは、title, author, artist, description, manufacturer, etc。から検索されるらしい。

SimilarityLookup

Amazonの似ている作品取得ができる。結果のデータを見る限り「この作品を買ったひとはこの作品を〜」がとれるわけではなさそう。

http://ecs.amazonaws.jp/onca/xml
 ?Service=AWSECommerceService
 &AWSAccessKeyId=[Your Access Key ID Here]
 &Operation=SimilarityLookup
 &ItemId=[An ASIN]
 &Timestamp=[YYYY-MM-DDThh:mm:ssZ]
 &Signature=[Request Signature]