Overview

Welcome to the Best Buy Developer API site! Whether you’re an API pro, a beginning developer or a Best Buy partner, our extensive API catalog is waiting for your imagination. Our API suite allows you to query Products, Stores and much more. Come on in to explore our data, browse descriptions of the available attributes and see examples of working requests and responses.

If this is your first time using our APIs, please check out our Getting Started guide. If you already have your API key, our Search and Response Formats can help you refine your results.

Response Format

Responses can be returned in either JSON or XML.

Applies to: Products API • Stores API • Categories API

To request a single item, such as a specific product, indicate the desired response format with the extension added after the item’s identifier. For example, /products/8880044.json .

To request 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 .

Applies to: Products API

By agreeing to Best Buy’s terms of service, you also agree not to cache any content except on a temporary basis. As such, our response links will expire after seven days. Here are several examples of appropriately formatted response URLs:

url: https://api.bestbuy.com/click/5592e2b895800000/12345678/pdp

mobileUrl: https://api.bestbuy.com/click/5592e2b895800000/12345678/pdp

addToCartUrl: https://api.bestbuy.com/click/5592e2b895800000/12345678/cart

Returned Attributes

curl "https://api.bestbuy.com/v1/products/8880044.json?show=sku,name,salePrice&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 8880044 ,{ show : 'sku,name,salePrice' }). then ( function ( data ){ console . log ( data ); });

Only returns the sku , name and salePrice attributes for products.

{ "sku" : 8880044 , "name" : "Batman Begins (Blu-ray Disc)" , "salePrice" : 7.99 }

Applies to: Products API • Stores API • Categories API

The show attribute allows you to control which attributes are returned. You can return specific attributes by following the syntax below. To return all attributes, use show=all .

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.

Show All

Applies to: Products API • Stores 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 get all 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.

Sort

curl 'https://api.bestbuy.com/v1/products(categoryPath.name="All%20Flat-Screen%20TVs")?format=json&show=sku,name,salePrice&sort=salePrice&apiKey=YourAPIKey'

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'categoryPath.name="All Flat-Screen TVs"' ,{ show : 'sku,name,salePrice' , sort : 'salePrice.asc' }). then ( function ( data ){ console . log ( data ); });

Lists all flat-panel TVs with prices and sorts by the best-selling products over the last week.

{ "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-Screen TVs)?show=sku,name,salePrice&sort=salePrice&format=json&apiKey=YourAPIKey" , "products" : [ { "sku" : 6164904 , "name" : "Insignia™ - 19\" Class - LED - 720p - HDTV" , "salePrice" : 69.99 }, { "sku" : 6260936 , "name" : "Insignia™ - 22\" Class - LED - 1080p - HDTV" , "salePrice" : 69.99 },

Applies to: Products API • Stores API • Categories 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 the results in ascending order of the specified attribute sort=attribute.dsc - Sort the results in descending order of the specified attribute

- 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 multiple attributes

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

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

curl 'https://api.bestbuy.com/v1/products(categoryPath.name="All%20Flat-Panel%20TVs")?format=json&show=sku,name,salePrice&facet=manufacturer,5&apiKey=YourAPIKey'

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'categoryPath.name="All Flat-Panel TVs"' ,{ show : 'sku,name,salePrice' , facet : 'manufacturer,5' }). then ( function ( data ){ console . log ( data ); });

Show the 5 manufacturers for which we have the most flat-panel TVs.

{ "products" : [ ], "facets" : { "manufacturer" : { "samsung" : 96 , "lg" : 46 , "sharp" : 24 , "vizio" : 23 , "insignia™" : 18 } } }

Applies to: Products API • Stores API • Categories API

You can retrieve summary information about the items that are returned by your query by using the facets query parameter.

Pagination

curl 'https://api.bestbuy.com/v1/products(type=Movie)?format=json&show=sku,name,salePrice&pageSize=3&page=10&apiKey=YourAPIKey'

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'type=Movie' ,{ show : 'sku,name,salePrice' , page : 10 , pageSize : 3 }). then ( function ( data ){ console . log ( data ); });

In this example we ask for the 10th page of results and for each page to contain just 3 products.

{ "from" : 28 , "to" : 30 , "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=10&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 }

Applies to: Products API • Stores API • Categories API • Recommendations API • Buying 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.

Note: If your result set is more than 10 pages, you should use the cursorMark parameter to walk through your results. See Cursor Marks for more information.

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

Name Description Additional Details canonicalURL the non-server part of the query currentPage the page being returned referred to as “page.current” for the Recommendations and Buying Options APIs from the index of the first item returned on the current page not available on the Recommendations and Buying Options APIs size the number of results returned per page only available on the Recommendations and Buying Options APIs to the index of the last item returned on the current page not available on the Recommendations and Buying Options APIs total the total number of items returned by the query referred to as “resultSet.count” for the Recommendations and Buying Options APIs totalPages the number of pages required to list all items referred to as “page.total” for the Recommendations and Buying Options APIs

Cursor Marks

curl -G "https://api.bestbuy.com/v1/products(type=HardGood)?format=json&show=sku,name,salePrice&pageSize=100&apiKey=YourAPIKey" --data-urlencode "cursorMark=*"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'type=HardGood' ,{ show : 'sku,name,salePrice' , pageSize : 100 , cursorMark =* }). then ( function ( data ){ console . log ( data ); });

In this example we ask for the first page of results and for each page to contain 100 products.

{ "nextCursorMark" : "AoNeDQhAhoq2MnByb2R1Y3RfMTE0NjYzNV91cw==" , "total" : 49911 , "totalPages" : 500 , "queryTime" : "0.037" , "totalTime" : "0.362" , "partial" : false , "canonicalUrl" : "/v1/products(type=\"HardGood\")?show=sku,name,salePrice&pageSize=100&cursorMark=*&format=json&apiKey=YourAPIKey" , "products" : [ { "sku" : 5477500 , "name" : "Amazon - Fire TV Stick with Alexa Voice Remote - Black" , "salePrice" : 39.99 }, { "sku" : 4397400 , "name" : "Google - Chromecast - Black" , "salePrice" : 35 },

Applies to: Products API • Stores API • Categories API

With large result sets - e.g., query sets with more than 10 pages of results - we recommend you use the cursorMark parameter to walk through your results. You can use cursorMark to walk through the full product or store catalog, deltas since you last queried for active products, or any other query result. The cursorMark works a lot like a bookmark, keeping track of what subset of items are currently shown in your result set and how to get to the next subset of items.

To use the cursorMark with your result set, add cursorMark=* to your query parameters. A nextCursorMark parameter will be included in the metadata that you will use to walk through the full result set. After the initial result, replace the asterisk * with the nextCursorMark value noted in the current metadata to move to the next subset of results. For each subset, a fresh hash value will be presented. To avoid errors, please urlencode the hash returned when sending it as the cursorMark query parameter in subsequent requests. When you reach the end of the cursor marks, you will receive an empty result.

Tip: To query for updates or deltas since you last walked through the result set you can use the itemUpdateDate attribute. To ensure that your query results include changes to a product’s active/inactive status, add active=* to your query parameters. For example: .../v1/products(itemUpdateDate>2017-02-06T16:00:00&active=*)?format=json&pageSize=100&cursorMark=*&apiKey=YOUR_API_KEY

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

Name Description Additional Details canonicalURL the non-server part of the query cursorMark a hash indicating the current location within the result set add cursorMark=* to your query to get the first subset of results nextCursorMark a hash indicating the start of the next subset of items in your result set we recommend only moving forward through your result sets using cursorMark total the total number of items returned by the query totalPages the number of subsets of items in the full query result can be used as an approximation of the number of cursor marks you will need to iterate through to walk the entire query result

Retrieving Collections

Applies to: Products API • Stores API • Categories API

To retrieve more than one item at a time (e.g. all Products in our catalog), use 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 than 100.

Description Query Result retrieve all products https://api.bestbuy.com/v1/products?apiKey=YourAPIKey returns a collection of products retrieve all stores https://api.bestbuy.com/v1/stores?apiKey=YourAPIKey returns a collection of stores retrieve all categories https://api.bestbuy.com/v1/categories?apiKey=YourAPIKey returns a collection of categories

Other sections in this documentation explain how to modify these queries to retrieve only 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:

Name Description item the type of items returned and counted current page the page being returned totalPages the number of pages required to list all items from the index of the first item returned on the current page to the index of the last item returned on the current page total the total number of items returned by the query queryTime the time required to search the database totalTime the time required to parse, search, format and return results canonicalURL the non-server part of the query URL partial flag indicating whether or not the query returned only partial results (in the event of a timeout)

Errors

Applies to: Products API • Stores API • Categories API • Recommendations 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 Code Explanation 200 It is all good. 400 The request is missing key information or is malformed. 403 The API key is not valid, or the allocated call limit has been exceeded. 404 The requested item cannot be found. 405 Particular method not allowed (error will be returned for methods like a POST). 500, 501, 503 There is a server error on the Best Buy side.

Postman

Here’s a collection of sample queries in Postman that’ll help you get up to speed with our APIs faster.

Important Notes

You must defined apiKey within in an environment.

within in an environment. Some portions of the query parameters for Best Buy’s APIs are included in the path: (e.g., …/v1/ products(categoryPath.id=pcmcat194000050022&manufacturer=Apple) ?apiKey={{apiKey}}&format=json ). You should update the in-path parameters within Postman’s grey bar that shows the URL. v2 of the Best Buy API will move these parameters out of the path and into the query string.

). You should update the in-path parameters within Postman’s grey bar that shows the URL.

Getting Started

Get a key

Before you can start using our APIs, you need an API key. It’s easy. Just visit GET API Key and sign up with your email address. We’ll send you an email with instructions on how to activate your new key. Once you’ve activated your key, you’re ready to roll.

Create your first query

After you activate your key, you can start accessing Best Buy’s data.

Try our Query Builder

This easy-to-use tool will have you running queries in no time. The Query Builder tool will guide you through the creation of custom queries using most of the Best Buy APIs. You can use these queries as a base for your own custom queries, or use them to access Best Buy API data. You can access the Query Builder from our top menu bar or by going to Query Builder.

curl "https://api.bestbuy.com/v1/products/8880044.json?apiKey=YourAPIKey"

Returns the product document for SKU 8880044

{ "sku" : 8880044 , "productId" : 1484301 , "name" : "Batman Begins (Blu-ray Disc)" ... }

Try accessing one of our APIs directly

Use a basic GET request to get API data. For example, to find product information for a specific product, you can query our Products API using the SKU for that product. The SKU for Batman Begins (Blu-ray Disc) is 8880044, so you can retrieve it as shown below. The response will be returned as either JSON or XML depending on the extension specified in the URI.

HINT: Don’t forget to replace YourAPIKey with the API key that you received from us.

Search Techniques

Applies to: Products API  Stores API  Categories 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 deisred 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 a specified value != - attribute does not equal a specified value

- attribute a specified value > - attribute greater than a specified value

- attribute a specified value < - attribute less than a specified value

- attribute a specified value >= - attribute greater than or equal to a specified value

- attribute a specified value <= - attribute less than or equal to a specified value

- attribute a specified value in - search based on a list of attribute values

Search by a single attribute

curl "https://api.bestbuy.com/v1/stores(region=ut)?format=json&show=storeId,city,region&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . stores ( 'region=ut' ,{ show : 'storeId,city,region' }). then ( function ( data ){ console . log ( data ); });

{ "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" }

Our Products, Stores and Categories 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 to the right.

Search by all attributes (AND)

curl 'https://api.bestbuy.com/v1/products(manufacturer=canon&salePrice<1000)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey'

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'manufacturer=canon&salePrice<1000' ,{ show : 'sku,name,salePrice' }). then ( function ( data ){ console . log ( data ); });

{ "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 }

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 & .

Search by any attributes (OR)

curl "https://api.bestbuy.com/v1/products(wifiReady=true|wifiBuiltIn=true)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'wifiReady=true|wifiBuiltIn=true' ,{ show : 'sku,name,salePrice' }). then ( function ( data ){ console . log ( data ); });

{ "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 }

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

Complex Searches

curl "https://api.bestbuy.com/v1/products(platform=psp&(salePrice<=15|(salePrice<=20&inStorePickup=true)))?format=json&show=sku,name,salePrice,inStorePickup,platform&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'platform=psp&(salePrice<=15|(salePrice<=20&inStorePickup=true))' ,{ show : 'sku,name,salePrice,inStorePickup,platform' }). then ( function ( data ){ console . log ( data ); });

[ { "sku" : 8005115 , "name" : "Lumines II - PSP" , "salePrice" : 9.99 , "inStorePickup" : true , "platform" : "PSP" }, { "sku" : 8376027 , "name" : "Practical Intelligence Quotient 2 - PSP" , "salePrice" : 14.99 , "inStorePickup" : true , "platform" : "PSP" }, { "sku" : 9335436 , "name" : "Chessmaster: The Art of Learning - PSP" , "salePrice" : 9.99 , "inStorePickup" : true , "platform" : "PSP" } ]

Complex searches can be performed by combining AND & and OR | operations with parantheses. For 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) . You also want to make sure the game is available to buy online and pickup at a store (inStorePickup=true) .

The search terms for this example can be combined as:

platform=psp & (salePrice<=15 | (salePrice<=20 & inStorePickup=true))

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

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'releaseDate>=2014-02-01&releaseDate<=2014-02-28' ,{ show : 'sku,name,salePrice' }). then ( function ( data ){ console . log ( data ); });

{ "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 }

If you want to find all products that were released February 2014, use this query:

curl "https://api.bestbuy.com/v1/products(releaseDate>today)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'releaseDate>today' ,{ show : 'sku,name,salePrice' }). then ( function ( data ){ console . log ( data ); });

{ "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 }

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

Search for multiple attribute values

curl "https://api.bestbuy.com/v1/products(categoryPath.id=abcat0901005&color%20in(white,bisque,stainless-steel))?format=json&show=sku,name,salePrice&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'categoryPath.id=abcat0901005&color in(white,bisque,stainless-steel)' ,{ show : 'sku,name,salePrice' }). then ( function ( data ){ console . log ( data ); });

{ "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 }

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, use this query.

NOTE: To search for products based on a list of attribute values, we recommend using the in operator. Most attributes can be used with the in operator. The most common attribute used is SKU . Using the in operator helps to avoid Query Per Second errors (QPS).

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

Wildcards - Value is present

curl "https://api.bestbuy.com/v1/products(categoryPath.id=abcat0502000&driveCapacityGb=*)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'categoryPath.id=abcat0502000&driveCapacityGb=*' ,{ show : 'sku,name,salePrice' }). then ( function ( data ){ console . log ( data ); });

{ "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 }

You can use the asterisk * 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

- requests items for which the attribute has values attribute!=* - requests items for which the attribute has no value

Wildcards - Value is NOT present

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

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'categoryPath.id=abcat0502000&driveCapacityGb!=*' ,{ show : 'sku,name,salePrice' }). then ( function ( data ){ console . log ( data ); });

{ "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 }

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.

Wildcards - String

curl 'https://api.bestbuy.com/v1/products(longDescription=iPhone*|sku=7619002)?show=sku,name&pageSize=15&page=5&apiKey=YourAPIKey&format=json'

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'longDescription=iPhone*|sku=7619002' ,{ show : 'sku,name' , pageSize : 15 , page : 5 }). then ( function ( data ){ console . log ( data ); });

{ "from" : 61 , "to" : 75 , "total" : 2753 , "currentPage" : 5 , "totalPages" : 184 , "queryTime" : "0.010" , "totalTime" : "0.045" , "partial" : false , "canonicalUrl" : "/v1/products(longDescription=\"iPhone*\"|sku=7619002)?show=sku,name&page=5&format=json&apiKey=YourAPIKey" , "products" : [ { "sku" : 1752654 , "name" : "Apple - iPhone 4s 8GB Cell Phone - White (AT&T)" }, { "sku" : 1761045 , "name" : "Apple - iPhone 4s 8GB Cell Phone - White (Verizon Wireless)" }, { "sku" : 1729354 , "name" : "Apple - iPhone 5c 16GB Cell Phone - Green (AT&T)" }, { "sku" : 1752291 , "name" : "Apple - iPhone 5c 16GB Cell Phone - Blue (AT&T)" } ] }

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.

There are several description attributes by which you can search, including longDescription , shortDescription , description or name . There is a single SKU attribute to search based on SKU .

In this example we are searching the longDescription for iPhone*. We have appended iPhone with a wildcard * so we can search for iPhones with any suffix. We are also looking for any products that have a SKU with a value of 7619002 - note the or | . Finally, in our example we have updated the number of results that can be returned per page to 15. Our search will return page 5 of the total 184 pages. Additional information on how to specify the number of results that should be returned per page and which page to return can be found in our Pagination section.

Wildcard - 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.

); this type of search is extremely resource intensive and doing so will result in a 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) .

Filtered product attribute

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

If your search string is sku=* , you will only return 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.

Keyword Search Function

curl "https://api.bestbuy.com/v1/products(search=oven&search=stainless&search=steel)?format=json&show=sku,name,salePrice&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'search=oven&search=stainless&search=steel' ,{ show : 'sku,name,salePrice' }). then ( function ( data ){ console . log ( data ); });

This example looks for ‘stainless steel ovens’.

{ "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 }

Applies to: Products API

Our Keyword Search function (search=searchterm) allows you to search text accross several common attributes. To search for a term that includes a space, include an & ampersand between the words or it will be treated as an | or. The Keyword Search includes the following attributes:

name

manufacturer

shortDescription

longDescription

features.feature

details.value

Search on Reviews

curl "https://api.bestbuy.com/v1/products(customerReviewAverage>=4&customerReviewCount>100)?show=customerReviewAverage,customerReviewCount,name,sku&format=json&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . products ( 'customerReviewAverage>=4&customerReviewCount>100' ,{ show : 'customerReviewAverage,customerReviewCount,name,sku' }). then ( function ( data ){ console . log ( data ); });

{ "products" : [ { "customerReviewAverage" : "4.1" , "customerReviewCount" : 411 , "name" : "Insignia™ - Soundbar Home Theater Speaker System" , "sku" : 4841342 }, { "customerReviewAverage" : "4.3" , "customerReviewCount" : 411 , "name" : "Sunpak - PlatinumPlus 6000PG 61\" Tripod" , "sku" : 1205204 } ] }

To search for products based on customer review criteria, you can use the customerReviewAverage and/or the customerReviewCount attributes. You can also limit the product information returned using our show functionality. HINT: You can specify additional attributes in your search or to be included in the response document for most attributes in the Products API.

In this example, we are searching for all products that have a customer review average greater than four and a customer review count greater than 100. In addition, we are limiting the product information returned to customer review average, customer review count, name and sku, and forcing a format of json (default is xml when using the Products API).

Products API

The Best Buy Product API provides a simple, REST-based interface for our entire product catalog, past and present. This includes pricing, availability, specifications, descriptions, and images for more than one million current and historical products. Most product information is updated near real-time, including product pricing.

PLEASE NOTE: Music and movie data may be used only where an ability to purchase the related music or movies from BESTBUY.COM is provided to end users. Developers using music and movie data to redirect to BESTBUY.COM must become members of the Best Buy Affiliate Program to allow the sale of music and movies through BESTBUY.COM under the terms of the Affiliate Program.

Detail

The Best Buy Detail attributes contain a wealth of knowledge about Best Buy products. The intention of these attributes is to provide product descriptions, dimensions, accessories and reviews.

Attribute List

Attribute Description Type accessories.sku Collection of SKUs that could be an accessory to originating SKU long color Product color string condition Identifies if the product is new, refurbished or pre-owned string customerReviewAverage Average “score” or ratings as submitted by reviewers float customerReviewCount Number of customer reviews integer customerTopRated Identifies if the product is top rated based on ratings from reviewers. If the Avg rating >= 4.5 and Qty of ratings >= 15, customerTopRated is set to be “true”, else is set to “false” boolean depth Product depth (inches) string description Product description string details.name Collection of details about product (Example: whether a camera has a zoom) string details.value Collection of values that support the product (Example: A camera’s number of Megapixels or amount of zoom) string digital Identifies if product is available in a digital format boolean features.feature Collection of product features string format Identifies media product format string height Product height (inches) string includedItemList.includedItem Collection of items included with product (Example: Canon EOS 60D Digital SLR Camera, EF-S 18-135mm IS lens, Battery pack, Battery charger) string longDescription Detailed product description string longDescriptionHtml Detailed product description with HTML formatting string manufacturer Product manufacturer string modelNumber Manufacturer product model number string name Product name string preowned Identifies if product has been previously owned (used) boolean productVariations.sku Collection of related SKUs that are variations (e.g. color, size) of the originating SKU long quantityLimit Maximum quantity of product that can be ordered integer releaseDate Date the product was released date shortDescription Brief product description string shortDescriptionHtml Brief product description (HTML formatting) string sku Best Buy unique 7-digit product identifier long upc Universal Product Code (UPC) string warrantyLabor Manufacture labor warranty description string warrantyParts Manufacture parts warranty description string weight Product weight string width Product width (inches) string

California Proposition 65

California Proposition 65 (CA Prop 65) is a California regulation requiring businesses with 10 or more employees to provide a “clear and reasonable warning” before knowingly and intentionally exposing individuals in California to a chemical listed by the state as known to cause cancer or reproductive toxicity. The CA Prop 65 regulation provides safe harbor warnings that meet the “clear and reasonable warning” requirement. As of August 30, 2018, these safe harbor warnings require either a short-form warning or a chemical-specific warning for any product containing a listed chemical. Websites and mobile applications that sell products must provide the same warning that is displayed on the product and/or product packaging.

In order to comply with CA Prop 65, the warning is required for all products offered for purchase. The warning may be implemented by displaying the CA Prop 65 warning at a point prior to purchase of an affected product to (a) all customers, or (b) only to customers who enter a California ship-to address.

Best Buy’s Products API provides the following fields for this purpose:

Attribute List

Attribute Description Type proposition65WarningMessage A custom warning message which can be up to 360 characters. It can be null/empty depending on the product. string proposition65WarningType Values of 01 to 05 indicating the type of warning required for this product. This field will ALWAYS contain a value.

01 - None (There is no warning message required for this product)

02 - Cancer

03 - Reproductive Harm

04 - Cancer and Reproductive Harm

05 - Unknown (We currently do not have information about warnings on this product) string

For more information on this regulation including the list of chemicals, please go to https://oehha.ca.gov/proposition-65.

Pricing

Best Buy’s Pricing attributes make it easy to identify the product price, if a product is on sale, how much you can save and even when we made our last pricing changes.

Attribute Description contracts.type Type of contract for Mobile phone contracts.prices Regular and current monthly contract pricing for Mobile phone contracts.priceNote Description of contract pricing for Mobile phone dollarSavings Identifies amount saved lowPriceGuarantee Identifies if a product qualifies for the Best Buy low price guarantee onSale Identifies if sale price is less than regular price percentSavings Identifies the percent saved between the regularPrice and salePrice priceRestriction Identifies product sale price display restrictions: MAP restriction identifies Minimum Advertised Price; actual selling price may not be shown until prodcut is added to cart ICR restriction identifies In-Checkout Rebate Price; actual selling price may not be shown until checkout priceUpdateDate Date and time product price was last updated priceWithPlan.newTwoYearPlan Mobile phone price when purchased with new 2-year plan priceWithPlan.upgradeTwoYearPlan Mobile phone price when purchased with 2-year upgrade plan priceWithPlan.newTwoYearPlanSalePrice Mobile phone sale price when purchased with 2-year plan priceWithPlan.upgradeTwoYearPlanSalePrice Mobile phone sale price when purchased with 2-year upgrade plan priceWithPlan.newTwoYearPlanRegularPrice Mobile phone price when purchased with new 2-year plan priceWithPlan.upgradeTwoYearPlanRegularPrice Mobile phone price when purchased with 2-year upgrade plan regularPrice Product’s regular selling price salePrice Current item selling price

Availability

The Availability attributes provide details into which products can be purchased online and which products can be picked up in stores.

Note: For store-specific availability, please refer to our Stores API documentation.

Attribute Description friendsAndFamilyPickup Identifies if a product is eligible for friends and family pickup homeDelivery Identifies if a product must be fulfilled using home delivery instead of shipping inStoreAvailability Identifies if a product is available for purchase in a Best Buy store inStoreAvailabilityUpdateDate Provides date and time inStoreAvailability last updated inStorePickup Identifies if a product can be purchased online and picked up in a store onlineAvailability Identifies if a product can be purchased online onlineAvailabilityUpdateDate Provides date and time onlineAvailability was last updated orderable Product ordering status specialOrder Identifies whether a product will require special handling for delivery

Shipping and Delivery

The Shipping and Delivery attributes provide details about the cost of shipping or delivery of a product. A product can be shippable or deliverable, but not both.

Sample shippingLevelsOfService response

{ "shippingLevelsOfService" :[ { "serviceLevelId" : 1 , "serviceLevelName" : "Standard" , "unitShippingPrice" : 2.99 }, { "serviceLevelId" : 3 , "serviceLevelName" : "Expedited" , "unitShippingPrice" : 10.99 }, { "serviceLevelId" : 5 , "serviceLevelName" : "Express" , "unitShippingPrice" : 14.99 } ] }

Attribute Description freeShipping Identifies if a product qualifies for free shipping freeShippingEligible Identifies if a product is currently eligible to receive free shipping from an existing offer shippingCost Provides product’s lowest shipping costs shippingWeight Identifies product’s shipping weight (pounds) shippingLevelsOfService An array of shipping options shippingLevelsOfService.serviceLevelId ID of the shipping level of service shippingLevelsOfService.serviceLevelName Name of the shipping level of service shippingLevelsOfService.unitShippingPrice Price of the shipping level of service

Images

The Images attributes provide multiple images for a product. These include large, small, and side images and even interactive 360 degree images.

Attribute Description accessoriesImage URL of accessories image alternateViewsImage URL of alternate image angleImage URL of product’s angle image backViewImage URL of rear image energyGuideImage URL of product’s EnergyGuide image image URL of BESTBUY.COM product detail page image largeFrontImage URL of large front image largeImage URL of image leftViewImage URL of left image mediumImage URL of medium image remoteControlImage URL of remote control image rightViewImage URL of right image spin360Url URL of 360-degree image thumbnailImage URL of image used on BESTBUY.COM listing pages topViewImage URL of top image

The Links attributes provide a way for you to direct customers to a BESTBUY.COM product detail page or create a BESTBUY.COM cart on their behalf while including the product in the cart.

Attribute Description addToCartUrl URL to BESTBUY.COM with item in cart url URL to BESTBUY.COM product detail page



For our affiliate partners we provide this same functionality but use a special link so you can get credit for your sale. Affiliates add their Impact Partner ID (IPID) to their query request. The URL generated will direct the customer to BESTBUY.COM with this item in their cart and credit the affiliate with the sale. Additional information on the affiliate program can be found here.

Attribute Description affiliateAddToCartUrl URL to BESTBUY.COM with item in cart affiliateUrl URL to BESTBUY.COM product detail page

Categorizations

Best Buy provides multiple ways to group products based on your needs.

The department, class and subclass attributes provide categorization structure or groupings of products. These attributes are returned as separate attributes but are related. The department attribute provides the more general categorization while the class and subclass attributes narrow the focus to be more specific. The class and subclass attributes are less volatile than category attributes and are the recommended attributes for grouping products.

Attribute Description Type class Class name string classId Class identifiers integer department Department name string departmentId Department identifiers integer subclass Subclass name string subclassId Subclass identifier integer

The categoryPath attributes provide a hierarchal view of a product returned as a collection. The collections start with the most general categorization, while subsequent categories narrow to be more specific. The number of categories returned can be 3+ layers deep. The products within the categories also tend to be slightly more volatile than department, class and subclass groupings.

Attribute Description Type categoryPath.id Category identifiers string categoryPath.name Category names string

The list attributes are used for specific events such as Valentine’s Day. These lists are curated by Best Buy merchant teams for customer visibility for a specific event or purpose.

Attribute Description Type lists.endDate End date shown in list string lists.listId Name shown in list string lists.startDate Start date shown in list string

Offers and Deals

The Best Buy offer attributes provide a comprehensive view into the deals at Best Buy. This includes what is in our Sunday circular (also available online), our “Deal of the Day” and other special offers like “Free Shipping on Orders $35 and Up.” Each offer will contain a description of the offer and a link to the offer on BESTBUY.COM where applicable. Offer information is grouped together in a collection. Each product can have one or more offers associated to it.

NOTE: Offers are updated on a daily basis. Offers are subject to change and applicability will be determined at checkout.

Attributes Description offers.endDate Offer end date offers.id Offer identifier offers.startDate Offer start date offers.text Description of offer offers.type Offer types can include the following: special_offer: identified by Best Buy marketing managers digital_insert: identifies products that are featured in Best Buy’s Top Deals deal_of_the_day: small group of products being promoted for one day only offers.url URL of offer information on BESTBUY.COM

Listing Products

We offer various metadata to support you when listing Best Buy products. This includes information such as whether a product is active, if it is new or refurbished, the type of product (music, movie, hardgood, bundle, game, blacktie, or software) and more.

Attribute Description Type active Identifies if product is currently supported in the BESTBUY.COM catalog boolean activeUpdateDate Date and time the active attribute was last changed date bundledIn.sku Returns SKUs of bundles that include this product long itemUpdateDate Date and time any change was made to this product date members.sku Collection of skus within a bundle long new Identifies if the product was added within last 30 days boolean secondaryMarket Identifies if product is a secondary market product boolean startDate Date Best Buy began selling product date type Best Buy product type, see section below for more details string

Product Type Details

Value Description blackTie Extended warranty services provided by the Best Buy GeekSquad team bundle A group of products; group can include both material and digital products game Games; includes both material and digital (downloadable) game products hardgood Products that are not of type music, movie, game, blackTie, software or bundle movie Movies; inclues both material and digital (downloadable) movie products music Music; includes both material and digital (downloadable) music products software Software; includes material and digital (downloadable) software products

Warranties

The Warranties endpoint within the Best Buy Products API helps you access a list of warranties associated with a Best Buy product, along with select data associated with the warranty. For more detailed information about a specific warranty, you can look at that warranty by SKU in our Products endpoint.

Search for warranties associated with SKU 5005633

curl "https://api.bestbuy.com/v1/products/5005633/warranties.json?apiKey=YourAPIKey"

[{ "skuId" : "2745188" , "shortName" : "1-Year Accidental Geek Squad Protection" , "currentPrice" : 149.99 , "type" : "GSP" , "department" : "7" , "subclass" : "210" , "protectionType" : "Accidental" , "paymentType" : "ONETIME" , "term" : "12 months" , "class" : "332" } ]

Common Attributes

Attribute Description Type protectionType Collection of warranties offering specific protections string paymentType Collection of warranties available with a specific type of payment string term Collection of warranties available for a certain length of time string

Note: Descriptions of other warranty-related attributes, including skuId , shortName , currentPrice , type , department , class , and subclass can be found in our core Products documentation.

Buying Options (Open Box) API

The Buying Options API helps you access some of our best deals. This is where you’ll find information about ship-from-store eligible Open Box products including availability, condition and special pricing, with more to come as we build out this API further. Our Open Box endpoints provide access to several categories of Best Buy merchandise, similar to the “Buying Options” tab on BESTBUY.COM product detail pages. We typically have multiple Open Box products for a single SKU. When a customer purchases an Open Box product on BESTBUY.COM we ship from the closest Best Buy store based on the customer shipping address. To assist in selecting the correct Open Box product we assign a condition of “excellent or certified” to the product in every Open Box offer.

“excellent” - products that look brand new in appearance, with no physical flaws, scratches or scuffs and include all original parts and accessories

“certified” - products that have passed the Geek Squad Certification process.

We have split Open Box into multiple endpoints:

The Open Box Single SKU endpoint lets you query for a specific product using the product identifier (SKU) for any available Open Box offers.

endpoint lets you query for a specific product using the product identifier (SKU) for any available Open Box offers. The Open Box by list of SKUs endpoint lets you query for a list of products using product identifier (SKU) for any available Open Box offers.

endpoint lets you query for a list of products using product identifier (SKU) for any available Open Box offers. The Open Box by Category endpoint lets you query for a set of products based on their categories.

All responses returned will be in a json format. In addition, we only return results for available product. We check for newly available product every five minutes. If you are an affiliate partner please see the Affiliate FAQ for instructions on proper use.

Common Attributes

Attribute Description customerReviews.averageScore Provides an average of all the ratings submitted for a product by reviewers. The customer can rate the product on a scale of 1-5 where 5 is the highest. Ratings may be returned using decimals customerReviews.count The total number of reviews collected descriptions.short A brief description of a product images.standard URL of BESTBUY.COM product detail page image links.product Link to the specific product in the Products API using a product identifier (SKU) links.web Link to the BESTBUY.COM product detail page using the Buying Options tab links.addToCart URL to BESTBUY.COM with item in cart names.title Name of the product offers.condition The condition attribute will either be “excellent” (products that look brand new in appearance,with no physical flaws, scratches or scuffs and include all original parts and accessories) or “certified” (products that have passed the Geek Squad Certification process) offers.prices.current, “Open box” product’s current selling price offers.prices.regular “Open box” product’s regular selling price prices.current “New” product’s current selling price prices.regular “New” product’s regular selling price sku Unique identifier for products sold by Best Buy

Open Box Single SKU

curl "https://api.bestbuy.com/beta/products/8610161/openBox?apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . openBox ( 8610161 ). then ( function ( data ){ console . log ( data ); });

Search all open box offers for SKU 8610161. We can see there are at least two offers excellent and certified.

{ "results" : [ { "customerReviews" : { "averageScore" : "4.5" , "count" : 471 }, "descriptions" : { "short" : "Google Chrome 64-bitTechnical details: Intel® Celeron® processor; 11.6\" display; 2GB memory; 16GB eMMC flash memorySpecial features: Bluetooth; HDMI outputNote: DVD/CD drive not included" }, "images" : { "standard" : "http://img.bbystatic.com/BestBuy_US/images/products/8610/8610161_rc.jpg" }, "links" : { "product" : "https://api.bestbuy.com/v1/products/8610161.json?apiKey=YourAPIKey" , "web" : "http://www.bestbuy.com/site/acer-11-6-chromebook-intel-celeron-2gb-memory-16gb-emmc-flash-memory-moonstone-white/8610161.p?id=1219351773817&skuId=8610161&cmp=RMX&ky=2l9pmD3wUBb9cc0tkHo49KBFCMPCiIPY4#tab=buyingOptions" , "addToCart" : "https://api.bestbuy.com/click/-/8610161/cart" }, "names" : { "title" : "Acer - 11.6\" Chromebook - Intel Celeron - 2GB Memory - 16GB eMMC Flash Memory - Moonstone White" }, "offers" : [ { "condition" : "excellent" , "prices" : { "current" : 175.99 , "regular" : 199 } }, { "condition" : "certified" , "prices" : { "current" : 187.99 , "regular" : 199 } } ], "prices" : { "current" : 199 , "regular" : 199 }, "sku" : "8610161" } ] }

The Open Box Single SKU endpoint allows you to query by SKU all Open Box offers associated with a SKU. If there are no Open Box offers available, the query will return a HTTP 200 response code with an empty result set.

Open Box by List of SKUs

curl "https://api.bestbuy.com/beta/products/openBox(sku%20in(5729048,7528703,4839357,8153056,8610161))?apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . openBox ( 'sku in(5729048,7528703,4839357,8153056,8610161)' ). then ( function ( data ){ console . log ( data ); });

Returns available Open Box offers for 5 different SKUs

{ "metadata" : { "resultSet" : { "count" : 6 }, "context" : { "canonicalUrl" : "https://api.bestbuy.com/beta/products/openBox(sku%20in(5729048,7528703,4839357,8153056,8610161,4591017))?apiKey=YourAPIKey" } }, "results" : [ { "customerReviews" : { "averageScore" : "4.5" , "count" : 471 }, "descriptions" : { "short" : "Google Chrome 64-bitTechnical details: Intel® Celeron® processor; 11.6\" display; 2GB memory; 16GB eMMC flash memorySpecial features: Bluetooth; HDMI outputNote: DVD/CD drive not included" }, "images" : { "standard" : "http://img.bbystatic.com/BestBuy_US/images/products/8610/8610161_rc.jpg" }, "links" : { "product" : "https://api.bestbuy.com/v1/products/8610161.json?apiKey=YourAPIKey" , "web" : "http://www.bestbuy.com/site/acer-11-6-chromebook-intel-celeron-2gb-memory-16gb-emmc-flash-memory-moonstone-white/8610161.p?id=1219351773817&skuId=8610161&cmp=RMX&ky=2l9pmD3wUBb9cc0tkHo49KBFCMPCiIPY4#tab=buyingOptions" , "addToCart" : "https://api.bestbuy.com/click/-/8610161/cart" }, "names" : { "title" : "Acer - 11.6\" Chromebook - Intel Celeron - 2GB Memory - 16GB eMMC Flash Memory - Moonstone White" }, "offers" : [ { "condition" : "excellent" , "prices" : { "current" : 175.99 , "regular" : 199 } }, { "condition" : "certified" , "prices" : { "current" : 187.99 , "regular" : 199 } } ], "prices" : { "current" : 199 , "regular" : 199 }, "sku" : "8610161" },

The Open Box by List of SKUs endpoint allows you to query all Open Box offers associated with a list of SKUs. The endpoint will return any available Open Box offers. If there is not an offer for a particular SKU in the list, that SKU will not be represented in the results. If there are no offers for any of the SKUs in the list, the query will return an HTTP 200 (OK) response code with an empty result set.

NOTE: This endpoint accepts and returns at most 100 SKUs. The results are not paginated. Expect an HTTP 400 (Bad Request) response if you submit more than 100 SKUs.

Open Box by Category

curl "https://api.bestbuy.com/beta/products/openBox(categoryId=abcat0400000)?apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . openBox ( 'categoryId=abcat0400000)' ). then ( function ( data ){ console . log ( data ); });

Search all Open Box offers for SKUs that are a part of category abcat0400000; our Cameras & Camcorders category

{ "results" : [ { "customerReviews" : { "averageScore" : "4.7" , "count" : 145 }, "descriptions" : { "short" : "Compatible with most Canon DSLR cameras; stepping motor; 52mm filter size; 11.8\" minimum focus distance" }, "images" : { "standard" : "http://img.bbystatic.com/BestBuy_US/images/products/5729/5729048_sc.jpg" }, "links" : { "product" : "https://api.bestbuy.com/v1/products/5729048.json?apiKey=YourAPIKey" , "web" : "http://www.bestbuy.com/site/canon-ef-40mm-f-2-8-stm-standard-lens-black/5729048.p?id=1218688218296&skuId=5729048&cmp=RMX&ky=2l9pmD3wUBb9cc0tkHo49KBFCMPCiIPY4#tab=buyingOptions" , "addToCart" : "https://api.bestbuy.com/click/-/5729048/cart" }, "names" : { "title" : "Canon - EF 40mm f/2.8 STM Standard Lens - Black" }, "offers" : [ { "condition" : "excellent" , "prices" : { "current" : 167.99 , "regular" : 199.99 } } ], "prices" : { "current" : 199.99 , "regular" : 199.99 }, "sku" : "5729048" } ] }

The Open Box by Category endpoint allows you to query all Open Box offers associated with the SKUs in the requested category. If there are no Open Box offers available, the query will return a HTTP 200 response code with an empty result set. You will want to search by Category ID. It is not possible to search by Category Name at this time.

We recommend using our Categories API to identify the desired category. You can also look at the Products API category attributes to help identify those categories that you want to use to search Open Box offers.

Use Pagination to review or retrieve the entire result set. If additional product information is needed you can use the links.product attribute to go to the Products API for a wealth of product information.

Categories API

The Categories API allows you to traverse the many categories on BESTBUY.COM and perform product searches based on category names or identifiers. The Categories API also allows you to search for specific product attributes within a specific category (example: TVs less than $100), search using multiple product attributes within a specific category (example: TVs released in the last year that are less than $100) or look at Best Buy taxonomy to better search and present Best Buy product data (example: HD TVs released in the last year that are less than $100).

Category and Subcategory Paths

As part of the category details, we provide a flat hierarchical path for each category. The path is a collection of all the categories in the path, starting with the root.

Similarly, the Subcategories path attributes provide a collection of subcategories for the parent category. Each category can have one or more subcategories associated to it, which are identified by subcategory ids and names.

The Products API also includes the category path information for each product. For additional information on the category attributes in Products API, refer to Categorizations.

Common Attributes

Attribute Description name Used to find all subcategories (e.g., parents, siblings, children) within a specific category id Used to find all results within a specific category (e.g., abcat0100000) url URL to corresponding BESTBUY.COM category page path.name Used to find all categories, starting with the root, within a particular path (e.g., electronics) path.id Used to find all categories, starting with the root, within a particular path (e.g., abcat0014001) subCategories.name Used to identify subcategories within a specific category (e.g., Kitchen Essentials within Gift Ideas) subCategories.id Used to identify subcategories within a specific category (e.g., abcat0011002)

Get All Categories

curl "https://api.bestbuy.com/v1/categories?format=json&show=id&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . categories ( '' ,{ show : 'id' }). then ( function ( data ){ console . log ( data ); });

{ "from" : 1 , "to" : 10 , "total" : 4328 , "currentPage" : 1 , "totalPages" : 433 , "queryTime" : "0.003" , "totalTime" : "0.025" , "partial" : false , "canonicalUrl" : "/v1/categories?show=id,url&format=json&apiKey=YourAPIKey" , "categories" : [ { "id" : "abcat0010000" , "url" : "http://www.bestbuy.com/site/electronics/gift-ideas/abcat0010000.c?id=abcat0010000" }, { "id" : "abcat0020001" , "url" : "http://www.bestbuy.com/site/electronics/gift-ideas/abcat0020001.c?id=abcat0020001" }, { "id" : "abcat0020002" , "url" : "http://www.bestbuy.com/site/electronics/gift-ideas/abcat0020002.c?id=abcat0020002" }, { "id" : "abcat0020004" , "url" : "http://www.bestbuy.com/site/electronics/gift-ideas/abcat0020004.c?id=abcat0020004" }, { "id" : "abcat0100000" , "url" : "http://www.bestbuy.com/site/electronics/gift-ideas/abcat0100000.c?id=abcat0100000" }] }

The query to the right will return all the Best Buy product categories. Query is filtered to show only id s.

Search for a Category

curl "https://api.bestbuy.com/v1/categories(name=Sony%20DSLR%20Camera*)?format=json&show=path&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . categories ( 'name=Sony DSLR Camera*' ,{ show : 'path' }). then ( function ( data ){ // The util package is loaded to print the complete object structure console . log ( require ( 'util' ). inspect ( data , false , null )); });

{ "from" : 1 , "to" : 1 , "total" : 1 , "currentPage" : 1 , "totalPages" : 1 , "queryTime" : "0.011" , "totalTime" : "0.014" , "partial" : false , "canonicalUrl" : "/v1/categories(name=\"Sony DSLR Camera*\")?show=path&format=json&apiKey=YourAPIKey" , "categories" : [ { "path" : [ { "id" : "cat00000" , "name" : "Best Buy" }, { "id" : "pcmcat128500050004" , "name" : "Name Brands" }, { "id" : "cat15063" , "name" : "Sony" }, { "id" : "pcmcat97200050015" , "name" : "Sony DSLR Camera" } ] } ] }

The following query will return the category path for the category name specified in the input. In the below example we are requesting the category path for a Sony DSLR Camera. The query results are shown in a flat hierarchical path starting from the root. In this case Best Buy is the root category which is the first in the path, followed by its child category Name Brands, whose child is Sony, and its child Sony DSLR Camera, which is also the last category in this path.

Recommendations API

The Recommendations API offers Trending, Most Viewed and Also Viewed information about Best Buy products based on customer behavior at BESTBUY.COM.

Shared Attributes

Attribute Description customerReviews.averageScore An average of all the ratings submitted for a product by reviewers customerReviews.count Total number of reviews collected description.short Brief description of a product images.standard URL of the BESTBUY.COM product detail page image links.addToCart URL that will direct the customer to BESTBUY.COM with the item in their cart links.product Link to the specific sku in the Products API links.web Link to the BESTBUY.COM product detail page names.title Name of the product prices.current Current selling price prices.regular Regular selling price sku Unique identifier for products sold by Best Buy

Trending Products

curl "https://api.bestbuy.com/beta/products/trendingViewed(categoryId=abcat0400000)?apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . recommendations ( 'trendingViewed' , 'abcat0400000' ). then ( function ( data ){ console . log ( data ); });

In this example we request Trending products based on category abcat0400000 otherwise known as “Cameras & Camcorders”. When pulling by category you should always use the category id. It is not possible to query by category name. For more information about identifying category ids please refer to our Categories API documentation.

{ "results" : [ { "customerReviews" : { "averageScore" : "4.9" , "count" : 309 }, "descriptions" : { "short" : "20.2-megapixel APS-C CMOS sensorShooting speeds up to 7 fpsBuilt-in Wi-Fi" }, "images" : { "standard" : "http://img.bbystatic.com/BestBuy_US/images/products/8896/8896132_sc.jpg" }, "links" : { "product" : "https://api.bestbuy.com/v1/products/8896132.json?apiKey=YourAPIKey" , "web" : "http://www.bestbuy.com/site/canon-eos-70d-dslr-camera-with-18-135mm-is-stm-lens-black/8896132.p?id=1218941181224&skuId=8896132&cmp=RMX&ky=2l9pmD3wUBb9cc0tkHo49KBFCMPCiIPY4" , "addToCart" : "http://www.bestbuy.com/site/olspage.jsp?id=pcmcat152200050035&type=category&cmp=RMX&ky=2l9pmD3wUBb9cc0tkHo49KBFCMPCiIPY4&qvsids=8896132" }, "names" : { "title" : "Canon - EOS 70D DSLR Camera with 18-135mm IS STM Lens - Black" }, "prices" : { "current" : 1449.99 , "regular" : 1549.99 }, "rank" : 6 , "sku" : "8896132" },

The Trending Products endpoint returns top ten products, by rank, based on customer views of the BESTBUY.COM product detail page over a rolling three hour time period. Trending growth is based on a comparison against the previous three hour time period. You can also pull this same information by category or subcategory. For more information about identifying category ids please refer to our Categories API documentation.

Note: Minimum of 50 page views/hr required for inclusion. In addition, deep subcategories may not have enough user traffic to generate trending data.

Trending Products Specific Attributes

Attribute Description rank The rank of a product as compared to the velocity of other trending products. The number rank 1 identifies the most highly trending product while a number 10 rank would identify the 10th trending product

Most Popular Viewed

curl "https://api.bestbuy.com/beta/products/mostViewed(categoryId=abcat0107000)?apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . recommendations ( 'mostViewed' , 'abcat0107000' ). then ( function ( data ){ console . log ( data ); });

Request Most Viewed products based on category abcat0107000 otherwise known as “TV & Home Theater Accessories.” When pulling by category you should always use the category id. It is not possible to query by category name.

{ "results" : [ { "customerReviews" : { "averageScore" : "4.6" , "count" : 15 }, "descriptions" : { "short" : "Lets you connect your Apple® TV to a VGA-enabled projector; converts digital HDMI output to analog VGA signal; 3.5mm audio port; 6' cord" }, "images" : { "standard" : "http://images.bestbuy.com/BestBuy_US/images/products/1740/1740039_sc.jpg" }, "links" : { "product" : "https://api.bestbuy.com/v1/products/1740039.json" , "addToCart" : "http://www.bestbuy.com/site/olspage.jsp?id=pcmcat152200050035&type=category&cmp=RMX&ky=1xrtkOPXgHdxEmF4yQx1jGyxiihDiJ5c2&qvsids=1740039" , "web" : "http://www.bestbuy.com/site/belkin-hdmi-to-vga-adapter/1740039.p?id=1219062507184&skuId=1740039&cmp=RMX&ky=2dN2vg9ikE823Sb2cqFFchnSnf6JkvQna" }, "names" : { "title" : "Belkin - HDMI-to-VGA Adapter" }, "prices" : { "current" : 25.99 , "regular" : 49.99 }, "rank" : 7 , "sku" : "1740039" },

The Most Popular Viewed endpoint returns the top ten products, by rank, of the most frequently viewed products on BESTBUY.COM. You can also pull this same information by category or subcategory. To find out additional information about identifying category ids please refer to our Categories API documentation. This data for Most Popular Viewed is refreshed every two hours with a maximum accumulation time of 48 hours when determining the top ten products.

Note: The difference between Trending Products and Most Popular Viewed Products is that Trending Products reflects change in velocity of product views while Most Popular Viewed reflects page views only.

Most Popular Product Specific Attributes

Attribute Description rank The rank of a product based on how frequently it is viewed on BESTBUY.COM product detailed page

Also Viewed

curl "https://api.bestbuy.com/beta/products/5747275/alsoViewed?apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . recommendations ( 'alsoViewed' , 5747275 ). then ( function ( data ){ console . log ( data ); });

{ "results" : [ { "customerReviews" : { "averageScore" : null , "count" : null }, "descriptions" : { "short" : null }, "images" : { "standard" : "http://images.bestbuy.com/BestBuy_US/images/products/nonsku/default_movies_l.jpg" }, "links" : { "product" : "https://api.bestbuy.com/v1/products/5747275.json" , "addToCart" : "http://www.bestbuy.com/site/olspage.jsp?id=pcmcat152200050035&type=category&cmp=RMX&ky=1xrtkOPXgHdxEmF4yQx1jGyxiihDiJ5c2&qvsids=5747275" , "web" : "http://www.bestbuy.com/site/batman-begins-blu-ray-disc/8880044.p?id=1484301&skuId=8880044&cmp=RMX&ky=1xrtkOPXgHdxEmF4yQx1jGyxiihDiJ5c2" }, "names" : { "title" : "Batman Begins (2 Disc) (Ultraviolet Digital Copy) (Blu-ray Disc)" }, "prices" : { "current" : 9.99 , "regular" : 9.99 }, "rank" : 3 , "sku" : "5747275" } ] }

The Also Viewed Products endpoint can be used to identify top ten products that were viewed along with the originating product. These results are determined based on aggregated customer browsing behavior over the past thirty days on BESTBUY.COM.

Also Viewed Product Specific Attributes

Attribute Description rank The rank of the product based on how many views a product received after starting with originating SKU. The number 1 rank identifies the highest number of page views an associated product received while looking at originating SKU while the number 10 rank identifies the product with the 10th highest page views while look at same originating product

Stores API

curl "https://api.bestbuy.com/v1/stores?format=json&show=city,longName&pageSize=2&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . stores ( '' ,{ show : 'city,longName' , pageSize : 2 }). then ( function ( data ){ console . log ( data ); });

Returns the city and store name of 2 stores

{ "from" : 1 , "to" : 2 , "total" : 1587 , "currentPage" : 1 , "totalPages" : 794 , "stores" : [ { "city" : "San Juan" , "longName" : "Best Buy - Hato Rey" }, { "city" : "Bayamon" , "longName" : "Best Buy - Rio Hondo Mall" } ] }

The Best Buy Stores API provides store information for all Best Buy stores in the United States and Puerto Rico. This information includes address, location, hours and services offered.

In addition, store availability of a product can be determined by querying the Products API together with the Stores API. Refer to In Store Availability for more information on these type of queries.

Common Attributes

curl "https://api.bestbuy.com/v1/stores(postalCode=55423)?format=json&show=storeId,storeType,name,city,region&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . stores ( 'postalCode=55423' , { show : 'storeId,storeType,name,city,region' }). then ( function ( data ){ console . log ( data ); });

Returns all stores at the ZIP code 55423 (Richfield, MN)

{ "from" : 1 , "to" : 2 , "total" : 2 , "currentPage" : 1 , "totalPages" : 1 , "stores" : [ { "storeId" : 281 , "storeType" : "Big Box" , "name" : "Richfield" , "city" : "Richfield" , "region" : "MN" }, { "storeId" : 8001 , "storeType" : "Express Kiosk" , "name" : "Best Buy HQ" , "city" : "Richfield" , "region" : "MN" } ] }

The Stores API enables you to retrieve the basic store information for all Best Buy stores, a specific Best Buy store or those stores that match a set of search parameters.

Attribute Description address Street address address2 Street address 2 provides additional street address information for the Best Buy store in the result set city City name country Country name distance Store distance from specified location in miles; attribute is not queryable; use with lat and long or postal code fullPostalCode 9-digit postal code if available for store location lat Latitude lng Longitude location Details about location of a store; primarily used for identifying Best Buy Express Kiosk stores locationType Whether the location is a Store or a Warehouse longName Full store name name Store name phone Store phone number; phone number for Express stores goes to Best Buy Customer Service postalCode 5-digit postal code region State, territory storeId Store number storeType Indicates the type of store, and is only present if locationType is ‘Store’. There are five types of Best Buy stores: “Big Box”, “Express Kiosk”, “Warehouse Sale”, “Outlet Center” and “PAC Standalone Store” “Big Box” value represents large showroom stores featuring HDTVs, computers, gaming, appliances, cell phones, tablets, Geek Squad services and more “Express Kiosk” value represents vending machine-style, self-checkout stores offering audio goods and accessories, found in airports, on college campuses and more “Warehouse Sale” value represents occasional sale locations “Outlet Center” value represents locations that sell open box and clearance products. Outlet Centers are open only a portion of the week “PAC Standalone Store” value represents Pacific Sales locations not located within a Big Box store - these locations only sell the Pacific Sales selection of kitchen and bath products

Area Function

curl "https://api.bestbuy.com/v1/stores(area(55423,10))?format=json&show=storeId,storeType,name&pageSize=1&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . stores ( 'area(55423,10)' ,{ show : 'storeId,storeType,name' , pageSize : 1 }). then ( function ( data ){ console . log ( data ); });

Returns stores within 10 miles of ZIP code 55423 (Richfield, MN)

{ "from" : 1 , "to" : 1 , "total" : 22 , "currentPage" : 1 , "totalPages" : 11 , "stores" : [ { "storeId" : 281 , "storeType" : "Big Box" , "name" : "Richfield" } ] }

The Stores API includes a special function area(location,distance) enabling you to locate stores near a specified location.

Use the postalCode attribute or a lat - lng pair to search based on a location. When postal code is used the reference point in the postal code (zipcode) area is determined by a standard mapping service. If no distance is specified in the function, radius is defaulted to 10 miles. The location will be populated with the distance from the specified postal code or lat/long to the store in miles.

Note: You may notice the stores returned are stated to be just over 10 miles from the ZIP code. This is due to the way return distance is calculated. The search area is defined as a square, bounded by location point +/- distance identified in request. All stores in that square are returned. Return distance is calculated linearly from the location point (creates a circle). Stores near the corner of the square might be listed as farther than the query distance specified.

Hours

curl "https://api.bestbuy.com/v1/stores(storeId=1118)?format=json&show=hours,hoursAmPm,gmtOffset,detailedHours&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . stores ( 'storeId=1118' ,{ show : 'hours,hoursAmPm,gmtOffset,detailedHours' }) . then ( function ( data ){ // The util package is loaded to print the complete object structure console . log ( require ( 'util' ). inspect ( data , false , null )); });

Shows all hours that store #1118 (San Juan, PR) is open

{ "from" : 1 , "to" : 1 , "total" : 1 , "currentPage" : 1 , "totalPages" : 1 , "stores" : [ { "hours" : "Mon: 10-9; Tue: 10-9; Wed: 10-9; Fri: 12:01-10; Sat: 9-10; Sun: 11-8" , "hoursAmPm" : "Mon: 10am-9pm; Tue: 10am-9pm; Wed: 10am-9pm; Fri: 12:01am-10pm; Sat: 9am-10pm; Sun: 11am-8pm" , "gmtOffset" : -5 , "detailedHours" : [ { "day" : "Sunday" , "date" : "2015-11-22" , "open" : "11:00" , "close" : "20:00" }, { "day" : "Monday" , "date" : "2015-11-23" , "open" : "10:00" , "close" : "21:00" } // Typically returns 14 days, truncating from documentation ] } ] }

The Hours attributes provide the days and times each Best Buy store is open for the following two weeks. We start our weeks on Sunday and provide hours in both a 12-hour and 24-hour clock. The times displayed are for the local time zones of the Best Buy store being returned. The Detailed Hours attributes provide the most accurate information of when stores will be opened or closed. This can be helpful during holidays as store hours may vary during this time.

Hint: Detailed hours are filtered out from the search results by default. Query with show=all or show=detailedHours to see in the search results.

Attribute Description detailedHours.day Days of the week store will be open detailedHours.date Dates store will be open detailedHours.open Time store will open (24-hour clock) detailedHours.close Time store will close (24-hour clock) gmtOffset Time difference from GMT hours Regular Best Buy store hours Monday through Friday for the calendar year; displayed in local time zone hoursAmPm Regular Best Buy store hours Monday through Friday for the calendar year with am and pm identifiers; displayed in local time zone

Services Offered

curl "https://api.bestbuy.com/v1/stores(storeId=1118)?format=json&show=services&apiKey=YourAPIKey"

var bby = require ( 'bestbuy' )( 'YourAPIKey' ); bby . stores ( 'storeId=1118' ,{ show : 'services' }). then ( function ( data ){ // The util package is loaded to print the complete object structure console . log ( require ( 'util' ). inspect ( data , false , null )); });

Shows all services available at store #1118 (San Juan, PR)

{ "from" : 1 , "to" : 1 , "total" : 1 , "currentPage" : 1 , "totalPages" : 1 , "stores" : [ { "services" : [ { "service" : "Windows Store" }, { "service" : "Geek Squad Services" }, { "service" : "Best Buy Mobile" }, { "service" : "Best Buy For Business" }, { "service" : "Apple Shop" }, { "service" : "Electronics Recycling" }, { "service" : "Best Buy Marine Powered by Geek Squad" }, { "service" : "Samsung Experience" }, { "service" : "LG Experience" }, { "service" : "Trade-In" }, { "service" : "Car & GPS Installation Services" } ] } ] }

The Stores API includes information related to the services offered at each of the Best Buy stores. services is a collection of different services offered at a specified store.

Attribute Description services.service Collection of services offered at each Best Buy store

In-Store Availability

curl "https://api.bestbuy.com/v1/products/4807511/stores.json?postalCode=55423&apiKey=YourAPIKey"

Shows stores near 55423 (Richfield, MN) that carry SKU 4807511 (Insignia LED-TV)

{ "ispuEligible" : true , "stores" : [ { "storeID" : "10" , "name" : "Maplewood" , "address" : "1795 County Rd D E" , "city" : "Maplewood" , "state" : "MN" , "postalCode" : "55109" , "storeType" : "Big_Box_Store" , "minPickupHours" : null , "lowStock" : false , "distance" : 16.594 }, ] }

The Stores API, in conjunction with the Products API, allows you to search stores for a product and identify if it is available. In-store availability searches will return only those stores that have a given product in stock. Stores not returned do not have that product in stock. You can get near real time availability for specific SKUs based on either a store ID or postal code search.

SKU Specific Availability

You can look up near real time store availability for single SKUs. You may search either on postalCode or based on storeId . Results for postalCode queries will include all stores within a 250 mile radius, sorted by proximity.

HINT: The Products API attribute inStoreAvailability will tell you if a product is sold in stores but not if it’s available at a particular store. Using the In-Store availability queries is equivalent to checking product availability in store.

Attribute Description stores.storeID The unique ID of the store stores.name The store name stores.address The street address of the store stores.city The city in which the store is located stores.postalCode The postal code in which the store is located stores.storeType The type of store stores.minPickupHours The minimum number of hours that must pass after placing a store pick up order before the item will be available for pick up. stores.lowStock Whether or not the product availability at this store is low and may soon shift to out of stock. stores.distance The store’s distance (in miles) from the given postalCode

Commerce API

The Best Buy Commerce API allows our partners to introduce a seamless cart experience to their customers, exposing the ability to select various fulfillment options including Store Pickup at one of our 1,400+ locations, Ship To Home and Home Delivery. If you have not yet been issued a Commerce API key, please contact us.

Within the Commerce APIs, partners have the ability to integrate your e-commerce solution with Best Buy’s online experience.

Functionality

Full documentation supplied once you have a CAPI Key. Commerce API functionality includes:

Look up product availability, delivery dates, shipping costs prior to order submission

Create orders including Store Pick Up, Ship to Home and Home Delivery

Look up order information

Modify/Cancel an Order

Getting a Commerce API Key

Please contact us to request an invite to the Commerce API program and a corresponding API Key. Current CAPI partners can access reporting and documentation via the same address.