Overview

Welcome to the Best Buy Developer API site, where our extensive API catalog is waiting for your imagination. If you have never used our APIs we suggest checking out our Getting Started guide.

If you already have your API key please dig into the Search or Response Formats to refine your search or results.

If you want to access our data please choose our array of APIs. Within each of them you will find descriptions of the available attributes and examples of working requests and responses.


Search

Applies to: Products APIStores APIReviews APICategories API

Search consists of one or more terms that generally include an attribute, operator and value. Terms are combined with ampersands & or pipes |. Searches are implemented as part of an HTTP GET request to the desired Best Buy API. term1&term2 - specifies term1 AND term2 term1|term2 - specifies term1 OR term2

Attribute names are case sensitive; attribute values are not.

Available Operators

  • = - attribute equals a specified value
  • != - attribute does not equal a specified value
  • > - attribute is greater than a specified value
  • < - attribute is less than a specified value
  • >= - attribute is greater than or equal to a specified value
  • <= - attribute is less than or equal to a specified value
  • in - search based based on a list of attribute values

Search by a single attribute

Our products, stores, reviews and category APIs can be searched by nearly all available attributes. For example, to find only the stores located in Utah, you can use the query shown below.

#request:
http://api.remix.bestbuy.com/v1/stores(region=ut)?format=json&show=storeId,city,region&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 10, "currentPage": 1, "totalPages": 1, "queryTime": "0.002", "totalTime": "0.007", "partial": false, "canonicalUrl": "/v1/stores(region=\"ut\")?format=json&show=storeId,city,region&apiKey=YourAPIKey", "stores": [ { "storeId": 1402, "city": "American Fork", "region": "UT" }, { "storeId": 773, "city": "Orem", "region": "UT" }, ...
#request:
http://api.remix.bestbuy.com/v1/stores(region=ut)?format=xml&show=storeId,city,region&apiKey=YourAPIKey

#response:
<stores currentPage="1" totalPages="1" from="1" to="10" total="10" queryTime="0.002" totalTime="0.007" canonicalUrl="/v1/stores(region="ut")?show=storeId,city,region&apiKey=YourAPIKey" partial="false"> <store> <storeId>1402</storeId> <city>American Fork</city> <region>UT</region> </store> <store> <storeId>773</storeId> <city>Orem</city> <region>UT</region> </store> <store> <storeId>497</storeId> <city>Sandy</city> <region>UT</region> </store> <store> <storeId>1146</storeId> <city>West Jordan</city> <region>UT</region> </store> ...

Search by all attributes (AND)

If you need to search for the values of more than one attribute and all of the attributes must be present, combine them with an ampersand &.

#request:
http://api.remix.bestbuy.com/v1/products(manufacturer=canon&salePrice<1000)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 210, "currentPage": 1, "totalPages": 21, "queryTime": "0.095", "totalTime": "0.115", "partial": false, "canonicalUrl": "/v1/products(manufacturer=\"canon\"&salePrice<1000)?show=sku,name,salePrice&format=json&apiKey=YourAPIKey", "products": [ { "sku": 6101087, "name": "Canon - 1.9x Tele Converter Lens", "salePrice": 99.99 }, { "sku": 8795075, "name": "Canon - 100-Pack 4\" x 6\" Glossy Photo Paper", "salePrice": 17.49 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(manufacturer=canon&salePrice<1000)?format=xml&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="21" from="1" to="10" total="210" queryTime="0.106" totalTime="0.125" canonicalUrl="/v1/products(manufacturer=&quot;canon&quot;&amp;salePrice&lt;1000)?show=sku,name,salePrice&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>6101087</sku> <name>Canon - 1.9x Tele Converter Lens</name> <salePrice>99.99</salePrice> </product> <product> <sku>8795075</sku> <name>Canon - 100-Pack 4&quot; x 6&quot; Glossy Photo Paper</name> <salePrice>17.49</salePrice> </product> <product> <sku>7170189</sku> <name>Canon - 100mm f/2.8 Macro Lens</name> <salePrice>599.99</salePrice> </product> <product> <sku>7124104</sku> <name>Canon - 16 Ink Tank Twin-Pack - Multicolor</name> <salePrice>20.99</salePrice> </product> ...

Search by any attributes (OR)

If you want items with any of the specified attributes, combine them with a pipe |.

#request:
http://api.remix.bestbuy.com/v1/products(wifiReady=true|wifiBuiltIn=true)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 500, "currentPage": 1, "totalPages": 50, "queryTime": "0.005", "totalTime": "0.030", "partial": false, "canonicalUrl": "/v1/products(wifiReady=true|wifiBuiltIn=true)?show=sku,name,salePrice&format=json&apiKey=YourAPIKey", "products": [ { "sku": 1012749, "name": "Acer - Aspire 11.6 inch Tablet with 120GB Memory", "salePrice": 661.98 }, { "sku": 4255007, "name": "Acer - B1-720 7\" Android Tablet - 16GB - Iron Gray", "salePrice": 128.98 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(wifiReady=true|wifiBuiltIn=true)?format=xml&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="50" from="1" to="10" total="500" queryTime="0.005" totalTime="0.030" canonicalUrl="/v1/products(wifiReady=true|wifiBuiltIn=true)?show=sku,name,salePrice&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>1012749</sku> <name>Acer - Aspire 11.6 inch Tablet with 120GB Memory</name> <salePrice>661.98</salePrice> </product> <product> <sku>4255007</sku> <name>Acer - B1-720 7&quot; Android Tablet - 16GB - Iron Gray</name> <salePrice>128.98</salePrice> </product> <product> <sku>4255052</sku> <name>Acer - Iconia A3-A10 10.1&quot; Android Tablet - 32GB - White</name> <salePrice>264.98</salePrice> </product> <product> <sku>6819684</sku> <name>Acer - Iconia Tab A110 - 8GB - Gray</name> <salePrice>179.99</salePrice> </product> ...

Complex Searches

Complex searches can be performed by combining AND & and OR | operations with parentheses. Here's an example:

Let's say that you're looking for a Play Station Portable video game (platform=psp). You don't want to spend more than $15 (salePrice<=15). However, because you will trade in the game when you're done, you could spend up to $20 (salePrice<=20) - but only if the game's trade-in value is more than $10 (tradeInValue>10).

The search terms for this example can be combined as follows:

platform=psp & (salePrice<=15 | (salePrice<=20 & tradeInValue>10))

#request:
http://api.remix.bestbuy.com/v1/products(platform=psp&(salePrice<=15|(salePrice<=20&tradeInValue>=10)))?format=json&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
[ { "sku": 7049721, "name": "Ape Escape: On the Loose Greatest Hits - PSP", "salePrice": 7.99, "tradeInValue": 0.00, "platform": "PSP" }, { "sku": 9335436, "name": "Chessmaster: The Art of Learning - PSP", "salePrice": 9.99, "tradeInValue": 0.00, "platform": "PSP" }, { "sku": 1450486, "name": "Megamind: The Blue Defender - PSP", "salePrice": 11.99, "tradeInValue": 0.00, "platform": "PSP" }, ...
#request:
http://api.remix.bestbuy.com/v1/products(platform=psp&(salePrice<=15|(salePrice<=20&tradeInValue>=10)))?format=xml&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
<product> <sku>7049721</sku> <name>Ape Escape: On the Loose Greatest Hits - PSP</name> <salePrice>7.99</salePrice> <tradeInValue>0.00</tradeInValue> <platform>PSP</platform> </product> <product> <sku>9335436</sku> <name>Chessmaster: The Art of Learning - PSP</name> <salePrice>9.99</salePrice> <tradeInValue>0.00</tradeInValue> <platform>PSP</platform> </product> <product> <sku>1450486</sku> <name>Megamind: The Blue Defender - PSP</name> <salePrice>11.99</salePrice> <tradeInValue>0.00</tradeInValue> <platform>PSP</platform> </product> ...

Search by date range

If you want to find all products that were released in February 2014, you would use the following query:

#request:
http://api.remix.bestbuy.com/v1/products(releaseDate>=2014-02-01&releaseDate<=2014-02-28)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 4407, "currentPage": 1, "totalPages": 441, "queryTime": "0.064", "totalTime": "0.226", "partial": false, "canonicalUrl": "/v1/products(releaseDate>=2014-02-01&releaseDate<=2014-02-28)?show=sku,name,salePrice&format=json&apiKey=YourAPIKey", "products": [ { "sku": 24311154, "name": "#lovestrock-CD", "salePrice": 22.99 }, { "sku": 23374755, "name": "(Untitled) - CD", "salePrice": 39.99 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(releaseDate>=2014-02-01&releaseDate<=2014-02-28)?format=xml&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="441" from="1" to="10" total="4407" queryTime="0.061" totalTime="0.081" canonicalUrl="/v1/products(releaseDate&gt;=2014-02-01&amp;releaseDate&lt;=2014-02-28)?show=sku,name,salePrice&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>24311154</sku> <name>#lovestrock-CD</name> <salePrice>22.99</salePrice> </product> <product> <sku>23374755</sku> <name>(Untitled) - CD</name> <salePrice>39.99</salePrice> </product> <product> <sku>2628674</sku> <name>+++ [Digipak] - CD</name> <salePrice>8.99</salePrice> </product> <product> <sku>24208285</sku> <name>+++ [LP] - VINYL</name> <salePrice>22.99</salePrice> </product> ...

Search by date relative to today

You can also use the value today to represent the current day. So, if you want to see all the products that were released today, you would use this query:

#request:
http://api.remix.bestbuy.com/v1/products(releaseDate>today)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 7688, "currentPage": 1, "totalPages": 769, "queryTime": "0.007", "totalTime": "0.032", "partial": false, "canonicalUrl": "/v1/products(releaseDate>today)?show=sku,name,salePrice&format=json&apiKey=YourAPIKey", "products": [ { "sku": 24987148, "name": "$Ellebrity (DVD)", "salePrice": 19.99 }, { "sku": 6121399, "name": "& Then You Shoot Your Cousin - CD", "salePrice": 12.99 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(releaseDate>today)?format=xml&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="769" from="1" to="10" total="7688" queryTime="0.009" totalTime="0.032" canonicalUrl="/v1/products(releaseDate&gt;today)?show=sku,name,salePrice&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>24987148</sku> <name>$Ellebrity (DVD)</name> <salePrice>19.99</salePrice> </product> <product> <sku>6121399</sku> <name>&amp; Then You Shoot Your Cousin - CD</name> <salePrice>12.99</salePrice> </product> <product> <sku>25063185</sku> <name>&amp; Then You Shoot Your Cousin [Clean] - CD</name> <salePrice>12.99</salePrice> </product> <product> <sku>25063194</sku> <name>&amp; Then You Shoot Your Cousin-VINYL</name> <salePrice>22.99</salePrice> </product> ...

Search for multiple attribute values

If you want multiple values of a single attribute, you can specify them individually. For example, if you want to see white, bisque, or stainless-steel side-by-side refrigerators, you would use this query:

#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.id=abcat0901005&color in(white,bisque,stainless-steel))?format=json&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 52, "currentPage": 1, "totalPages": 6, "queryTime": "0.007", "totalTime": "0.033", "partial": false, "canonicalUrl": "/v1/products(categoryPath.id=abcat0901005&color in(\"white\",\"bisque\",\"stainless-steel\"))?show=sku,name,salePrice&format=json&apiKey=YourAPIKey", "products": [ { "sku": 1614013, "name": "Amana - 25.4 Cu. Ft. Side-by-Side Refrigerator with Thru-the-Door Ice and Water - Stainless-Steel", "salePrice": 1099.99 }, { "sku": 1609858, "name": "Amana - 25.4 Cu. Ft. Side-by-Side Refrigerator with Thru-the-Door Ice and Water - White", "salePrice": 999.99 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.id=abcat0901005&color in(white,bisque,stainless-steel))?format=xml&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="6" from="1" to="10" total="52" queryTime="0.021" totalTime="0.048" canonicalUrl="/v1/products(categoryPath.id=abcat0901005&amp;color in(&quot;white&quot;,&quot;bisque&quot;,&quot;stainless-steel&quot;))?show=sku,name,salePrice&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>1614013</sku> <name>Amana - 25.4 Cu. Ft. Side-by-Side Refrigerator with Thru-the-Door Ice and Water - Stainless-Steel</name> <salePrice>1099.99</salePrice> </product> <product> <sku>1609858</sku> <name>Amana - 25.4 Cu. Ft. Side-by-Side Refrigerator with Thru-the-Door Ice and Water - White</name> <salePrice>999.99</salePrice> </product> <product> <sku>7369268</sku> <name>Electrolux - 25.9 Cu. Ft. Side-By-Side Refrigerator with Thru-the-Door Ice and Water - Stainless-Steel</name> <salePrice>1899.99</salePrice> </product> <product> <sku>3411216</sku> <name>Frigidaire - 22.5 Cu. Ft. Side-by-Side Refrigerator with Thru-the-Door Ice and Water - White</name> <salePrice>1049.99</salePrice> </product> ...

Wildcards - Value is present

You can use the astrisk * as a wildcard character. The wildcard can be used to:

  • indicate the presence of attribute values
  • request all values for filtered attributes
  • tokenize the string and represent additional characters

Some attributes apply only to specific items. Even then, because much of this attribute information comes from the manufacturer, not all items of a given type will have values set for that attribute. You can use the wildcard to specify items that have data for a specific attribute.

  • attribute=* - requests items for which the attribute has values
  • attribute!=* - requests items for which the attribute has no value
#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.id=abcat0502000&driveCapacityGb=*)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 381, "currentPage": 1, "totalPages": 39, "queryTime": "0.008", "totalTime": "0.039", "partial": false, "canonicalUrl": "/v1/products(categoryPath.id=abcat0502000&driveCapacityGb=*)?show=sku,name,salePrice&format=json&apiKey=YourAPIKey", "products": [ { "sku": 4591017, "name": "Acer - 11.6\" Touch-Screen Chromebook - Intel Celeron - 2GB Memory - 32GB Solid State Drive - Moonstone White", "salePrice": 299.00 }, { "sku": 5009309, "name": "Acer - 14\" Touch-Screen Laptop - Intel Core i5 - 6GB Memory - 500GB HDD + 20GB Solid State Drive - Silver", "salePrice": 740.98 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.id=abcat0502000&driveCapacityGb=*)?format=xml&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="39" from="1" to="10" total="381" queryTime="0.091" totalTime="0.122" canonicalUrl="/v1/products(categoryPath.id=abcat0502000&amp;driveCapacityGb=*)?show=sku,name,salePrice&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>4591017</sku> <name>Acer - 11.6&quot; Touch-Screen Chromebook - Intel Celeron - 2GB Memory - 32GB Solid State Drive - Moonstone White</name> <salePrice>299.00</salePrice> </product> <product> <sku>5009309</sku> <name>Acer - 14&quot; Touch-Screen Laptop - Intel Core i5 - 6GB Memory - 500GB HDD + 20GB Solid State Drive - Silver</name> <salePrice>740.98</salePrice> </product> <product> <sku>5616133</sku> <name>Acer - 14&quot; TravelMate Notebook - 4 GB Memory - 500 GB Hard Drive</name> <salePrice>893.98</salePrice> </product> <product> <sku>4120137</sku> <name>Acer - 15.6&quot; Laptop - Intel Core i3 - 4GB Memory - 500GB Hard Drive - Steel Gray</name> <salePrice>454.98</salePrice> </product> ...

Wildcards - Value is NOT present

This will return results in which there is no value present. In the following example, with the addition of the !, the return result has shifted from Solid State Drive.

#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.id=abcat0502000&driveCapacityGb!=*)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 42, "currentPage": 1, "totalPages": 5, "queryTime": "0.007", "totalTime": "0.270", "partial": false, "canonicalUrl": "/v1/products(categoryPath.id=abcat0502000&driveCapacityGb!=*)?show=sku,name,salePrice&format=json&apiKey=YourAPIKey", "products": [ { "sku": 6941496, "name": "Apple® - MacBook Pro with Retina display - 13.3\" Display - 4GB Memory - 128GB Flash Storage", "salePrice": 1299.99 }, { "sku": 6293168, "name": "Apple® - MacBook Pro with Retina display - 13.3\" Display - 8GB Memory - 256GB Flash Storage", "salePrice": 1499.99 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.id=abcat0502000&driveCapacityGb!=*)?format=xml&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="5" from="1" to="10" total="42" queryTime="0.008" totalTime="0.039" canonicalUrl="/v1/products(categoryPath.id=abcat0502000&amp;driveCapacityGb!=*)?show=sku,name,salePrice&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>6941496</sku> <name>Apple® - MacBook Pro with Retina display - 13.3&quot; Display - 4GB Memory - 128GB Flash Storage</name> <salePrice>1299.99</salePrice> </product> <product> <sku>6293168</sku> <name>Apple® - MacBook Pro with Retina display - 13.3&quot; Display - 8GB Memory - 256GB Flash Storage</name> <salePrice>1499.99</salePrice> </product> <product> <sku>6292781</sku> <name>Apple® - MacBook Pro with Retina display - 13.3&quot; Display - 8GB Memory - 512GB Flash Storage</name> <salePrice>1799.99</salePrice> </product> <product> <sku>8897529</sku> <name>Apple® - MacBook Pro with Retina display - 15.4&quot; Display - 16GB Memory - 512GB Flash Storage</name> <salePrice>2599.99</salePrice> </product> ...

Filtered product attribute

Certain attributes, such as active=true, digital=false, preowned=false, or marketplace=false inherently filter results.

If your search string is sku=*, you will only active products, not all products. This is the same as specifying sku=*&active=true. If you want a list of all active and inactive products, you can specify sku=*&active=*.

Because active is a boolean attribute, active=* will return products for which active is either true or false. It's the same as sku=*&(active=true|active=false).

If your search string goes to sku.xml or sku.json these filters are ignored.

Wildcards - String

When used as part of a string search, the wildcard performs two functions. First, it tokenizes the string, breaking it into words. Second, it operates as a standard wildcard, matching any set of characters in the tokenized string. The following example illustrates both functions.

When searching for a string value, you may want to search for variations on a specific word. For example, you might want to find classic CDs, that is CDs whose titles include the words: Classic, Classics or Classical. To do this, you could use the following query:

#request:
http://api.remix.bestbuy.com/v1/products(name=classic*)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 6112, "currentPage": 1, "totalPages": 612, "queryTime": "0.007", "totalTime": "0.030", "partial": false, "canonicalUrl": "/v1/products(name=\"classic*\")?show=sku,name,salePrice&format=json&apiKey=YourAPIKey", "products": [ { "sku": 4606206, "name": "#1 Classical Album - Various - CD", "salePrice": 14.99 }, { "sku": 24772085, "name": "1 Classic Album &.. - CD", "salePrice": 22.99 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(name=classic*)?format=xml&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="612" from="1" to="10" total="6112" queryTime="0.008" totalTime="0.026" canonicalUrl="/v1/products(name=&quot;classic*&quot;)?show=sku,name,salePrice&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>4606206</sku> <name>#1 Classical Album - Various - CD</name> <salePrice>14.99</salePrice> </product> <product> <sku>24772085</sku> <name>1 Classic Album &amp;.. - CD</name> <salePrice>22.99</salePrice> </product> <product> <sku>22524241</sku> <name>10 Bluegrass Classics (Uk)-CD</name> <salePrice>10.99</salePrice> </product> <product> <sku>21703493</sku> <name>10 Classic Albums - CD</name> <salePrice>8.99</salePrice> </product> ...

Limitations

  • You cannot use a wildcard to begin a string search (e.g. (name=*top); this type of search is extremely resource intensive and doing so will result in a 400 error.

  • Wildcard with data is valid for strings only. When used alone, the wildcard can represent any data type. When used with other characters, the wildcard can only represent string data. For example, to find Canon products with customer reviews of 4.x, you cannot use (manufacturer=canon&customerReviewAverage=4.*) as the search string. You would have to use a search string like this: (manufacturer=canon&customerReviewAverage>4&customerReviewAverage<5).

Keyword Search Function

Applies to: Products API

When you want to do a text search across several common attributes, we have a Keyword Search function /products(search=searchterm). If you want to search for a term that includes a space, you will want to include an & ampersand between the words or it will be treated as an | or. The Keyword Search will search across the the following attributes:

  • name
  • manufacturer
  • shortDescription
  • longDescription
  • features.feature
  • details.value

Here is an example that looks for 'stainless steel ovens'.

#request:
http://api.remix.bestbuy.com/v1/products(search=oven&search=stainless&search=steel)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
{ ... "products": [ { "sku": 6916066, "name": "Amana - 30" Self-Cleaning Freestanding Electric Range - Stainless-Steel", "salePrice": 584.99 }, { "sku": 2267329, "name": "Applica - 4-Slice Toaster Oven - Stainless Steel", "salePrice": 39.99 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(search=oven&search=stainless&search=steel)?format=xml&show=sku,name,salePrice&apiKey=YourAPIKey

#response:
... <product> <sku>6916066</sku> <name>Amana - 30" Self-Cleaning Freestanding Electric Range - Stainless-Steel</name> <salePrice>584.99</salePrice> </product> <product> <sku>6917001</sku> <name>Amana - 30" Self-Cleaning Freestanding Gas Range - Stainless-Steel</name> <salePrice>629.99</salePrice> </product> ...

Response Format

Responses can be returned in either JSON or XML.

Applies to: Products APIStores APIReviews APICategories API

When requesting a single item, such as a specific product, you can indicate the desired response format with the extension added after the item's identifier. For example, /products/8880044.json. This is the method that is used in the Getting Started section, as well as in the Show section.

When requesting a collection of items, such as all the products in our catalog, the desired response format is specified in the format query parameter. An example of this can be seen in the Retrieving Collections section. If no format is specified then xml will be returned.

Applies to: Recommendations API

When using any of the endpoints in the Recommendations API the response format returned will be json. The XML format is not supported for the Recommendations API endpoints. You can specify the format using /6534009/alsoViewed.json or not specify a format like /6534009/alsoViewed

JSONP

Applies to: Products APIStores APIReviews APICategories APIRecommendations APIBuying Options API

If you'd like to load the JSON formatted response of one of our APIs with a script on your web page you will want to make use of the callback query parameter.

Below is a small HTML example that simply displays the name and image of each product returned by the sample query from the Basic Search section.

<div id="productlist"></div>
<script>
  function listProducts(root) {
    var html = [];
    for (var i = 0; i < root.products.length; ++i) {
      var entry = root.products[i];
      html.push('<a href="', entry.addToCartUrl, '">');
      html.push('<img src="', entry.image, '"/>');
      html.push(entry.name);
      html.push('</a><br/>');
    }
    document.getElementById("productlist").innerHTML = html.join("");
  }
</script>
<script src="http://api.remix.bestbuy.com/v1/products(name=Batman*)?show=name,image,addToCartUrl&format=json&callback=listProducts&apiKey=YourAPIKey">
</script>

Show

Applies to: Products APIStores APIReviews APICategories API

The Show attributes allows you to control which attributes are returned. You can select to return specific attributes by following the syntax in Show Only description. If you want to return all attributes follow the syntax in the Show All description.

Show Only

Applies to: Products APIStores APIReviews APICategories API

If you tried the example query in the Getting Started section, you probably noticed that our Products API returns a lot of attributes for each product. For convenience, we provide a show query parameter that allows you to specify just the attributes that you want returned in the response.

For example, if all you are interested in is the product's sku, name and salePrice, you can list these attributes in the show parameter.

Products Response show=sku,name,salePrice

#request:
http://api.remix.bestbuy.com/v1/products/8880044.json?show=sku,name,salePrice&apiKey=YourAPIKey

#response:
{ "sku": 8880044, "name": "Batman Begins (Blu-ray Disc)", "salePrice": 7.99 }
#request:
http://api.remix.bestbuy.com/v1/products/8880044.xml?show=sku,name,salePrice&apiKey=YourAPIKey

#response:
<product> <sku>8880044</sku> <name>Batman Begins (Blu-ray Disc)</name> <salePrice>7.99</salePrice> </product>

Show All

Applies to: Products APIStores API

In order to make the API responses more manageable, we don't return all available attributes for those items that contain many (e.g. Products and Stores. In the event that you want to use one of these hidden attributes, you can set show=all in the query parameters for the API.

For example, the Stores API does not return the detailedHours attribute by default. By setting show=all you will receive detailedHours in the response. For example, both the default response and the response containing detailedHours are provided below for store 2387.

Hidden attributes like this one can also be requested by setting the show parameter to a list that includes the hidden attribute(s) of interest.

Stores Response - Default Attributes Only

#request:
http://api.remix.bestbuy.com/v1/stores/2387.json?apiKey=YourAPIKey

#response:
{ "storeId": 2387, "name": "Best Buy Mobile - Richfield", "longName": "Best Buy Mobile - Richfield", "address": "6601 Nicollet Ave S", "city": "Richfield", "region": "MN", "fullPostalCode": "55423", "country": "US", "lat": 44.882942, "lng": -93.2775, "hours": "Mon: 11-8; Tue: 11-8; Wed: 11-8; Thurs: 11-8; Fri: 11-8; Sat: 11-7; Sun: 11-6", "hoursAmPm": "Mon: 11am-8pm; Tue: 11am-8pm; Wed: 11am-8pm; Thurs: 11am-8pm; Fri: 11am-8pm; Sat: 11am-7pm; Sun: 11am-6pm", "gmtOffset": -6, "services": [ { "service": "Best Buy Mobile Specialty Store" }, { "service": "Electronics Recycling" }, { "service": "Samsung Experience Shop" } ], "phone": "612-866-0957", "postalCode": "55423" }
#request:
http://api.remix.bestbuy.com/v1/stores/2387.xml?apiKey=YourAPIKey

#response:
<store> <storeId>2387</storeId> <name>Best Buy Mobile - Richfield</name> <longName>Best Buy Mobile - Richfield</longName> <address>6601 Nicollet Ave S</address> <city>Richfield</city> <region>MN</region> <fullPostalCode>55423</fullPostalCode> <country>US</country> <lat>44.882942</lat> <lng>-93.2775</lng> <hours>Mon: 11-8; Tue: 11-8; Wed: 11-8; Thurs: 11-8; Fri: 11-8; Sat: 11-7; Sun: 11-6</hours> <hoursAmPm>Mon: 11am-8pm; Tue: 11am-8pm; Wed: 11am-8pm; Thurs: 11am-8pm; Fri: 11am-8pm; Sat: 11am-7pm; Sun: 11am-6pm</hoursAmPm> <gmtOffset>-6</gmtOffset> <services> <service>Best Buy Mobile Specialty Store</service> <service>Electronics Recycling</service> <service>Samsung Experience Shop</service> </services> <phone>612-866-0957</phone> <postalCode>55423</postalCode> </store>

Stores Response show=all

Notice that the detailedHours are included at the bottom of the response in this example.

#request:
http://api.remix.bestbuy.com/v1/stores/2387.json?show=all&apiKey=YourAPIKey

#response:
{ "storeId": 2387, "name": "Best Buy Mobile - Richfield", "longName": "Best Buy Mobile - Richfield", "address": "6601 Nicollet Ave S", "city": "Richfield", "region": "MN", "fullPostalCode": "55423", "country": "US", "lat": 44.882942, "lng": -93.2775, "hours": "Mon: 11-8; Tue: 11-8; Wed: 11-8; Thurs: 11-8; Fri: 11-8; Sat: 11-7; Sun: 11-6", "hoursAmPm": "Mon: 11am-8pm; Tue: 11am-8pm; Wed: 11am-8pm; Thurs: 11am-8pm; Fri: 11am-8pm; Sat: 11am-7pm; Sun: 11am-6pm", "gmtOffset": -6, "services": [ { "service": "Best Buy Mobile Specialty Store" }, { "service": "Electronics Recycling" }, { "service": "Samsung Experience Shop" } ], "phone": "612-866-0957", "postalCode": "55423", "detailedHours": [ { "day": "Sunday", "date": "2014-04-27", "open": "11:00", "close": "18:00" }, ...
#request:
http://api.remix.bestbuy.com/v1/stores/2387.xml?show=all&apiKey=YourAPIKey

#response:
<store> <storeId>2387</storeId> <name>Best Buy Mobile - Richfield</name> <longName>Best Buy Mobile - Richfield</longName> <address>6601 Nicollet Ave S</address> <city>Richfield</city> <region>MN</region> <fullPostalCode>55423</fullPostalCode> <country>US</country> <lat>44.882942</lat> <lng>-93.2775</lng> <hours>Mon: 11-8; Tue: 11-8; Wed: 11-8; Thurs: 11-8; Fri: 11-8; Sat: 11-7; Sun: 11-6</hours> <hoursAmPm>Mon: 11am-8pm; Tue: 11am-8pm; Wed: 11am-8pm; Thurs: 11am-8pm; Fri: 11am-8pm; Sat: 11am-7pm; Sun: 11am-6pm</hoursAmPm> <gmtOffset>-6</gmtOffset> <services> <service>Best Buy Mobile Specialty Store</service> <service>Electronics Recycling</service> <service>Samsung Experience Shop</service> </services> <phone>612-866-0957</phone> <postalCode>55423</postalCode> <detailedHours> <detailedHour> <day>Sunday</day> <date>2014-04-27</date> <open>11:00</open> <close>18:00</close> </detailedHour> ...

Sort

Applies to: Products APIStores APIReviews APICategories API

You can specify the way in which you'd like to have the results sorted by one or more attribute value(s).

  • sort=attribute.asc - Sort the results in ascending order of the specified attribute
  • sort=attribute.dsc - Sort the results in descending order of the specified attribute
  • sort=attribute.desc - Sort the results in descending order of the specified attribute

Sort by a single attribute

The example below demonstrates how to sort the results from most to least expensive.

#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.name="All Flat-Panel TVs")?format=json&show=sku,name,salePrice&sort=salePrice.desc&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 307, "currentPage": 1, "totalPages": 31, "queryTime": "0.004", "totalTime": "0.031", "partial": false, "canonicalUrl": "/v1/products(categoryPath.name=All Flat-Panel TVs)?show=sku,name,salePrice&sort=salePrice.desc&format=json&apiKey=YourAPIKey", "products": [ { "sku": 8908129, "name": "Samsung - S9 - 85\" Class (84-1/2\" Diag.) - LED - 4K Ultra HD TV (2160p) - 120Hz - Smart - 3D - HDTV", "salePrice": 39999.98 }, { "sku": 7558048, "name": "Sony - BRAVIA 84\" Class (84\" Diag.) - LED - 4K Ultra HD TV (2160p) - 120Hz - Smart - 3D - HDTV", "salePrice": 24998.98 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.name="All Flat-Panel TVs")?format=xml&show=sku,name,salePrice&sort=salePrice.desc&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="31" from="1" to="10" total="307" queryTime="0.005" totalTime="0.030" canonicalUrl="/v1/products(categoryPath.name=All Flat-Panel TVs)?show=sku,name,salePrice&amp;sort=salePrice.desc&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>8908129</sku> <name>Samsung - S9 - 85&quot; Class (84-1/2&quot; Diag.) - LED - 4K Ultra HD TV (2160p) - 120Hz - Smart - 3D - HDTV</name> <salePrice>39999.98</salePrice> </product> <product> <sku>7558048</sku> <name>Sony - BRAVIA 84&quot; Class (84&quot; Diag.) - LED - 4K Ultra HD TV (2160p) - 120Hz - Smart - 3D - HDTV</name> <salePrice>24998.98</salePrice> </product> <product> <sku>8944014</sku> <name>LG - 84&quot; Class (83-9/10&quot; Diag.) - LED - 4K Ultra HD TV (2160p) - 240Hz - Smart - 3D - HDTV</name> <salePrice>16999.99</salePrice> </product> <product> <sku>9090233</sku> <name>Sharp - AQUOS - 90&quot; Class (90&quot; Diag.) - LED - 1080p - 120Hz - Smart - 3D - HDTV</name> <salePrice>7999.98</salePrice> </product> ...

Sort on non-displayed attribute

You can sort by an attribute you are not displaying. For example, if you wanted to list all flat-panel TVs with prices, but have the list sorted by the best-selling products over the last week, you can use the following query:

#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.name="All Flat-Panel TVs")?format=json&show=sku,name,salePrice&sort=salesRankMediumTerm.asc&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 307, "currentPage": 1, "totalPages": 31, "queryTime": "0.005", "totalTime": "0.035", "partial": false, "canonicalUrl": "/v1/products(categoryPath.name=All Flat-Panel TVs)?show=sku,name,salePrice&sort=salesRankMediumTerm&format=json&apiKey=YourAPIKey", "products": [ { "sku": 3356036, "name": "Insignia™ - 32\" Class (31-1/2\" Diag.) - LED - 720p - 60Hz - HDTV", "salePrice": 179.99 }, { "sku": 2563138, "name": "Insignia™ - 48\" Class (47-5/8\" Diag.) - LED - 1080p - 60Hz - HDTV", "salePrice": 399.99 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.name="All Flat-Panel TVs")?format=xml&show=sku,name,salePrice&sort=salesRankMediumTerm.asc&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="31" from="1" to="10" total="307" queryTime="0.004" totalTime="0.031" canonicalUrl="/v1/products(categoryPath.name=All Flat-Panel TVs)?show=sku,name,salePrice&amp;sort=salesRankMediumTerm&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>3356036</sku> <name>Insignia™ - 32&quot; Class (31-1/2&quot; Diag.) - LED - 720p - 60Hz - HDTV</name> <salePrice>179.99</salePrice> </product> <product> <sku>2563138</sku> <name>Insignia™ - 48&quot; Class (47-5/8&quot; Diag.) - LED - 1080p - 60Hz - HDTV</name> <salePrice>399.99</salePrice> </product> <product> <sku>5578649</sku> <name>Samsung - 40&quot; Class (40&quot; Diag.) - LED - 1080p - 60Hz - Smart - HDTV</name> <salePrice>499.99</salePrice> </product> <product> <sku>7790041</sku> <name>Insignia™ - 39&quot; Class (38-1/2&quot; Diag.) - LED - 1080p - 60Hz - HDTV</name> <salePrice>279.99</salePrice> </product> ...

Sort by multiple attributes

If you want to sort by multiple attributes, separate the sort terms with commas. The results will initially be sorted by the first attribute in the direction specified. Then, the results within each set will be sorted by the second attribute.

  • sort=attribute1.asc,attribute2.dsc - Sort by attribute 1 in ascending order, then by attribute 2 in descending order

For example, to find which games have the highest trade-in values and sort by platform, you can use the following query:

#request:
http://api.remix.bestbuy.com/v1/products(type=game)?format=json&show=sku,name,salePrice,tradeInValue&sort=tradeInValue.desc,platform.asc&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 1864, "currentPage": 1, "totalPages": 187, "queryTime": "0.044", "totalTime": "0.067", "partial": false, "canonicalUrl": "/v1/products(type=\"game\")?show=sku,name,salePrice,tradeInValue&sort=tradeInValue.desc,platform&format=json&apiKey=YourAPIKey", "products": [ { "sku": 8677151, "name": "Infamous: Second Son - PlayStation 4", "salePrice": 59.99, "tradeInValue": 36.00 }, { "sku": 2393007, "name": "Titanfall - Xbox 360", "salePrice": 49.99, "tradeInValue": 36.00 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(type=game)?format=xml&show=sku,name,salePrice,tradeInValue&sort=tradeInValue.desc,platform.asc&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="187" from="1" to="10" total="1864" queryTime="0.006" totalTime="0.030" canonicalUrl="/v1/products(type=&quot;game&quot;)?show=sku,name,salePrice,tradeInValue&amp;sort=tradeINValue.desc,platform&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>8677151</sku> <name>Infamous: Second Son - PlayStation 4</name> <salePrice>59.99</salePrice> <tradeInValue>36.00</tradeInValue> </product> <product> <sku>2393007</sku> <name>Titanfall - Xbox 360</name> <salePrice>49.99</salePrice> <tradeInValue>36.00</tradeInValue> </product> <product> <sku>2680176</sku> <name>Titanfall: Collector&apos;s Edition - Xbox 360</name> <salePrice>249.99</salePrice> <tradeInValue>36.00</tradeInValue> </product> <product> <sku>9441146</sku> ...

Child attribute sort limitation

The text after the period in the sort parameter is interpreted as the sort direction. Therefore, you cannot sort by a child attribute, as it inherently includes a period in its name.


Facets

Applies to: Products APIStores APIReviews APICategories API

You can retrieve summary information about the items that are returned by your query by using the facets query parameter. For example, if you want to show the 5 manufacturers for which we have the most flat-panel TVs, you can use the following query:

#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.name="All Flat-Panel TVs")?format=json&show=sku,name,salePrice&facet=manufacturer,5&apiKey=YourAPIKey

#response:
{ "products": [ ... ], "facets": { "manufacturer": { "samsung": 96, "lg": 46, "sharp": 24, "vizio": 23, "insignia™": 18 } } }
#request:
http://api.remix.bestbuy.com/v1/products(categoryPath.name="All Flat-Panel TVs")?format=xml&show=sku,name,salePrice&facet=manufacturer,5&apiKey=YourAPIKey

#response:
... <facets> <field>manufacturer</field> <facet> <name>samsung</name> <count>96</count> <name>lg</name> <count>46</count> <name>sharp</name> <count>24</count> <name>vizio</name> <count>23</count> <name>insignia™</name> <count>18</count> </facet> </facets> ...

Pagination

Applies to: Products APIStores APIReviews APICategories APIRecommendations APIBuying Options API

Even if you've trimmed down the number of products returned by making use of search, many of our APIs have the potential to return lots of results. To make these large responses more manageable, we break them into pages. By default, we include 10 results per page, but you can ask for up to 100 per page by making use of the pageSize parameter. Use the page parameter to choose which page of results you'd like returned.

Here is an explanation of the meta data when more than one page is available

NameDescriptionAdditional Details
canonicalURLthe non-server part of the query URL
currentPagethe page being returnedreferred to as "page.current" for the Recommendations and Buying Options APIs
fromthe index of the first item returned on the current pagenot available on the Recommendations and Buying Options APIs
sizethe number of results returned per pageonly available on the Recommendations and Buying Options APIs
tothe index of the last item returned on the current pagenot available on the Recommendations and Buying Options APIs
totalthe total number of items returned by the queryreferred to as "resultSet.count" for the Recommendations and Buying Options APIs
totalPagesthe number of pages required to list all itemsreferred to as "page.total" for the Recommendations and Buying Options APIs

Example response header for Products, Stores, Reviews and Category APIs

Here is an example where we ask for the 1000th page of results and for each page to contain just 3 products.

#request:
http://api.remix.bestbuy.com/v1/products(type=Movie)?format=json&show=sku,name,salePrice&pageSize=3&page=1000&apiKey=YourAPIKey

#response:
{ "from": 2998, "to": 3000, "total": 101727, "currentPage": 1000, "totalPages": 33909, "queryTime": "0.039", "totalTime": "0.048", "partial": false, "canonicalUrl": "/v1/products(type=\"Movie\")?show=sku,name,salePrice&format=json&pageSize=3&page=1000&apiKey=YourAPIKey", "products": [ { "sku": 17215997, "name": "AC/DC: Rock Power (DVD)", "salePrice": 11.99 }, { "sku": 23003222, "name": "AC/DC: Rocks Detroit (DVD)", "salePrice": 10.99 }, ...
#request:
http://api.remix.bestbuy.com/v1/products(type=Movie)?format=xml&show=sku,name,salePrice&pageSize=3&page=1000&apiKey=YourAPIKey

#response:
<products currentPage="1000" totalPages="33909" from="2998" to="3000" total="101727" queryTime="0.039" totalTime="0.047" canonicalUrl="/v1/products(type=&quot;Movie&quot;)?show=sku,name,salePrice&amp;page=1000&amp;apiKey=YourAPIKey" partial="false"> <product> <sku>17215997</sku> <name>AC/DC: Rock Power (DVD)</name> <salePrice>11.99</salePrice> </product> <product> <sku>23003222</sku> <name>AC/DC: Rocks Detroit (DVD)</name> <salePrice>10.99</salePrice> </product> <product> <sku>7050816</sku> <name>AC/DC: The Family Jewels (2 Disc) (Remastered) (DVD)</name> <salePrice>17.99</salePrice> </product> </products>

Example response header for the Recommendations and Buying Options APIs

#request:
http://api.bestbuy.com/beta/products/openBox?apiKey=YourAPIKey&page=2&pageSize=15

#response:
{ "metadata": { "resultSet": { "count": 2040 }, "context": { "canonicalUrl": "http://api.bestbuy.com/beta/products/openBox?apiKey=YourAPIKey&page=2&pageSize=15" }, "page": { "current": 1, "size": 10, "total": 204 } }, "results": [ { "customerReviews": { "averageScore": "4.4", "count": 260 }, "descriptions": { "short": "Google Chrome 64-bitTechnical details: Intel&#174; Celeron&#174; processor; 11.6\" display; 2GB memory; 16GB eMMC flash memorySpecial features: Bluetooth; HDMI outputNote: DVD/CD drive not included" }, ...

Retrieving Collections

Applies to: Products APIStores APIReviews APICategories API

If you want to retrieve more than one item at a time (e.g. all Products in our catalog). you can do so by using one of the following queries. _By default the max page size is 100 (meaning 100 unique results.) See Pagination for more information on returning results greater then 100.

DescriptionQueryResult
retrieve all productshttp://api.remix.bestbuy.com/v1/products?apiKey=YourAPIKeyreturns a collection of products
retrieve all storeshttp://api.remix.bestbuy.com/v1/stores?apiKey=YourAPIKeyreturns a collection of stores
retrieve all reviewshttp://api.remix.bestbuy.com/v1/reviews?apiKey=YourAPIKeyreturns a collection of reviews
retrieve all categorieshttp://api.remix.bestbuy.com/v1/categories?apiKey=YourAPIKeyreturns a collection of categories

Other sections in this document explain how to modify these queries to allow you to retrieve just the information that you need.

  • Pagination: describes how results consisting of multiple pages are returned
  • Search: describes how to perform search operations
  • Sort: describes how to specify sort criteria for collections
  • Facets: describes how to ask for summarized information about collections
Collection Header

When a query results in a collection, the response includes an information header containing the following attributes:

NameDescription
itemthe type of items returned and counted
current pagethe page being returned
totalPagesthe number of pages required to list all items
fromthe index of the first item returned on the current page
tothe index of the last item returned on the current page
totalthe total number of items returned by the query
queryTimethe time required to search the database
totalTimethe time required to parse, search, format and return results
canonicalURLthe non-server part of the query URL
partialflag indicating whether or not the query returned only partial results (in the event of a timeout)
Example Collection Header
#request:
http://api.remix.bestbuy.com/v1/products?format=json&apiKey=YourAPIKey

#response:
{ "from": 1, "to": 10, "total": 724145, "currentPage": 1, "totalPages": 72415, "queryTime": "0.183", "totalTime": "0.195", "partial": false, "canonicalUrl": "/v1/products?format=json&apiKey=YourAPIKey", "products": [ ...
#request:
http://api.remix.bestbuy.com/v1/products?format=xml&apiKey=YourAPIKey

#response:
<products currentPage="1" totalPages="72415" from="1" to="10" total="724145" queryTime="0.217" totalTime="0.236" canonicalUrl="/v1/products?apiKey=YourAPIKey" partial="false"> ...

Errors and Mock Data

Errors

Applies to: Products APIStores APIReviews APICategories APIRecommendations API

Best Buy uses standard HTTP response codes to indicate success or failure of an API request. In general, codes in the 2xx range indicate success, codes in the 4xx range indicate an error that resulted from the provided information (e.g., a required parameter was missing), and codes in the 5xx range indicate an error with Best Buy's servers.

Status CodeExplanation
200It is all good.
400The request is missing key information or is malformed.
403The allocated call limit is exceeded.
404The requested item cannot be found.
405Particular method not allowed (error will be returned for methods like a POST).
500, 501, 503There is a server error on the Best Buy side.

Mock Data

Applies to: Recommendations API

Best Buy has provided the ability to submit mock data for the Recommendations API Also Viewed and Similar Products endpoints. These endpoints accepts mock data and returns appropriate responses.

Please refer below for the list of mock codes supported

Mock CodeResponse
mock500{"errorMessage":"An unexpected error kept us from completing your request","status":500}
mock418{"errorMessage":"I am a teapot, short and stout","status":418}
mockEmpty{"results": []}

Example

If you would like to mock the response code for http Status code 500, simply replace the SKU identifier from the query path with "mock500."

#request:
http://api.bestbuy.com/beta/products/mock500/alsoViewed?apiKey=YourAPIKey

#response:
{"errorMessage":"An unexpected error kept us from completing your request","status":500}

Rate Limit

Applies to: Products APIStores APIReviews APICategories APIRecommendations APIBuying Options API

Best Buy limits the number of calls that can be made using each assigned API Key during a given time period.

If a request is made after the limit is reached, it results in an error response with a 403 status code. Refer to Errors and Mock Data for descriptions of the various error codes returned. The user is notified via email indicating the number of calls exceeded. The API Key quota usage per day can be viewed on your Mashery API Keys page.

Calls Per DayCalls Per Second
Products, Reviews, Stores, Categories, Recommendations, Buying Options50,0005

HINT: We also support the in operator that lets you search for a list of values based on an attribute. This functionality will help you avoid Calls Per Second errors. You can use this functionality with almost any attribute; it is mostly commonly used with SKU. The below example searches for three products based on a list of three SKUs in single request (query returns products that have a SKU value of 43900, 2088495, or 7150065):

http://api.remix.bestbuy.com/v1/products(sku in(43900,2088495,7150065))?apiKey=YourAPIKey


Archives

Applies to: Products APIStores APIReviews APICategories API

Although we recommend that you make live calls to our APIs whenever possible, we do provide a set of daily archives. Archives are a snapshot in time of the data available in our Products, Reviews, Categories and Stores APIs.

We support two different types of archives -

  • General Archives - a snapshot of all the data available from the API.
  • Product Subsets - smaller archives for our Products API, including only products of a specific type.

General Archives

Applies to: Products APIStores APIReviews APICategories API

These archives are generated every day at 9AM CST. We have archive files available for Products, Stores, Reviews, Categories and Store Availability.

Supported formats

  • json/xml formats are supported for Products, Reviews, Categories and Stores.
  • tsv is the supported format for Store Availability.

The available archives are -

TypeDescription
productsincludes all active and inactive products; excludes marketplace,digital and preowned
storesavailable stores information
reviewsall reviews
categoriesproduct categories
storeAvailabilityavailable stores for a product

Query Syntax

http://api.remix.bestbuy.com/v1/{archive}.{format}.zip?apiKey=YourAPIKey
  • [format] is one of {xml or json} for Products, Reviews, Stores, Categories. {tsv} for Store Availability.
  • [archive] is the archive "Type"

Example

Product Archive

http://api.remix.bestbuy.com/v1/products.xml.zip?apiKey=YourAPIKey

Store Availability

http://api.remix.bestbuy.com/v1/storeAvailability.tsv.zip?apiKey=YourAPIKey

Product Subsets

Applies to: Products API

If you are interested in only one type of product, you can download a subset archive. Subsets are also available each day by 9:00 am(CST).

The available subsets are:

TypeDescription
productsActiveincludes marketplace, digital, preowned; excludes BlackTie plans
productsInactiveincludes all inactive products; includes marketplace, digital, preowned, BlackTie plans
productsMusicactive music
productsMovieactive movies
productsHardgoodactive hardgoods; includes preowned; excludes marketplace
productsBundleactive bundles
productsGameactive games; includes marketplace and preowned
productsSoftwareactive software; includes marketplace
productsBlackTieactive BlackTie
productsMarketplaceactive marketplace products
productsDigitalactive digital products

Query Syntax

http://api.remix.bestbuy.com/v1/subsets/[subset].[format].zip?apiKey=YourAPIKey
  • [format] is one of {xml or json}
  • [subset] is the subset "Type"

Example

digital products

http://api.remix.bestbuy.com/v1/subsets/productsDigital.xml.zip?apiKey=YourAPIKey
Best Buy logo

We do not support your browser. Neither does Microsoft.

We're glad that you're excited about Best Buy's APIs. However, you're using a browser that's too old to view our new developer site. We encourage you to switch to a newer browser, preferably a recent version of Chrome, Firefox, or Internet Explorer.