Best Buy APIbestbuy.com ↗
Search Best Buy's product catalog, retrieve pricing and stock status, get autocomplete suggestions, and discover trending searches via a single structured API.
What is the Best Buy API?
This API covers Best Buy's product catalog across 5 endpoints, returning structured data on pricing, ratings, stock status, and seller information. The get_product_availability endpoint verifies live availability for a specific product URL, including stock status, seller name, shipping eligibility, and category path. Other endpoints handle keyword search, bulk SKU lookups, autocomplete suggestions, and trending search terms.
curl -X GET 'https://api.parse.bot/scraper/1dd5e688-acde-43bc-9964-06196a17ba30/search_products?limit=5&query=laptop' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for products on Best Buy by keyword. Returns product details including name, rating, reviews, image, and URL. Results are sourced from Best Buy's suggest system which returns the most relevant products for a query. Also returns spell-check information and related search suggestions. Pricing fields (current_price, regular_price, savings_amount) may be null for some products depending on upstream availability.
| Param | Type | Description |
|---|---|---|
| limit | integer | Maximum number of products to return (1-50) |
| queryrequired | string | Search keyword (e.g., 'laptop', 'samsung tv', 'macbook air') |
{
"type": "object",
"fields": {
"query": "string - the search query",
"products": "array of product objects with sku_id, name, url, image_url, rating, review_count, current_price, regular_price, savings_amount, on_sale, brand, condition, purchasable",
"spell_check": "object with original_query, corrected_query, correctly_spelled",
"suggestions": "array of suggestion objects with term and categories",
"total_products": "integer - number of products returned"
},
"sample": {
"data": {
"query": "laptop",
"products": [
{
"url": "https://www.bestbuy.com/product/hp-14-laptop-intel-n150-processor-4gb-memory-128gb-ufs-sky-blue/JJGW3FGFSK",
"name": "HP - 14\" Laptop - Intel N150 Processor - 4GB Memory - 128GB UFS - Sky Blue",
"brand": null,
"rating": 4.4,
"sku_id": "12349297",
"on_sale": null,
"condition": null,
"image_url": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/756eb7cd-8251-4d41-a7ab-2b07498dd7b3.jpg",
"purchasable": null,
"review_count": 100,
"current_price": null,
"regular_price": null,
"savings_amount": null
}
],
"spell_check": {
"original_query": "laptop",
"corrected_query": "",
"correctly_spelled": true
},
"suggestions": [
{
"term": "laptop",
"categories": [
{
"id": "pcmcat247400050000",
"name": "Windows Laptops"
}
]
}
],
"total_products": 5
},
"status": "success"
}
}About the Best Buy API
Search and Discovery
The search_products endpoint accepts a query string and an optional limit (1–50) and returns an array of product objects, each with sku_id, name, url, image_url, rating, review_count, current_price, regular_price, and savings_amount. The response also includes a spell_check object (original_query, corrected_query, correctly_spelled) and a suggestions array with related terms and categories — useful for surfaces where you want to show corrections alongside results.
The search_suggestions endpoint is suited for autocomplete scenarios. Given a query and optional count (1–20), it returns suggestion objects that include term, categories, product_sku_ids, and product_count. The get_popular_searches endpoint requires no inputs and returns the current popular_terms array — a list of trending queries that can feed discovery or category-browsing features.
Product Details and Bulk Lookups
get_product_details accepts a comma-separated list of up to 50 SKU IDs (sourced from search results or suggestions) and returns matching product objects with the same pricing and rating fields. Note that current_price and related pricing fields may be null depending on upstream availability for a given SKU.
Live Availability Checks
get_product_availability takes a full Best Buy product page URL and an optional zip_code (5-digit US ZIP for shipping eligibility evaluation). It returns a single record containing sku_id, bsin (product-family identifier shared across variants), brand, condition, seller_name, stock_status, current_price in USD, category, and a full category_path from the site root. For first-party listings, seller_name is 'Best Buy'; marketplace sellers get their own name. If stock_status is UNKNOWN, the error field explains why.
The Best Buy API is a managed, monitored endpoint for bestbuy.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when bestbuy.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official bestbuy.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Monitor price drops on specific SKUs by polling
get_product_detailsand comparingcurrent_priceagainstregular_price. - Build a product search widget using
search_suggestionsto power autocomplete as users type. - Check whether a product is in stock and who the seller is before surfacing it in a price-comparison tool, using
get_product_availability. - Seed a trending-products feature by pulling
popular_termsfromget_popular_searchesand running each throughsearch_products. - Validate and enrich a list of SKUs in bulk using
get_product_detailswith up to 50 comma-separated IDs per request. - Detect marketplace vs. first-party listings by inspecting the
seller_namefield returned byget_product_availability. - Identify spelling errors in user-submitted search queries by checking the
spell_checkobject insearch_productsresponses.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Best Buy have an official developer API?+
What does `get_product_availability` return that `get_product_details` does not?+
get_product_availability returns fields specific to fulfillment and listing context: stock_status, seller_name, condition, bsin (the product-family identifier), category_path, brand, and shipping eligibility evaluated against an optional ZIP code. get_product_details focuses on catalog metadata — name, image, rating, review count, and pricing — and accepts up to 50 SKUs at once rather than a single product URL.Are store-level inventory counts or in-store pickup availability included?+
stock_status and shipping availability for a given ZIP code, but does not break down inventory by individual store location or expose in-store pickup status. You can fork the API on Parse and revise it to add a store-availability endpoint.Can I retrieve customer review text or individual review content?+
rating and review_count fields at the product level but does not return individual review text, reviewer names, or per-review scores. You can fork the API on Parse and revise it to add a review-content endpoint.How should I handle null pricing fields in `get_product_details` responses?+
current_price, regular_price, and savings_amount can be null for some SKUs when pricing data is unavailable for that listing. Code defensively against nulls in these fields. If live pricing is critical, get_product_availability fetches a single product URL and returns current_price with a currency field in a dedicated availability record.