Best Buy API: Search products
Searches Best Buy US products with an optional price range, sort order and page. Prices and availability come from public listings and may vary by location.
Unofficial. Not affiliated with or endorsed by Best Buy.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Page optional
page Page number, for example 1.
1 (default)
Whole number 1 or more.
- Sort optional
sort Sort results, for example price_low_to_high.
best_match (default)
One of
best_match,price_low_to_high,price_high_to_low,top_rated,newest.- Query, required
query Product words to search, for example 65 inch OLED TV.
65 inch OLED TV
- Max Price optional
max_price Maximum price in USD, for example 1500. Leave blank for no maximum.
Not set
Number 0 or more.
- Min Price optional
min_price Minimum price in USD, for example 500. Leave blank for no minimum.
Not set
Number 0 or more.
- Max Results optional
max_results Products per page, for example 20 (up to 50).
20
Whole number from 1 to 50. Default
20.
Input as JSON
{ "query": "65 inch OLED TV", "max_results": 20}Output
{ "products": [ { "sku": "6673112", "brand": "LG", "price": 1399.99, "savings": 1300, "currency": "USD", "photo_link": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/0fa03f0c-f8aa-40d6-a695-d83ee13d8c0d.jpg" , "star_rating": 4.8, "model_number": "OLED65C6PUA", "product_link": "https://www.bestbuy.com/product/lg-65-class-c6-oled-evo-ai-4k-smart-webos-tv-with-perfect-black-perfect-color-and-brightness-booster-2026/JJ8VPZKZ8H" , "product_name": "LG - 65\" Class C6 OLED evo AI 4K Smart webOS TV with Perfect Black, Perfect Color and Brightness Booster (2026)", "regular_price": 2699.99, "available_to_buy": true, "number_of_reviews": 155, "open_box_starting_price": 1022.99 }, { "sku": "6680628", "brand": "LG", "price": 799.99, "savings": 600, "currency": "USD", "photo_link": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/5a4bd9b2-9774-4e15-8335-0c934355dd00.jpg" , "star_rating": 4.7, "model_number": "OLED55B6EUA", "product_link": "https://www.bestbuy.com/product/lg-55-class-b6e-oled-ai-4k-smart-webos-tv-with-perfect-black-and-vivid-color-2026/JJ8VPZZ7PZ" , "product_name": "LG - 55\" Class B6E OLED AI 4K Smart webOS TV with Perfect Black and Vivid Color (2026)", "regular_price": 1399.99, "available_to_buy": true, "number_of_reviews": 113, "open_box_starting_price": 693.99 }, { "sku": "6680627", "brand": "LG", "price": 1099.99, "savings": 800, "currency": "USD", "photo_link": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/688d829e-8d2b-4c64-8d34-1706c8abe681.jpg" , "star_rating": 4.8, "model_number": "OLED65B6EUA", "product_link": "https://www.bestbuy.com/product/lg-65-class-b6e-oled-ai-4k-smart-webos-tv-with-perfect-black-and-vivid-color-2026/JJ8VPZZJGY" , "product_name": "LG - 65\" Class B6E OLED AI 4K Smart webOS TV with Perfect Black and Vivid Color (2026)", "regular_price": 1899.99, "available_to_buy": true, "number_of_reviews": 33, "open_box_starting_price": 939.99 } ]}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"bestbuy.com/search_products","input":{"query":"65 inch OLED TV","max_results":20}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "bestbuy.com/search_products" , "input": { "query": "65 inch OLED TV", "max_results": 20 }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "bestbuy.com/search_products" , "input": { "query": "65 inch OLED TV", "max_results": 20 } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run bestbuy.com/search_products# with {"query":"65 inch OLED TV","max_results":20}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "query" ], "properties": { "page": { "type": "integer", "default": 1, "minimum": 1, "description": "Page number, for example 1." }, "sort": { "enum": [ "best_match", "price_low_to_high", "price_high_to_low", "top_rated", "newest" ], "type": "string", "default": "best_match", "description": "Sort results, for example price_low_to_high." }, "query": { "type": "string", "minLength": 1, "description": "Product words to search, for example 65 inch OLED TV." }, "max_price": { "type": "number", "minimum": 0, "description": "Maximum price in USD, for example 1500. Leave blank for no maximum." }, "min_price": { "type": "number", "minimum": 0, "description": "Minimum price in USD, for example 500. Leave blank for no minimum." }, "max_results": { "type": "integer", "default": 20, "maximum": 50, "minimum": 1, "description": "Products per page, for example 20 (up to 50)." } }}Output schema
{ "type": "object", "required": [ "products" ], "properties": { "products": { "type": "array", "items": { "type": "object", "properties": { "sku": { "type": [ "string", "null" ] }, "brand": { "type": [ "string", "null" ] }, "price": { "type": [ "number", "null" ] }, "savings": { "type": [ "number", "null" ] }, "currency": { "type": "string" }, "photo_link": { "type": [ "string", "null" ] }, "star_rating": { "type": [ "number", "null" ] }, "model_number": { "type": [ "string", "null" ] }, "product_link": { "type": [ "string", "null" ] }, "product_name": { "type": [ "string", "null" ] }, "regular_price": { "type": [ "number", "null" ] }, "available_to_buy": { "type": "boolean" }, "number_of_reviews": { "type": [ "integer", "null" ] }, "open_box_starting_price": { "type": [ "number", "null" ] } } } } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
bestbuy.com/search_products- Returns
- product name, brand, price, regular price, savings, open-box price, rating, reviews, availability, photo, link, SKU, model number
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method bestbuy.com/search_products with the inputs above.
Ask your agent
- Find 65 inch OLED TVs under 1500 dollars sorted by price low to high
- Show me the top rated noise cancelling headphones on Best Buy
- Search for gaming laptops between 800 and 1200 dollars, newest first
- I need a 2 slice toaster with a max price of 60, page 2 of results
- Look up wireless earbuds priced from 50 to 150 dollars, best match, 30 per page
See more
All Best Buy methodsChecks a Best Buy product's price, shipping estimate, and pickup availability at the stores nearest a US ZIP code, by product name or Best Buy product link. Availability can change before checkout.
bestbuy.com/check_store_stockSearches B&H Photo products by keywords, with optional price range and sort order, and returns prices, savings, stock, ratings, identifiers, images and links in site order. Exact category names fall back to phrase matching to show products.
bhphotovideo.com/search_productsSearches Newegg US for computer parts and electronics, with optional USD price range, seller restriction and sorting. Returns products in the order shown on the results page.
newegg.com/search_productsSearches Walmart products by keywords with optional sort and price range, returning prices, ratings, sellers and availability in Walmart's order. Uses Walmart's default location (no ZIP-based pricing).
walmart.com/search_productsSearch Nordstrom products by words, price, sale status and sort order. Prices are the lowest listed price. Available sizes may be empty when a product page is unavailable.
nordstrom.com/search_productsSearches Flipkart products by keyword, with an optional price range and sort order. Returns current listings in site order.
flipkart.com/search_productsSearches Kohl's products in site order and returns prices, offers, ratings and links for each result.
kohls.com/search_productsSearches Grainger industrial and facility supplies by words or Grainger item number and returns product details with public USD list prices in the order Grainger shows them. Words show the matching category, whose first 25 products are listed; an item number returns that product.
grainger.com/search_products