[Home](https://scrapfly.io/)/[Scrapers](https://scrapfly.io/scrapers)/Best Buy

Products · prices · search results · reviews

# // Best Buy Scraper API

Get Best Buy product details, prices, deals, stock status, specs, search results and customer reviews as clean JSON. Scrapfly handles the bot checks, so you send a URL and read the data.

- **Clone it and run it.** An open-source Best Buy scraper for product pages and their reviews, tested against live Best Buy every night.
- **Price, deal and stock status in one request.** Read the product data Best Buy embeds in each product page: current and regular price, cart status, rating, review count and specs.
 
 [Get free API key](https://scrapfly.io/register) [View GitHub scraper](https://github.com/scrapfly/scrapfly-scrapers/tree/main/bestbuy-scraper) [Read Unblocker docs](https://scrapfly.io/docs/scrape-api/unblocker) 

1,000 free credits. No credit card required.

 [  ](https://scrapeway.com/web-scraping-api/scrapfly) [  ](https://www.capterra.com/p/212653/Scrapfly/)  

 4.9/5 from 238 reviews 

 



 

 

 Best Buy pages · illustration

 

 

 Product JSON**Output**

```
{
  <span class="c-str">"sku"</span>: <span class="c-str">"6614313"</span>,
  <span class="c-str">"name"</span>: <span class="c-str">"Switch 2 System"</span>,
  <span class="c-str">"brand"</span>: <span class="c-str">"Nintendo"</span>,
  <span class="c-str">"price"</span>: <span class="c-num">499.99</span>,
  <span class="c-str">"regular_price"</span>: <span class="c-num">499.99</span>,
  <span class="c-str">"availability"</span>: <span class="c-str">"ADD_TO_CART"</span>,
  <span class="c-str">"rating"</span>: <span class="c-num">4.8</span>,
  <span class="c-str">"reviews"</span>: <span class="c-num">4400</span>
}
```

Printed by the Python request below[See the request ↓](#implementation)

  

What you can scrape from Best Buy

Four kinds of Best Buy data you can scrape with Scrapfly, no Best Buy account required.

 ## // Scrape Best Buy product details

Product name, brand, SKU, UPC, category path, condition, description, feature list, images and the full specification table, from screen size to warranty. Each product page also carries its question and answer counts with the first questions and their answers.

- skuId
- name
- brand
- upc
- hierarchy
- specificationGroups
- features
- images
- questionInfo

  ## // Scrape Best Buy prices, deals and stock status

The current price, regular price and savings in dollars and percent, the cart button state (for example `ADD_TO_CART` or `NOT_AVAILABLE`), the seller, and the new, open-box and refurbished buying options with their condition and link.

- customerPrice
- displayableRegularPrice
- totalSavings
- totalSavingsPercent
- buttonState
- seller
- buyingOptions

  ## // Scrape Best Buy search results

The SKU of every product on a results page in rank order, about 18 per page, plus the total match count, the filters with their counts and the sort options. Add `&cp=2` to the search URL for the next page, then request each SKU's product page for price, stock and specs.

- skuId
- numFound
- facets
- sortOptions
- cp

  ## // Scrape Best Buy reviews

Best Buy's reviews endpoint returns 20 reviews per page as JSON: star rating, title, review text, date, recommended flag, helpful votes, verified-purchase badge and photos, with the star distribution and the total page count. Product pages add the average rating, review count and Best Buy's AI review summary.

- rating
- title
- text
- submissionTime
- recommended
- positiveFeedbackCount
- badges
- distribution
- totalPages

  



Reliability

## // Get past Best Buy's Akamai check

Best Buy runs Akamai Bot Manager in front of BestBuy.com. A plain request from a datacenter IP can get the "Select your Country" page instead of the product, or have its connection reset before the page arrives. Use Unblocker (formerly ASP) with US residential proxies for product, search and review requests.

`unblocker=true`Enable Scrapfly's [Unblocker](https://scrapfly.io/products/unblocker) for Best Buy's Akamai check.



`proxy_pool=residential`Send requests through residential proxies, with `country=US` for BestBuy.com.



`productBySkuId`Product data sits in the page's embedded Apollo data. Check for it before parsing, so a country page never reaches your dataset.



 



Choose your tools

## // Scrapfly products for Best Buy scraping

Start with the Web Scraping API, Unblocker and residential proxies. Add a product extraction model, screenshots, a browser session or a URL-list crawl as your workflow needs them. One API key covers all five products.

 ### Web Scraping API for Best Buy

Fetch product, search and review URLs with Unblocker and residential proxies. Product data comes in the page HTML, ready to parse.

Read the embedded `productBySkuId` data for price, regular price, cart status, specs, Q&amp;A and review stats. The reviews endpoint answers in JSON.

 

```
GET /scrape?url=https://www.bestbuy.com/site/6614313.p&unblocker=true&proxy_pool=residential&country=US
```

 [Explore Web Scraping API →](https://scrapfly.io/products/web-scraping-api)  ### Data Extraction API for Best Buy products

Add `extraction_model=product` for a standard product record, with no parser to write.

Get name, brand, SKU, price, currency, availability, rating, review count, specifications, category breadcrumbs and a sample of reviews in the same schema you use for other stores.

 

```
GET /scrape?url=https://www.bestbuy.com/site/6614313.p&unblocker=true&proxy_pool=residential&country=US&extraction_model=product
```

 [Explore Data Extraction API →](https://scrapfly.io/products/extraction-api)  ### Screenshot API for Best Buy products

Capture the product page with its photos, price, rating and cart button. Keep a dated visual record alongside your JSON.

Set `timeout=90000` to allow time for Best Buy's checks and the screenshot render.

 

```
GET /screenshot?url=https://www.bestbuy.com/site/6614313.p&country=us&capture=fullpage&format=png&timeout=90000
```

 [Explore Screenshot API →](https://scrapfly.io/products/screenshot-api)  ### Cloud Browser API for Best Buy sessions

Call the Cloud Browser Unblock API with a Best Buy URL to get a hosted Chromium session that is already past the Akamai check.

Connect Playwright or Puppeteer to the returned `ws_url`, open the product page and read the rendered price, rating and cart button.

 

```
POST https://browser.scrapfly.io/unblock?key=KEY {"url": "https://www.bestbuy.com/site/6614313.p", "country": "us"}
```

 [Explore Cloud Browser API →](https://scrapfly.io/products/cloud-browser-api)  ### Crawler API for lists of Best Buy URLs

Submit a list of product URLs as one bounded job, with Unblocker and residential proxies applied to the requests.

Ask for HTML output and parse the embedded product data after the job finishes.

- url\_list
- unblocker
- proxy\_pool
- country
- content\_formats

 [Explore Crawler API →](https://scrapfly.io/products/crawler-api)  



One request

## // Fetch a Best Buy product and read its price and stock status

The JSON at the top is what this code prints for the Nintendo Switch 2 on Best Buy: one request, then selected fields from the page's embedded product data.

Install `scrapfly-sdk` and replace the key below. The example uses only the SDK and Python's standard library.

**Prefer the full scraper?** The open-source [Best Buy scraper on GitHub](https://github.com/scrapfly/scrapfly-scrapers/tree/main/bestbuy-scraper) covers product pages with their reviews and Q&amp;A in Python 3.10. It runs against live Best Buy every night. Clone it, set `SCRAPFLY_KEY`, and run `poetry run python run.py`.

 

 Python · scrapfly-sdkscrape + parse

```
<span class="c-key">import</span> json
<span class="c-key">import</span> re
<span class="c-key">from</span> scrapfly <span class="c-key">import</span> ScrapeConfig, ScrapflyClient

SKU = <span class="c-str">"6614313"</span>
client = ScrapflyClient(key=<span class="c-str">"YOUR_SCRAPFLY_KEY"</span>)
result = client.scrape(ScrapeConfig(
    f"https://www.bestbuy.com/site/{SKU}.p",
    unblocker=<span class="c-key">True</span>,
    proxy_pool=<span class="c-str">"residential"</span>, country=<span class="c-str">"US"</span>,
))
html = result.content.replace(<span class="c-str">":undefined"</span>, <span class="c-str">":null"</span>)
decoder, product = json.JSONDecoder(), {}
<span class="c-key">for</span> match <span class="c-key">in</span> re.finditer(<span class="c-str">r"\.push\((?=\{)"</span>, html):
    <span class="c-key">try</span>:
        payload, _ = decoder.raw_decode(html, match.end())
    <span class="c-key">except</span> ValueError:
        <span class="c-key">continue</span>
    <span class="c-key">for</span> event <span class="c-key">in</span> payload.get(<span class="c-str">"events"</span>) <span class="c-key">or</span> []:
        data = (event.get(<span class="c-str">"value"</span>) <span class="c-key">or</span> {}).get(<span class="c-str">"data"</span>) <span class="c-key">or</span> {}
        part = data.get(<span class="c-str">"productBySkuId"</span>) <span class="c-key">or</span> {}
        <span class="c-key">if</span> part.get(<span class="c-str">"skuId"</span>) != SKU:
            <span class="c-key">continue</span>
        <span class="c-key">for</span> key, value <span class="c-key">in</span> part.items():
            <span class="c-key">if</span> isinstance(value, dict):
                product.setdefault(key, {}).update(value)
            <span class="c-key">else</span>:
                product.setdefault(key, value)
<span class="c-key">if</span> <span class="c-key">not</span> product:
    <span class="c-key">raise</span> RuntimeError(<span class="c-str">"Best Buy returned no product data"</span>)
price, reviews = product[<span class="c-str">"price"</span>], product[<span class="c-str">"reviewInfo"</span>]
buttons = product[<span class="c-str">"fulfillmentOptions"</span>][<span class="c-str">"buttonStates"</span>]
item = {
    <span class="c-str">"sku"</span>: product[<span class="c-str">"skuId"</span>],
    <span class="c-str">"name"</span>: product[<span class="c-str">"name"</span>][<span class="c-str">"short"</span>],
    <span class="c-str">"brand"</span>: product[<span class="c-str">"brand"</span>],
    <span class="c-str">"price"</span>: price[<span class="c-str">"customerPrice"</span>],
    <span class="c-str">"regular_price"</span>: price[<span class="c-str">"displayableRegularPrice"</span>],
    <span class="c-str">"availability"</span>: buttons[<span class="c-num">0</span>][<span class="c-str">"buttonState"</span>],
    <span class="c-str">"rating"</span>: reviews[<span class="c-str">"averageRating"</span>],
    <span class="c-str">"reviews"</span>: reviews[<span class="c-str">"reviewCount"</span>],
}
print(json.dumps(item, indent=<span class="c-num">2</span>))
```

 

 



What the data is used for

## // Common Best Buy scraping use cases

### Price monitoring

Track current price, regular price and savings for a list of products, keyed on the SKU.



### Deal tracking

Spot markdowns during sales events from the savings in dollars and percent.



### Stock alerts

Watch the cart button state to see when a product can be bought online.



### Assortment research

Collect ranked SKUs, match counts and filter counts for the search terms you care about.



### Review analysis

Read star ratings, review text and the recommended flag across review pages.



### Product data enrichment

Fill product records with specs, UPCs, images, features and category paths.



 



Common questions

## // Best Buy scraping FAQ

 Is scraping Best Buy legal?There is no universal answer. Legality depends on your jurisdiction, the data, the access method and how you use the result. Keep the workflow to public product, search and review pages, avoid signed-in content such as accounts and carts, treat reviewer nicknames as personal data, review Best Buy's terms of use, and get legal advice for commercial use.

 Does Best Buy have an API?Best Buy runs its own developer API for products, stores and categories, which needs a Best Buy API key. The requests on this page read public BestBuy.com pages signed out, so you only need a Scrapfly API key, not Best Buy API access.

 Why does Best Buy show "Select your Country"?Best Buy can answer a request from a datacenter IP with its country picker, or reset the connection, instead of returning the product. Set `unblocker=true`, `proxy_pool=residential` and `country=US`. Check that the response contains the embedded product data before parsing it.

 Can I scrape Best Buy prices and deals?Yes. A product page embeds the current price, regular price, savings in dollars and percent and the cart button state. These are Best Buy's online prices and change during sales, so store the scrape date with each value.

 Can I scrape Best Buy search results?Yes. A search page lists the SKU of each product in rank order, about 18 per page, with the total match count, filters and sort options. Add `&cp=2` for the next page, then request each SKU's product page for price, stock and specs.

 Can I scrape Best Buy reviews?Yes. Best Buy's reviews endpoint, `https://www.bestbuy.com/ugc/v2/<wbr>reviews?<wbr>page=1&<wbr>pageSize=20&<wbr>sku=SKU&<wbr>sort=MOST_RECENT</wbr></wbr></wbr></wbr></wbr>`, returns 20 reviews per page as JSON with rating, title, text, date, recommended flag and helpful votes, plus the star distribution and the total page count. Fetch it with the same Unblocker settings.

 How much does scraping Best Buy cost?A product, search or reviews request with Unblocker and residential proxies costs 25 credits. The product extraction model adds credits based on the response size. Every account starts with 1,000 free credits.

 What are the rate limits when scraping Best Buy?Scrapfly sets no Best Buy-specific limit. Your maximum parallelism is the concurrency quota on your plan, or a lower cap configured for the project. Each in-flight request uses one slot until it finishes.

 



Start with one request

## Fetch the URL. Read the JSON.

Web Scraping API with Unblocker and residential proxies, one call per Best Buy URL.

Proxies across 190+ countries

 [Best Buy scraper on GitHub](https://github.com/scrapfly/scrapfly-scrapers/tree/main/bestbuy-scraper) [How to scrape Best Buy](https://scrapfly.io/blog/posts/how-to-scrape-bestbuy-product-offer-and-review-data) [All scraper pages](https://scrapfly.io/scrapers) 

 

 [Get free API key](https://scrapfly.io/register) [Read the docs](https://scrapfly.io/docs/scrape-api/unblocker)