Best Buy API: Check store stock
Checks 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.
Unofficial. Not affiliated with or endorsed by Best Buy.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Product, required
product Product name or Best Buy product link, e.g. Apple AirPods Pro 3 or https://www.bestbuy.com/product/apple-airpods-pro-3-wireless-active-noise-cancelling-earbuds-with-heart-rate-sensing-feature-white/JJGCQLYK5F
Apple AirPods Pro 3
- Zip Code, required
zip_code US ZIP code, e.g. 60601
60601
- Max Stores optional
max_stores Maximum number of nearest stores, e.g. 10
10 (default)
Whole number from 1 to 20.
Input as JSON
{ "product": "Apple AirPods Pro 3", "zip_code": "60601"}Output
{ "sku": "6376563", "price": 249.99, "stores": [ { "address": "555 W Roosevelt Rd, Chicago, IL 60607", "store_id": "1142", "store_url": "https://stores.bestbuy.com/1142" , "store_name": "South Loop", "pickup_timing": "Ready within 1 hour", "distance_miles": 1.7, "pickup_available": true }, { "address": "1000 W North Ave, Chicago, IL 60642", "store_id": "323", "store_url": "https://stores.bestbuy.com/323" , "store_name": "North Avenue", "pickup_timing": "Ready within 1 hour", "distance_miles": 2.5, "pickup_available": true }, { "address": "2100 N Elston Ave, Chicago, IL 60614", "store_id": "814", "store_url": "https://stores.bestbuy.com/814" , "store_name": "Bucktown", "pickup_timing": "Ready within 1 hour", "distance_miles": 3.4, "pickup_available": true } ], "currency": "USD", "product_url": "https://www.bestbuy.com/product/apple-airpods-pro-3-wireless-active-noise-cancelling-earbuds-with-heart-rate-sensing-feature-white/JJGCQLYK5F" , "product_name": "Apple - AirPods Pro 3, Wireless Active Noise Cancelling Earbuds with Heart Rate Sensing Feature - White", "shipping_estimate": "Get it by Tue, Sep 29"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"bestbuy.com/check_store_stock","input":{"product":"Apple AirPods Pro 3","zip_code":"60601"}}' # 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/check_store_stock" , "input": { "product": "Apple AirPods Pro 3", "zip_code": "60601" }})# 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/check_store_stock" , "input": { "product": "Apple AirPods Pro 3", "zip_code": "60601" } }), 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/check_store_stock# with {"product":"Apple AirPods Pro 3","zip_code":"60601"}"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": [ "product", "zip_code" ], "properties": { "product": { "type": "string", "description": "Product name or Best Buy product link, e.g. Apple AirPods Pro 3 or https://www.bestbuy.com/product/apple-airpods-pro-3-wireless-active-noise-cancelling-earbuds-with-heart-rate-sensing-feature-white/JJGCQLYK5F" }, "zip_code": { "type": "string", "description": "US ZIP code, e.g. 60601" }, "max_stores": { "type": "integer", "default": 10, "maximum": 20, "minimum": 1, "description": "Maximum number of nearest stores, e.g. 10" } }}Output schema
{ "type": "object", "required": [ "product_name", "product_url", "price", "currency", "shipping_estimate", "sku", "stores" ], "properties": { "sku": { "type": "string", "description": "Best Buy product SKU" }, "price": { "type": [ "number", "null" ], "description": "Current price in US dollars" }, "stores": { "type": "array", "items": { "type": "object", "required": [ "store_name", "address", "distance_miles", "pickup_available", "pickup_timing", "store_url", "store_id" ], "properties": { "address": { "type": [ "string", "null" ] }, "store_id": { "type": "string" }, "store_url": { "type": "string" }, "store_name": { "type": "string" }, "pickup_timing": { "type": [ "string", "null" ] }, "distance_miles": { "type": "number" }, "pickup_available": { "type": "boolean" } } } }, "currency": { "type": "string", "description": "Price currency" }, "product_url": { "type": "string", "description": "Product page link" }, "product_name": { "type": "string", "description": "Best Buy product name" }, "shipping_estimate": { "type": [ "string", "null" ], "description": "Estimated shipping timing for the ZIP code" } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
bestbuy.com/check_store_stock- Returns
- product name, link, price, shipping estimate, SKU, nearest stores with address, distance, pickup availability and timing
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/check_store_stock with the inputs above.
Ask your agent
- Is the Nintendo Switch 2 available for pickup today at any Best Buy near 78704?
- Can I grab a PS5 Pro in store near ZIP 30309 this afternoon? Show me the 5 closest stores and how soon pickup is ready.
- Check price and local pickup for https://www.bestbuy.com/site/sony-wh-1000xm5-wireless-noise-canceling-over-the-ear-headphones-black/6505727.p around 98101, nearest 3 stores only
- How much is the Samsung 65" Odyssey OLED G9 monitor and when would it ship to 10013? Also which stores close by have it ready to pick up?
- Looking for the Apple iPad Air 13-inch M3 near 85281 — list up to 15 Best Buy locations with distance and whether I can pick it up, plus the SKU.
See more
All Best Buy methodsSearches 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.
bestbuy.com/search_productsChecks in-store pickup availability for an exact Apple product configuration (name or part number) near a ZIP, postal code or city, listing nearby Apple Stores by distance with their pickup messages. No reservation is made.
apple.com/check_store_pickupChecks a Target product's stock and pickup, drive-up and same-day delivery availability at the stores nearest a US ZIP code.
target.com/check_store_stockChecks a product's price and stock at IKEA stores in a country. Store stock and delivery options appear only where IKEA provides them.
ikea.com/check_store_stockGets a B&H Photo product's details by name, product link, or B&H number. A name uses the best matching search result; details and prices reflect the public page.
bhphotovideo.com/get_productFinds a Lowe's product by name, item number or product link and returns its details, price, specifications, images and availability at the nearest store for a ZIP code (or the site's default store).
lowes.com/get_productGets details, price and availability for a Walmart product by name or product link, using Walmart's default location.
walmart.com/get_productSearches a named Instacart store's guest-visible grocery products for a US ZIP code. Prices are in USD and can differ from in-store prices; stock estimates can change.
instacart.com/search_products