# Best Buy Product Scraper - Prices, Deals & Ratings (`scrapers_lat/bestbuy-scraper`) Actor

Scrape Best Buy US products by search, category or URL. Get SKU, name, brand, model, price, regular price, sale savings, availability, rating, key specs and image. Export to JSON, CSV or Excel.

- **URL**: https://apify.com/scrapers\_lat/bestbuy-scraper.md
- **Developed by:** [Scrapers Lat](https://apify.com/scrapers_lat) (community)
- **Categories:** E-commerce, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $18.91 / 1,000 product results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

[![Best Buy Product Scraper - Prices, Deals & Ratings](https://scrapers.lat/banners/bestbuy-scraper.png)](https://console.apify.com/actors/kjv0Y6Yz1SdDn2aTF/input)

## Best Buy Product Scraper - Prices, Deals & Ratings

Here is one real result, with every field the actor returns:

```json
{
  "sku": "6673811",
  "name": "Lenovo - IdeaPad Slim 3 Chromebook - 14\" 2K Touchscreen Laptop - MediaTek Kompanio 540 2025 - 4GB Memory - 64GB eMMC - Cosmic Blue",
  "brand": "Lenovo",
  "modelNumber": "83SX0000US",
  "price": 189,
  "regularPrice": 419,
  "priceCurrency": "USD",
  "onSale": true,
  "savings": 230,
  "savingsPercent": 54,
  "availability": "In Stock",
  "inStock": true,
  "shippingEligible": true,
  "storePickup": true,
  "customerRating": 4.6,
  "ratingCount": 51,
  "category": "Chromebook, Laptop Computer",
  "condition": "new",
  "openBox": false,
  "shortDescription": null,
  "keySpecs": null,
  "specifications": null,
  "specCount": null,
  "description": null,
  "warranty": null,
  "images": null,
  "imageCount": null,
  "aiOneLiner": null,
  "aiProsCons": null,
  "aiBestFor": null,
  "aiValueAssessment": null,
  "imageUrl": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/a69588e3-2c25-4d64-bed1-e855f4fed90d.jpg",
  "productUrl": "https://www.bestbuy.com/product/lenovo-ideapad-slim-3-chromebook-14-2k-touchscreen-laptop-mediatek-kompanio-540-2025-4gb-memory-64gb-emmc-cosmic-blue/JJGH3QCJKR",
  "searchQuery": "laptop",
  "source": "bestbuy.com",
  "observedAt": "2026-08-20T08:36:55.177Z"
}
```

The most complete Best Buy scraper available. It returns every field a Best Buy US listing exposes, from SKU, name, brand and model number to current and regular price, and adds derived fields such as onSale, savings and savingsPercent, live availability (in stock, shipping eligible, store pickup), customer rating and rating count. Five filters let you target exactly the products you need, with opt-in add-ons for the full specifications table and an AI product summary.

**[Input](https://apify.com/scrapers_lat/bestbuy-scraper/input-schema) · [Output](https://apify.com/scrapers_lat/bestbuy-scraper/output-schema) · [Pricing](https://apify.com/scrapers_lat/bestbuy-scraper/pricing) · [Examples](https://apify.com/scrapers_lat/bestbuy-scraper/examples)**

![Platform](https://img.shields.io/badge/platform-Apify-blue) ![Coverage](https://img.shields.io/badge/coverage-Best%20Buy%20US-brightgreen) ![Output](https://img.shields.io/badge/output-JSON%20%7C%20CSV%20%7C%20Excel-orange) ![Billing](https://img.shields.io/badge/billing-Pay%20per%20result-purple)

### Table of contents

- [What it does](#what-it-does)
- [Quickstart](#quickstart)
- [Input reference](#input-reference)
- [Output reference](#output-reference)
- [Example output record](#example-output-record)
- [Run via API and CLI](#run-via-api-and-cli)
- [Fetch results](#fetch-results)
- [Billing and limits](#billing-and-limits)
- [FAQ and troubleshooting](#faq-and-troubleshooting)
- [More scrapers at scrapers.lat](#more-scrapers-at-scraperslat)

### What it does

This actor collects product data from the Best Buy US storefront. Give it a search query, a category, or a list of product URLs and it returns clean, flat records for each product: identifiers (SKU, model number), pricing (current price, regular price, sale savings and percent), availability (in stock, shipping eligible, store pickup), ratings (average and count), category, condition, open-box flag and the primary image.

Two optional, paid add-ons deepen each record:

- Full specifications: fetches the product detail page and returns the complete specifications table, key specs, all images, the full description and warranty.
- AI product summary: adds a one-line summary, pros and cons, ideal buyer and a value assessment.

You get results in JSON, CSV or Excel. Empty runs are never charged.

### Quickstart

```json
{
  "searchQuery": "laptop",
  "minPrice": 200,
  "maxPrice": 800,
  "sortBy": "Best Selling",
  "maxResults": 25
}
```

Paste that into the input, click Start, and read the results from the dataset.

### Input reference

| Name | Type | Required | Description | Example |
| --- | --- | --- | --- | --- |
| searchQuery | string | no | What to search for on Best Buy US. | `"laptop"` |
| category | string | no | A category name to add to the search, or a full Best Buy category page URL to scrape directly. | `"headphones"` |
| minPrice | integer | no | Keep only products priced at or above this amount (USD). | `200` |
| maxPrice | integer | no | Keep only products priced at or below this amount (USD). | `800` |
| productUrls | array | no | One or more Best Buy product page URLs to scrape directly. | `["https://www.bestbuy.com/product/.../6673811"]` |
| sortBy | string | no | Best Match, Price Low to High, Price High to Low, Best Selling, or Customer Rating. | `"Best Selling"` |
| maxResults | integer | no | Maximum products to collect. Free plans are capped at 10. | `25` |
| fullSpecs | boolean | no | Paid add-on, off by default. Adds the full specifications table, all images, description and warranty. | `false` |
| aiProductSummary | boolean | no | Paid add-on, off by default. Adds an AI summary, pros and cons, ideal buyer and value assessment. | `false` |

### Output reference

| Name | Type | Description |
| --- | --- | --- |
| sku | string | Best Buy SKU id |
| name | string | Product name |
| brand | string | Brand |
| modelNumber | string | Manufacturer model number |
| price | number | Current price in USD |
| regularPrice | number | Regular (list) price in USD |
| priceCurrency | string | Currency code |
| onSale | boolean | Whether the product is currently discounted |
| savings | number | Dollar amount saved vs regular price |
| savingsPercent | number | Percent saved vs regular price |
| availability | string | Availability status (In Stock, Sold Out, Pre-Order, etc.) |
| inStock | boolean | Whether the product can be added to cart |
| shippingEligible | boolean | Whether shipping is available |
| storePickup | boolean | Whether in-store pickup is available |
| customerRating | number | Average customer rating (1 to 5) |
| ratingCount | integer | Number of customer ratings |
| category | string | Product category |
| condition | string | Product condition |
| openBox | boolean | Whether an open-box option applies |
| shortDescription | string | Short description (full specs add-on) |
| keySpecs | array | A few highlighted specs (full specs add-on) |
| specifications | array | Full specifications table as name: value strings (full specs add-on) |
| specCount | integer | Number of specifications captured (full specs add-on) |
| description | string | Full product description (full specs add-on) |
| warranty | string | Warranty info (full specs add-on) |
| images | array | All product image URLs (full specs add-on) |
| imageCount | integer | Number of images captured (full specs add-on) |
| aiOneLiner | string | AI one-line summary (AI add-on) |
| aiProsCons | array | AI pros and cons (AI add-on) |
| aiBestFor | string | AI ideal buyer or use case (AI add-on) |
| aiValueAssessment | string | AI value assessment (AI add-on) |
| imageUrl | string | Primary product image URL |
| productUrl | string | Best Buy product page URL |
| searchQuery | string | Search query that produced this product |
| source | string | Data source |
| observedAt | string | ISO timestamp collected |

### Example output record

```json
{
  "sku": "6668952",
  "name": "Dell - 15.6\" 2K Touchscreen Laptop - Intel 13th Generation Core i7 1355U 2023 - 16GB Memory - 512 GB Storage - Carbon Black",
  "brand": "Dell",
  "modelNumber": "LDC15250-7427BLK-PUS",
  "price": 599.99,
  "regularPrice": 1099.99,
  "priceCurrency": "USD",
  "onSale": true,
  "savings": 500,
  "savingsPercent": 45,
  "availability": "In Stock",
  "inStock": true,
  "shippingEligible": true,
  "storePickup": true,
  "customerRating": 4.7,
  "ratingCount": 220,
  "category": "Laptop Computer",
  "condition": "new",
  "openBox": false,
  "imageUrl": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/7f4ab98f-7332-4e52-a474-70cb1c990d27.jpg",
  "productUrl": "https://www.bestbuy.com/product/dell-15-6-2k-touchscreen-laptop-intel-13th-generation-core-i7-1355u-2023-16gb-memory-512-gb-storage-carbon-black/J3K4L6QW5C",
  "searchQuery": "laptop",
  "source": "bestbuy.com",
  "observedAt": "2026-08-20T08:36:55.309Z"
}
```

### Run via API and CLI

Start a run with the Apify API:

```bash
curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~bestbuy-scraper/runs?token=YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"searchQuery":"airpods","maxResults":25}'
```

Or with the Apify CLI:

```bash
apify call scrapers_lat/bestbuy-scraper --input '{"searchQuery":"airpods","maxResults":25}'
```

### Fetch results

```bash
curl "https://api.apify.com/v2/datasets/DATASET_ID/items?token=YOUR_TOKEN&format=json"
```

Swap `format=json` for `csv` or `xlsx` to export a spreadsheet.

### Billing and limits

- Pay per result: you are charged per product returned, plus a small one-time actor start event.
- Add-ons are billed only when they succeed: the full specifications event is charged only when a real spec table is returned, and the AI summary event only when the model returns a usable summary.
- Never charged on failure: empty runs and failed fetches produce no billable results.
- Free Apify plans are capped at 10 products per run, and the paid add-ons are disabled on free plans.
- Spend cap: set a maximum total charge on the run and the actor stops returning billable results once that cap is reached.

### FAQ and troubleshooting

**Which Best Buy site does it cover?** The Best Buy US storefront (bestbuy.com).

**No results?** Check your search query spelling and widen your price filters. Very narrow queries can return few products.

**Can I scrape specific products?** Yes. Put one or more Best Buy product page URLs in productUrls.

**Do I need a proxy or any login?** No. The actor handles fetching and anti-bot internally. You never configure a proxy or provide cookies.

**How current is the data?** Every record is fetched live at run time and stamped with observedAt.

### More scrapers at scrapers.lat

Browse the full catalog of e-commerce, business and lead-generation scrapers at [scrapers.lat](https://scrapers.lat).

This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Best Buy.

# Actor input Schema

## `searchQuery` (type: `string`):

What to search for on Best Buy US, for example a product type or model (laptop, airpods, 65 inch tv, ps5). Leave empty if you use a category or product URLs.

## `category` (type: `string`):

Optional. A Best Buy category name to add to the search (headphones, refrigerators), or a full Best Buy category page URL to scrape directly.

## `minPrice` (type: `integer`):

Only keep products priced at or above this amount. Leave empty for no minimum.

## `maxPrice` (type: `integer`):

Only keep products priced at or below this amount. Leave empty for no maximum.

## `productUrls` (type: `array`):

Optional. One or more Best Buy product page URLs to scrape directly instead of, or in addition to, a search.

## `sortBy` (type: `string`):

Order in which Best Buy returns search results.

## `maxResults` (type: `integer`):

Maximum number of products to collect across the whole run. Free Apify plans are capped at 10 per run.

## `fullSpecs` (type: `boolean`):

Fetch each product detail page to add the full specifications table, all images, the full description and warranty. Charged only when a real spec table is returned. Disabled on free plans.

## `aiProductSummary` (type: `boolean`):

Use AI to add a one-line summary, pros and cons, ideal buyer and a value assessment for each product. Charged only when a usable summary is returned. Disabled on free plans.

## Actor input object example

```json
{
  "searchQuery": "laptop",
  "productUrls": [],
  "sortBy": "Best Match",
  "maxResults": 10,
  "fullSpecs": false,
  "aiProductSummary": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchQuery": "laptop",
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapers_lat/bestbuy-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchQuery": "laptop",
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapers_lat/bestbuy-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchQuery": "laptop",
  "maxResults": 10
}' |
apify call scrapers_lat/bestbuy-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapers_lat/bestbuy-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/kjv0Y6Yz1SdDn2aTF/builds/BNMwTNq3xUtaOMmdF/openapi.json
