Amazon MWS is dead. Long live the Selling Partner API!
…well, sort of. In a few days, Amazon is releasing a new marketplace API that sellers can use to programmatically control their seller accounts. It’s called the Selling Partner API, or SP for short. SP is a major upgrade from MWS—let’s look at how the two services are different, and why you should care.
For 10+ years, Amazon's Marketplace Web Services (MWS) has been the only option for interfacing with Amazon seller accounts programatically. You can control everything about your Amazon store via MWS, from managing inventory to receiving order information to handling fulfillment. It’s a powerful tool, because it enables sellers to handle larger inventories and order volume, automatically modify prices to stay competitive, and do other common (and not so common) operations in bulk.
MWS has some warts, though. It’s an XML-based API, a design that largely fell by the wayside as JSON-based APIs became increasingly popular in the last decade.1 XML imposes more mandatory structure on each API request than JSON does, leading to extra layers of abstraction on top of HTTP. It also has static, non-adjustable rate limits, and error handling is cumbersome—when you send a data file to MWS, you have to wait for it to finish processing, and then pull down another file that maps errors to specific lines in the file you uploaded.
SP solves all these problems, and more! Some of my favorite features:
- A RESTful interface, operated via standard HTTP methods. All MWS requests are done via POST, and the actual operation performed is dictated by the content of the request. In contrast, SP requests use the GET, POST, or PUT methods, all of which cause the action related to the verb.2
- Dynamic usage plans. Now you can increase rate limits as your business grows, so you don’t have to pick and choose which API operations to perform to stay below a static limit.
- Better handling for authentication and permissions. You can specify granular permissions, and API tokens are available via AWS IAM3 rather than a complex registration process.
- A sandboxed version of the API. MWS doesn’t have one of these, so you have to test your code on production data. It’s a nerve wracking experience―I will definitely admit to having messed up data as a result of this.
If you’re a seller or developer with an MWS application, don’t panic! Amazon isn’t planning to immediately deprecate MWS. You can incrementally transition your application from MWS to SP, since there will be support for hybrid Selling Partner applications that use both MWS and SP at the same time. That said, Amazon does say that “the legacy Amazon MWS APIs will be deprecated in the future,” so I recommend getting ahead of the issue.
Amazon has released Java and C# clients for the Selling Partner API. MWS has Java, C#, and PHP clients, so I would not be surprised to see a PHP client for SP sometime soon. The Java and C# clients use Swagger code generation (with these endpoint models), so it should be relatively straightforward to implement SP clients in any other language that Swagger can target.
Once Amazon releases v1 of the Selling Partner API, I’ll post an article that guides you through making your first SP application. Stay tuned by signing up for my newsletter below! And as always, please email me if you have any questions. I’d love to hear from you.
(Also, I help Amazon sellers increase their sales via MWS―if you’re interested in upgrading your selling infrastructure, shoot me a line at email@example.com.)
1 I originally wrote:
MWS is an XML-RPC API, a design that largely fell by the wayside as RESTful APIs became increasingly popular in the last decade.
After doing more research on the true definitions of XML-RPC and RESTful APIs, I found that comparing the two creates a false dichotomy, since XML-RPC is a protocol and RESTful implies a certain set of constraints (but does not specify any implementation).
2 For a refresher on the actions indicated by each HTTP verb, check out MDN.
3 IAM, or Identity and Access Management, is AWS’s service for managing roles and permissions for Amazon services. Lots more information here.