PHP library to perform product lookup and searches using the Amazon Product API.
Requires the SimpleXML PHP and Curl extensions to be installed. It also assumes that you have some knowledge of Amazon's Product API and have set up an Amazon Associate and Amazon Web Services account in order to retrieve your access keys.
Clone the git repository:
git clone https://github.com/MarcL/AmazonProductAPI.git
Include the library in your code
require_once( 'AmazonAPI' )
Instantiate the class using your secret keys
$keyId = 'YOUR-AWS-KEY';
$secretKey = 'YOUR-AWS-SECRET-KEY';
$associateId = 'YOUR-AMAZON-ASSOCIATE-ID';
$amazonAPI = new AmazonAPI( $keyId, $secretKey, $associateId );
It supports all Amazon regions : Canada ('ca'), China ('cn'), Germany ('de'), Spain ('es'), France ('fr'), Italy ('it'), Japan ('jp'), United Kingdom ('uk') and United States ('us'). The default is UK but to set the locale call SetLocale before calling the product methods. E.g.
$amazonAPI->SetLocale( 'us' );
By default it will use HTTP but if you need to use SSL then call the following before using the product methods and it will connect to the HTTPS endpoints:
$amazonAPI->UseSSL( true );
To search for an item use the ItemSearch method:
// Search for Harry Potter items in all categories
$items = $amazonAPI->ItemSearch( 'harry potter' );
// Search for Harry Potter items in Books category only
$items = $amazonAPI->ItemSearch( 'harry potter', 'Books' );
To determine valid categories for search call GetValidSearchNames() :
// Get an array of valid search categories we can use
$searchCategories = $amazonAPI->GetValidSearchNames();
To look up product using the product ASIN number use ItemLookup:
// Retrieve specific item by id
$items = $amazonAPI->ItemLookUp( 'B003U6I396' );
// Retrieve a list of items by ids
$asinIds = array( 'B003U6I396', 'B003U6I397', 'B003U6I398' );
$items = $amazonAPI->ItemLookUp( $asinIds );
By default the data will be returned as SimpleXML nodes. However if you call SetRetrieveAsArray() then a simplified array of items will be returned. For example:
// Return XML data
$amazonAPI = new AmazonAPI( $keyId, $secretKey, $associateId );
$items = $amazonAPI->ItemSearch( 'harry potter' );
var_dump( $items );
This will output:
class SimpleXMLElement#2 (2) {
public $OperationRequest =>
class SimpleXMLElement#3 (3) {
public $RequestId =>
string(36) "de58449e-0c1a-47ac-9823-00fd049c52df"
public $Arguments =>
class SimpleXMLElement#5 (1) {
public $Argument =>
array(11) {
...
// Return simplified data
$amazonAPI = new AmazonAPI( $keyId, $secretKey, $associateId );
$amazonAPI->SetRetrieveAsArray();
$items = $amazonAPI->ItemSearch( 'harry potter' );
var_dump( $items );
Returning simplified data gives:
array(10) {
[0] =>
array(8) {
'asin' =>
string(10) "B00543R3WG"
'url' =>
string(212) "http://www.amazon.co.uk/Harry-Potter-Complete-8-Film-Collection/dp/B00543R3WG%3FSubscriptionId%3D1BM0B8TXM1YSZ1M0XDR2%26tag%3Ddjcr-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3DB00543R3WG"
'rrp' =>
double(44.99)
'title' =>
string(58) "Harry Potter - The Complete 8-Film Collection [DVD] [2011]"
'lowestPrice' =>
double(23.4)
'largeImage' =>
string(53) "http://ecx.images-amazon.com/images/I/51qa9nTUsEL.jpg"
'mediumImage' =>
string(61) "http://ecx.images-amazon.com/images/I/51qa9nTUsEL._SL160_.jpg"
'smallImage' =>
string(60) "http://ecx.images-amazon.com/images/I/51qa9nTUsEL._SL75_.jpg"
}
[1] =>
array(8) {
'asin' =>
string(10) "0747558191"
'url' =>
string(212) "http://www.amazon.co.uk/Harry-Potter-Philosophers-Stone-Rowling/dp/0747558191%3FSubscriptionId%3D1BM0B8TXM1YSZ1M0XDR2%26tag%3Ddjcr-21%26linkCode%3Dxm2%26camp%3D2025%26creative%3D165953%26creativeASIN%3D0747558191"
'rrp' =>
double(6.99)
'title' =>
string(40) "Harry Potter and the Philosopher\'s Stone"
…
- Need to make the simplified data less hardcoded!
This library uses code based on AWS API authentication For PHP by David Drake.