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
andsalePrice
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 attributesort=attribute.dsc
- Sort the results in descending order of the specified attributesort=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. - 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.
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 does not equal a specified value>
- attribute greater than a specified value<
- attribute less than a specified value>=
- attribute greater than or equal to a specified value<=
- attribute less than or equal to a specified valuein
- 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))
Search by date range
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:
Search by date relative to today
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 valuesattribute!=*
- 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 a400
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: |
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 |
Links
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: |
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.
- 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.
- 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/v1/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.
{
"metadata": {
"context": {
"canonicalUrl": "https://api.bestbuy.com/v1/products/trendingViewed(categoryId=abcat0400000)?apiKey=YourAPIKey"
},
"resultSet": {
"count": 10
}
},
"results": [
{
"sku": "6323759",
"customerReviews": {
"averageScore": 4.8,
"count": 1477
},
"descriptions": {
"short": "24.1-megapixel APS-C format CMOS sensorISO 100-6,400, expandable to 12,800Shooting speeds up to 3 fps9 points of focus1920 x 1080 (Full HD) 30 fps video recording capabilityBuilt-in Wi-Fi, NFC, and GPS capable"
},
"images": {
"standard": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/6323/6323759_sa.jpg"
},
"names": {
"title": "Canon - EOS Rebel T7 DSLR Video Two Lens Kit with EF-S 18-55mm and EF 75-300mm Lenses"
},
"prices": {
"regular": 549.99,
"current": 549.99
},
"links": {
"product": "https://api.bestbuy.com/v1/products/6323759.json?apiKey=YourAPIKey",
"web": "https://api.bestbuy.com/click/-/6323759/pdp",
"addToCart": "https://api.bestbuy.com/click/-/6323759/cart"
},
"rank": 1
},
// ...
]
}
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.
Endpoint-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/v1/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.
{
"metadata": {
"context": {
"canonicalUrl": "https://api.bestbuy.com/v1/products/mostViewed(categoryId=abcat0107000)?apiKey=YourAPIKey"
},
"resultSet": {
"count": 10
}
},
"results": [
{
"sku": "5852832",
"customerReviews": {
"averageScore": 4.3,
"count": 4816
},
"descriptions": {
"short": "Compatible with more than 270,000 entertainment device brands; replaces up to 10 remotes; programmable buttons"
},
"images": {
"standard": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/5852/5852832_sa.jpg"
},
"names": {
"title": "Logitech - Harmony 665 10-Device Universal Remote - Black"
},
"prices": {
"regular": 79.99,
"current": 79.99
},
"links": {
"product": "https://api.bestbuy.com/v1/products/5852832.json?apiKey=YourAPIKey",
"web": "https://api.bestbuy.com/click/-/5852832/pdp",
"addToCart": "https://api.bestbuy.com/click/-/5852832/cart"
},
"rank": 1
},
// ...
]
}
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.
Endpoint-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/v1/products/8880044/alsoViewed?apiKey=YourAPIKey"
var bby = require('bestbuy')('YourAPIKey');
bby.recommendations('alsoViewed',8880044).then(function(data){
console.log(data);
});
{
"metadata": {
"context": {
"canonicalUrl": "https://api.bestbuy.com/v1/products/8880044/alsoViewed?apiKey=YourAPIKey"
},
"resultSet": {
"count": 10
}
},
"results": [
{
"sku": "6111518",
"customerReviews": {
"averageScore": 4.7,
"count": 1292
},
"descriptions": {
"short": null
},
"images": {
"standard": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/6111/6111518_sa.jpg"
},
"names": {
"title": "Batman Begins [4K Ultra HD Blu-ray/Blu-ray] [2005]"
},
"prices": {
"regular": 23.99,
"current": 23.99
},
"links": {
"product": "https://api.bestbuy.com/v1/products/6111518.json?apiKey=YourAPIKey",
"web": "https://api.bestbuy.com/click/-/6111518/pdp",
"addToCart": "https://api.bestbuy.com/click/-/6111518/cart"
},
"rank": 1
},
// ...
]
}
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.
Endpoint-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 |
Also Bought
curl "https://api.bestbuy.com/v1/products/8880044/alsoBought?apiKey=YourAPIKey"
var bby = require('bestbuy')('YourAPIKey');
bby.recommendations('alsoBought', 8880044).then(function(data){
console.log(data);
});
{
"metadata": {
"context": {
"canonicalUrl": "https://api.bestbuy.com/v1/products/8880044/alsoBought?apiKey=YourAPIKey"
},
"resultSet": {
"count": 10
}
},
"results": [
{
"sku": "9124743",
"customerReviews": {
"averageScore": 4.9,
"count": 2003
},
"descriptions": {
"short": null
},
"images": {
"standard": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/9124/9124743_sa.jpg"
},
"names": {
"title": "The Dark Knight [WS] [2 Discs] [Blu-ray] [2008]"
},
"prices": {
"regular": 9.99,
"current": 9.99
},
"links": {
"product": "https://api.bestbuy.com/v1/products/9124743.json?apiKey=YourAPIKey",
"web": "https://api.bestbuy.com/click/-/9124743/pdp",
"addToCart": "https://api.bestbuy.com/click/-/9124743/cart"
},
"rank": 1
},
// ...
]
}
The Also Bought Products endpoint can be used to identify the top ten products that were bought along with the originating product. These results are determined based on aggregated customer purchases over the past thirty days.
Endpoint-Specific Attributes
Attribute | Description |
---|---|
rank | The rank of the product based on how often it was purchased together with the originating SKU. |
Viewed Ultimately Bought
curl "https://api.bestbuy.com/v1/products/8880044/viewedUltimatelyBought?apiKey=YourAPIKey"
var bby = require('bestbuy')('YourAPIKey');
bby.recommendations('viewedUltimatelyBought', 8880044).then(function(data){
console.log(data);
});
{
"metadata": {
"context": {
"canonicalUrl": "https://api.bestbuy.com/v1/products/8880044/viewedUltimatelyBought?apiKey=YourApiKey"
},
"resultSet": {
"count": 10
}
},
"results": [
{
"sku": "3921114",
"customerReviews": {
"averageScore": 4.7,
"count": 2113
},
"descriptions": {
"short": null
},
"images": {
"standard": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/3921/3921114_sa.jpg"
},
"names": {
"title": "The Wolf of Wall Street [2 Discs] [Blu-ray/DVD] [Includes Digital Copy] [2013]"
},
"prices": {
"regular": 4.99,
"current": 4.99
},
"links": {
"product": "https://api.bestbuy.com/v1/products/3921114.json?apiKey=YourAPIKey",
"web": "https://api.bestbuy.com/click/-/3921114/pdp",
"addToCart": "https://api.bestbuy.com/click/-/3921114/cart"
},
"rank": 1
},
// ...
]
}
The Viewed Ultimately Bought Products endpoint can be used to identify the top ten products that were bought after having viewed the originating product. These results are determined based on aggregated customer purchases and views over the past thirty days.
Endpoint-Specific Attributes
Attribute | Description |
---|---|
rank | The rank of the product based on how often it was purchased after having viewed the originating SKU. |
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” |
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.