Amazon Product Advertising API (PA API v5) で商品情報を取得する

Web開発

Amazon Product Advertising API (PA API v5) は、Amazon の豊富な商品カタログから商品情報を取得するための仕組みです。この API を利用すると、オンラインショップやウェブサイトに、Amazon の商品詳細、価格、レビュー、画像などの情報を簡単に埋め込むことができます。

AmazonのPA APIにリクエストした結果は、JSON形式で返ってきます。JSONとは、JavaScript Object Notationの略で、データを扱う記述法の一つです。Web APIでの情報のやりとりでもよく使われる形式です。

試しにASINコード4061592998の商品情報を、リクエストしてみます。JSON形式で情報が返ってきて、中身を表示すると以下の情報が格納されています。

本のタイトル、著者、ジャンル、価格、画像のURL、アマゾンの詳細ページのURLなど、アマゾンのサーバーから送られてきた本に関するさまざまな情報が階層化されていることがわかります。

{
    "ItemsResult": {
        "Items": [
            {
                "ASIN": "4061592998",
                "BrowseNodeInfo": {
                    "BrowseNodes": [
                        {
                            "Ancestor": {
                                "Ancestor": {
                                    "Ancestor": {
                                        "Ancestor": {
                                            "ContextFreeName": "本",
                                            "DisplayName": "本",
                                            "Id": "465392"
                                        },
                                        "ContextFreeName": "ジャンル別",
                                        "DisplayName": "ジャンル別",
                                        "Id": "465610"
                                    },
                                    "ContextFreeName": "人文・思想",
                                    "DisplayName": "人文・思想",
                                    "Id": "571582"
                                },
                                "ContextFreeName": "本・図書館関連書籍",
                                "DisplayName": "本・図書館",
                                "Id": "500062"
                            },
                            "ContextFreeName": "読書法",
                            "DisplayName": "読書法",
                            "Id": "492114",
                            "IsRoot": false,
                            "SalesRank": 32
                        },
                        {
                            "Ancestor": {
                                "Ancestor": {
                                    "Ancestor": {
                                        "Ancestor": {
                                            "ContextFreeName": "本",
                                            "DisplayName": "本",
                                            "Id": "465392"
                                        },
                                        "ContextFreeName": "ジャンル別",
                                        "DisplayName": "ジャンル別",
                                        "Id": "465610"
                                    },
                                    "ContextFreeName": "人文・思想",
                                    "DisplayName": "人文・思想",
                                    "Id": "571582"
                                },
                                "ContextFreeName": "本・図書館関連書籍",
                                "DisplayName": "本・図書館",
                                "Id": "500062"
                            },
                            "ContextFreeName": "図書館情報学",
                            "DisplayName": "図書館情報学",
                            "Id": "562894",
                            "IsRoot": false,
                            "SalesRank": 22
                        },
                        {
                            "Ancestor": {
                                "Ancestor": {
                                    "ContextFreeName": "本",
                                    "DisplayName": "本",
                                    "Id": "465392"
                                },
                                "ContextFreeName": "ジャンル別",
                                "DisplayName": "ジャンル別",
                                "Id": "465610"
                            },
                            "ContextFreeName": "ノンフィクション",
                            "DisplayName": "ノンフィクション",
                            "Id": "492152",
                            "IsRoot": false
                        },
                        {
                            "Ancestor": {
                                "Ancestor": {
                                    "Ancestor": {
                                        "ContextFreeName": "本",
                                        "DisplayName": "本",
                                        "Id": "465392"
                                    },
                                    "ContextFreeName": "By Publishers",
                                    "DisplayName": "By Publishers",
                                    "Id": "465614"
                                },
                                "ContextFreeName": "講談社",
                                "DisplayName": "講談社",
                                "Id": "10805001"
                            },
                            "ContextFreeName": "全書籍",
                            "DisplayName": "全書籍",
                            "Id": "316850011",
                            "IsRoot": false
                        },
                        {
                            "Ancestor": {
                                "ContextFreeName": "本",
                                "DisplayName": "本",
                                "Id": "465392"
                            },
                            "ContextFreeName": "Featured Categories",
                            "DisplayName": "Featured Categories",
                            "Id": "202188011",
                            "IsRoot": false
                        }
                    ],
                    "WebsiteSalesRank": {
                        "ContextFreeName": "本",
                        "DisplayName": "本",
                        "SalesRank": 10912
                    }
                },
                "DetailPageURL": "https://www.amazon.co.jp/dp/4061592998?linkCode=ogi&th=1&psc=1",
                "Images": {
                    "Primary": {
                        "Large": {
                            "Height": 500,
                            "URL": "https://m.media-amazon.com/images/I/410JJdO3KvL.jpg",
                            "Width": 352
                        },
                        "Medium": {
                            "Height": 160,
                            "URL": "https://m.media-amazon.com/images/I/410JJdO3KvL._SL160_.jpg",
                            "Width": 113
                        },
                        "Small": {
                            "Height": 75,
                            "URL": "https://m.media-amazon.com/images/I/410JJdO3KvL._SL75_.jpg",
                            "Width": 53
                        }
                    },
                    "Variants": [
                        {
                            "Large": {
                                "Height": 500,
                                "URL": "https://m.media-amazon.com/images/I/41yh0Qwv+iL.jpg",
                                "Width": 348
                            },
                            "Medium": {
                                "Height": 160,
                                "URL": "https://m.media-amazon.com/images/I/41yh0Qwv+iL._SL160_.jpg",
                                "Width": 111
                            },
                            "Small": {
                                "Height": 75,
                                "URL": "https://m.media-amazon.com/images/I/41yh0Qwv+iL._SL75_.jpg",
                                "Width": 52
                            }
                        }
                    ]
                },
                "ItemInfo": {
                    "ByLineInfo": {
                        "Brand": {
                            "DisplayValue": "講談社",
                            "Label": "Brand",
                            "Locale": "ja_JP"
                        },
                        "Contributors": [
                            {
                                "Locale": "ja_JP",
                                "Name": "J・モーティマー・アドラー",
                                "Role": "著",
                                "RoleType": "author"
                            },
                            {
                                "Locale": "ja_JP",
                                "Name": "V・チャールズ・ドーレン",
                                "Role": "著",
                                "RoleType": "author"
                            },
                            {
                                "Locale": "ja_JP",
                                "Name": "外山 滋比古",
                                "Role": "翻訳",
                                "RoleType": "translator"
                            },
                            {
                                "Locale": "ja_JP",
                                "Name": "槇 未知子",
                                "Role": "翻訳",
                                "RoleType": "translator"
                            }
                        ],
                        "Manufacturer": {
                            "DisplayValue": "講談社",
                            "Label": "Manufacturer",
                            "Locale": "ja_JP"
                        }
                    },
                    "Classifications": {
                        "Binding": {
                            "DisplayValue": "文庫",
                            "Label": "Binding",
                            "Locale": "ja_JP"
                        },
                        "ProductGroup": {
                            "DisplayValue": "Book",
                            "Label": "ProductGroup",
                            "Locale": "ja_JP"
                        }
                    },
                    "ContentInfo": {
                        "Languages": {
                            "DisplayValues": [
                                {
                                    "DisplayValue": "日本語",
                                    "Type": "発行済み"
                                }
                            ],
                            "Label": "Language",
                            "Locale": "ja_JP"
                        },
                        "PagesCount": {
                            "DisplayValue": 266,
                            "Label": "NumberOfPages",
                            "Locale": "en_US"
                        },
                        "PublicationDate": {
                            "DisplayValue": "1997-10-09T00:00:01Z",
                            "Label": "PublicationDate",
                            "Locale": "en_US"
                        }
                    },
                    "ExternalIds": {
                        "EANs": {
                            "DisplayValues": [
                                "9784061592995"
                            ],
                            "Label": "EAN",
                            "Locale": "en_US"
                        },
                        "ISBNs": {
                            "DisplayValues": [
                                "4061592998",
                                "9784061592995"
                            ],
                            "Label": "ISBN",
                            "Locale": "en_US"
                        }
                    },
                    "ProductInfo": {
                        "IsAdultProduct": {
                            "DisplayValue": false,
                            "Label": "IsAdultProduct",
                            "Locale": "en_US"
                        },
                        "ItemDimensions": {
                            "Weight": {
                                "DisplayValue": 0.31085178942,
                                "Label": "Weight",
                                "Locale": "ja_JP",
                                "Unit": "ポンド"
                            }
                        },
                        "UnitCount": {
                            "DisplayValue": 1,
                            "Label": "NumberOfItems",
                            "Locale": "en_US"
                        }
                    },
                    "Title": {
                        "DisplayValue": "本を読む本 (講談社学術文庫)",
                        "Label": "Title",
                        "Locale": "ja_JP"
                    }
                },
                "Offers": {
                    "Listings": [
                        {
                            "Availability": {
                                "Message": "一時的に在庫切れ; 入荷時期は未定です。注文確定後、入荷時期が確定次第、お届け予定日をEメールでお知らせします。万が一、入荷できないことが判明した場合、やむを得ず、ご注文をキャンセルさせていただくことがあります。商品の代金は発送時に請求いたします。",
                                "MinOrderQuantity": 1,
                                "Type": "Now"
                            },
                            "Condition": {
                                "SubCondition": {
                                    "Value": "New"
                                },
                                "Value": "New"
                            },
                            "DeliveryInfo": {
                                "IsAmazonFulfilled": true,
                                "IsFreeShippingEligible": true,
                                "IsPrimeEligible": true
                            },
                            "Id": "",
                            "IsBuyBoxWinner": true,
                            "LoyaltyPoints": {
                                "Points": 20
                            },
                            "MerchantInfo": {
                                "Id": "AN1VRQENFRJN5",
                                "Name": "Amazon.co.jp"
                            },
                            "Price": {
                                "Amount": 1177,
                                "Currency": "JPY",
                                "DisplayAmount": "¥1,177"
                            },
                            "ProgramEligibility": {
                                "IsPrimeExclusive": false,
                                "IsPrimePantry": false
                            },
                            "ViolatesMAP": false
                        }
                    ],
                    "Summaries": [
                        {
                            "Condition": {
                                "Value": "New"
                            },
                            "HighestPrice": {
                                "Amount": 4760,
                                "Currency": "JPY",
                                "DisplayAmount": "¥4,760"
                            },
                            "LowestPrice": {
                                "Amount": 1177,
                                "Currency": "JPY",
                                "DisplayAmount": "¥1,177"
                            },
                            "OfferCount": 3
                        },
                        {
                            "Condition": {
                                "Value": "Used"
                            },
                            "HighestPrice": {
                                "Amount": 12600,
                                "Currency": "JPY",
                                "DisplayAmount": "¥12,600"
                            },
                            "LowestPrice": {
                                "Amount": 355,
                                "Currency": "JPY",
                                "DisplayAmount": "¥355"
                            },
                            "OfferCount": 44
                        }
                    ]
                }
            }
        ]
    }
}

PA API v5のjsonを処理する

上記のJSONの形式の情報を、PHPの関数であるjson_decodeで処理をします。

$obj = json_decode( $response , false ) ;

json_decodeしたあとは、本のタイトルは$booktitleへ、著者名は$authorへ、といった具合に情報を細分化し、用意した任意の変数にそれぞれ格納します。

具体的にコードを記述してみましょう。

echo $obj->ItemsResult->Items[0]->ItemInfo->Title->DisplayValue ;

echo $obj->ItemsResult->Items[0]->ItemInfo->ByLineInfo->Contributors[0]->Name ;

echo $obj->ItemsResult->Items[0]->DetailPageURL ;

echo $obj->ItemsResult->Items[0]->Images->Primary->Medium->URL ;

ここでは、それぞれタイトル、著者、詳細ページURL、表紙イメージを変数に格納しています。これを実行するとブラウザ上に取得した情報が表示されます。

error: Content is protected !!