E-Commerce on Amazon — Leveraging APIs to measure performance
As part of an e-commerce initiative, we are running a stand-alone e-commerce web-shop coupled with a connector to different marketplaces. One of which is Amazon, where we are running both Amazon Fulfilled and Merchant fulfilled programs. We are also using their advertising platforms to advertise our products using the headline search and sponsored product features.
APIs and SDKs Overviews
Given that we are using python to perform data transformation, it made sense to look at what was available into existing SDK that could support our use case and on Python boto is the de-facto SDK to use to perform API calls towards Amazon, typically AWS.
- The first issue with using boto as an SDK for e-commerce purpose is that the marketplace web-service, which handles orders, order items and inventory is only available as an end point as of boto v2.49 and is not yet supported within the boto 3 release.
- The second issue comes from the advertising side, headline search and sponsored products now fall under a different API setup, the Amazon Advertising API which is not supported in any boto release. The Ads API has its own documentation and uses the login with amazon for authentication. This is in contrast with the setup with Amazon MWS which requires to register as a developer under the platform AWS MWS platform.
One of the first thing that you must consider when dealing with Amazon MWS end points, is that there is quite some severe throttling limits, these limits apply per end point, depending on the type of usage and the scale that you would like handle with the API it might be worth looking into the reporting end point and/or setting up a subscription web-hook.
The Amazon Advertising API is setup in a very different way, it can handle a high volume of load, and for our purpose most of the calls would be to reporting end points, which are done both in an asynchronous manner. For their Advertising APIs their responses are provided in a Gzip format out of their reporting end points.
The Orders end points are composed of multiple subsegments: List Orders, Get Orders and List Order Items.
Getting a list of orders can be achieved using the MWSConnection Object of the boto API such as as in the example above. It is worth noting that European marketplaces use a different API end point than North American one mws-eu.amazonservices.com.
The Inventory end point provides by ASIN the supply quantity of items available in Amazon warehouses, typically for FBA purposes. In Europe, Amazon provides a consolidated view of inventory across all their European warehouses and marketplaces.
The output of which is a dataset providing 6 fields of interest:
Most of datasets that need to be obtained for performance tracking for Sponsored Products and Headline Search are done through the reporting end point of the amazon ads API.
The reporting end point works in an async manner, a request must be initiated to generate a report, this providing a reportId, which can then be used to check on the status of the request, once it is finally not IN_PROGRESS anymore the reports a location can be fetched from which to download the report.
The list of available metrics and dimensions that can be fetched for each type of reports is provided by the API documentation as shown above.
As shown above the key metrics are available either at Ad group or Campaign level.
Amazon offers an ecosystem covering marketplace, fulfilment and advertising. It is possible to extract quite some data out of their API for analysis and reporting purposes. There is some limitation in terms of what can be extracted and not everything you would wish available is or at the desired level of granularity. Yet it is still possible to get some understanding of your core metrics.
More from me on Hacking Analytics: