ylliX - Online Advertising Network

Tutorial: Fetching stock data from Amazon using FBAInventoryServiceMWS

First thing you need is PHP client for Fulfillment Inventory API, you can download at https://developer.amazonservices.ca/doc/fba/inventory/v20101001/php.html – yes, version is 4 years old, they don’t have any newer… Unpack zip at you library folder and you should see such files:

Zrzut ekranu 2014-10-18 o 12.24.22

Next step is preparing config, all you need is below:

define('AWS_ACCESS_KEY_ID', '........');
define('AWS_SECRET_ACCESS_KEY', '........');
define('APPLICATION_NAME', '......');
define('MERCHANT_ID', '......');
define('MARKETPLACE_ID', '......');

Just fill in proper values. Then setup autoloader for your client (if you have it already done for other libraries, just skip this step):

set_include_path(get_include_path() . PATH_SEPARATOR . '../../'); // this should point at your library folder wherever it is
spl_autoload_register(function ($className) {
	$filePath = str_replace('_', DIRECTORY_SEPARATOR, $className) . '.php';
	$includePaths = explode(PATH_SEPARATOR, get_include_path());
	foreach ($includePaths as $includePath) {
		if (file_exists($includePath . DIRECTORY_SEPARATOR . $filePath)) {
			require_once $filePath;

Then invoke client itself:

$serviceUrl = "https://mws-eu.amazonservices.com/FulfillmentInventory/2010-10-01";
$configData = array(
'ServiceURL' => $serviceUrl,
'ProxyHost' => null,
'ProxyPort' => -1,
'MaxErrorRetry' => 3,

$service = new FBAInventoryServiceMWS_Client(

Variable $serviceUrl depends on your region:

North America – https://mws.amazonservices.com/FulfillmentInventory/2010-10-01
Europe – https://mws-eu.amazonservices.com/FulfillmentInventory/2010-10-01
Japan – https://mws.amazonservices.jp/FulfillmentInventory/2010-10-01
China – https://mws.amazonservices.com.cn/FulfillmentInventory/2010-10-01

Next step is preparing request itself, you need to use product SKU:

$request = new FBAInventoryServiceMWS_Model_ListInventorySupplyRequest();
$skus = new FBAInventoryServiceMWS_Model_SellerSkuList();
$skus->setmember(array('SKU1', 'SKU2', 'SKU3'));

And the final step is calling webservice:

try {
   $response = $service->ListInventorySupply($request);
} catch (FBAInventoryServiceMWS_Exception $ex) {
   $code = $ex->getStatusCode();
   $simplexml = new SimpleXMLElement($ex->getXML());
   $message = (string) $simplexml->Error->Message;

The strange thing is that even with proper response (without any errors, Amazon throws exception, maybe there is some config entry for this, have no idea. Anyway in $code variable you should have HTTP reponse code, if this is 200 then everything went ok, returned XML should look like:

<ListInventorySupplyResponse xmlns="http://mws.amazonaws.com/FulfillmentInventory/2010-10-01/">

Now all you need is to update your DB with proper values.

Leave a Reply