Are Browse Nodes Disappearing?
The Old-Fashioned Way
Amazon uses "browse nodes" to organize its web site and product information. Each browse node may have zero or more products associated with it and, generally, you can think of a browse node as a category of products.
In the past, each browse node also represented a web page on Amazon.com's site. Products directly associated with the page's browse node would be displayed on the page. For example, consider the Amazon.com web page at:
As you can see in the URL, this page is associated with the browse node having 510080 as its browse node identifier. The URL displays the Vacuums, Cleaning & Storage page. The products listed on Amazon's page are the same as those returned by executing an A2S ItemSearch query and specifying 510080 as the browse node ID and Kitchen as the search index:
The New Way
But, assigning products to specific browse nodes is difficult especially since products can associated with multiple browse nodes and browse nodes can be organized in many ways. For example, a ring might appear in several browse nodes - organized by audience (men's, women's), size, color, metal type, gemstone, etc.
To simplify the addition of new products, Amazon is moving away from assigning products directly to browse nodes. Instead, they are dynamically populating browse nodes based on attributes of the products.
Using "Refinement" Nodes
For example, when you click on the "Apparel" link under "Dogs" in the Pet Supplies nodes, Amazon displays the following page:
Note that the "node=" parameter has two browse nodes listed - 492846011 and 518073011 The "%2C" between the values represents a comma.
Node 518073011 is the Apparel & Accessories node under the Pet Supplies node. Node 492846011 is a special "refinement" node that contains all dog-related products. It's not intended to be viewed directly as a web page at Amazon.com. Instead, it's used to filter products in other nodes so that only the ones for dogs are displayed.
Notice also that Amazon's merchant ID (ATVPDKIKX0DER) is in the URL for the Dogs / Apparel page.
Amazon uses the information in the URL to display Amazon's products that are in both the "Dogs" node and the "Apparel & Accessories" node. In this way they have dynamically created a "Dogs / Apparel" node when one doesn't actually exist.
So, we can no longer directly query for "Dogs / Apparel & Accessories" products using A2S. We can query both the "Dogs" and "Apparel & Accessories" nodes and filter the results ourselves to duplicate what Amazon is doing, but with a large number of products it is difficult to do within the confines of the "one-second rule."
Perhaps in the future, the A2S developers will add functionality allowing us to specify multiple browse nodes in a query and return only products that are in all the specified nodes. In the mean time, the SearchBins response group (and the options associated with it) provides some functionality for duplicating what is being done on Amazon's site.
Another way Amazon is moving away from manually populating browse nodes is to use "filters" based on the merchant selling the products. One example is the Armani Exchange node (391848011):
On Amazon's site, it appears that the node has children. But, it doesn't really. Amazon's dynamically creating the "children" by filtering products in other nodes based on Armani Exchange's Merchant ID (A2I38I2YSDNB86). For example, if you click on the "Sweaters" link on the Armani Exchange page at Amazon.com, Amazon takes you to the following URL:
The browse node ID (1044442) represents the Apparel / Departments / Men / Sweaters node which includes products sold by Amazon.com and many other merchants. The URL, however, includes "me=A2I38I2YSDNB86" which causes the results to be filtered and include only products sold by the Armani Exchange merchant.
We already have the ability to filter ItemSearch results by Merchant so we can duplicate this method of dynamically creating browse nodes.
Yet another method Amazon uses to dynamically populate browse nodes is to apply a filter based on a specific attribute of a product - the amount of memory in a computer, the size of a TV's screen, the type of gemstone in a ring, etc.
A few options are available to A2S users to duplicate this functionality. When searching the Books search index, you can specify a query using the Power parameter. Also, you can filter results by a few primary attributes such as Author, Director, and Manufacturer.
A2S also supports "Search Bins" which categorize the items returned by an ItemSearch operation into groups, called bins. The grouping is based on the search index. Using the SearchBins response group (and the options associated with it) provides some functionality for duplicating what is being done on Amazon's site.
To Infinity ... and Beyond!
As Amazon moves away from statically-defined browse nodes to dynamically populated nodes, A2S developers will need to change they way they design and implement A2S applications.
Amazon's browse node hierarchy will become less useful as defined nodes are replaced by derived ones. Instead of accessing and categorizing products solely by browse node, attention will need to be paid to the attributes of the products.
A2S itself will need to be updated to provide A2S developers better tools to filter results in the ways that Amazon uses on its own site. This should present opportunities to create new and exciting applications using A2S.