Amazon AWS API

The Amazon Associates Web Service lets you search for and fetch information about items in Amazon's catalogue.

Here's a brief example, in this case searching for books by a specific publisher, ordered by sales rank:


// Note: pass in the publisher to search for as an argument
$xml = simplexml_load_file(
  'http://ecs.amazonaws.co.uk/' . // suffix for country
  'onca/xml?Service=AWSECommerceService&Version=2007-10-29' .
  '&AWSAccessKeyId=1SVFNCKVJ7JWK2NPG002' . // AWS developer ID
  '&Operation=ItemSearch&ResponseGroup=Medium' .
  '&Availability=Available&Condition=All&MerchantId=Amazon' .
  '&SearchIndex=Books' . // type of product
  '&Sort=salesrank' . // sort order
  '&Publisher=' . urlencode($argv[1]) // search criteria
  );
  
$items = array();
foreach ($xml->Items->Item as $item){
  $attrs = $item->ItemAttributes;
  $items[] = sprintf(
   '<div class="item">
     <div class="metadata">
       <img src="%s"/>
     </div>
     <div class="metadata">
       <a href="%s">%s</a><br/>%s<br/>%s<br/>%s
     </div>
   </div>',
   $item->LargeImage->URL,
   $item->DetailPageURL,
   $attrs->Title,
   $attrs->Author,
   date('F Y', strtotime($attrs->PublicationDate)),
   $attrs->ListPrice->FormattedPrice
   );
}
printf(
   '<html>
     <head>
       <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
       <style type="text/css">
        div.metadata { float:left; margin-right: 2em; }
        div.item { float:left; clear: both; margin-bottom: 2em; }
       </style>
     </head>
     <body>%s</body>
   </html>',
  implode("\n", $items)
  );