# Best Buy US Product Scraper (`dromb/best-buy-scraper`) Actor

Extract Best Buy US search results, category listings, and product details for price monitoring, research, and product discovery.

- **URL**: https://apify.com/dromb/best-buy-scraper.md
- **Developed by:** [Dmitriy Gyrbu](https://apify.com/dromb) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.40 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#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 US Products & Prices Scraper

Collect Best Buy products, prices, ratings, availability, and category listings in a clean, analysis-ready format. Use the data for price monitoring, competitor research, assortment tracking, product discovery, and ecommerce workflows.

This is an unofficial Actor and is not affiliated with or endorsed by Best Buy.

### What you can do

- Search the Best Buy catalogue by keyword
- Collect products from a Best Buy category
- Track current and regular prices
- Compare ratings, reviews, brands, and availability
- Export product data to JSON, CSV, Excel, Google Sheets, or your own application

### Popular use cases

- Monitor laptop, appliance, gaming, and electronics prices
- Discover new products in a category
- Compare competing brands and product ranges
- Build product feeds and research datasets
- Power alerts, dashboards, and scheduled reporting

### Quick start

Search for products:

```json
{
  "operation": "search",
  "query": "gaming laptop",
  "limit": 20
}
```

Collect a category:

```json
{
  "operation": "category",
  "url": "https://www.bestbuy.com/site/laptops/all-laptops/pcmcat138500050001.c",
  "limit": 20
}
```

Look up a product when its page is publicly available:

```json
{
  "operation": "item",
  "sku": "6673811"
}
```

### Input guide

| Operation | Required input | Optional input |
| --- | --- | --- |
| `search` | `query` | `page`, `limit`, `proxy` |
| `category` | Best Buy category `url` | `page`, `limit`, `proxy` |
| `item` | Product `sku` or `url` | `proxy` |

For most runs, keep `proxy` set to `auto`. It tries a short direct request first and automatically falls back to a bounded US residential route when Best Buy blocks Apify cloud egress.

### Output

Each product is saved as a separate Dataset item. Depending on the page, fields can include:

- Product ID and SKU
- Name and brand
- Current and regular price
- Savings and promotional badges
- Rating and review count
- Availability
- Product image and URL

Empty fields are omitted, making the Dataset easy to use in spreadsheets, databases, and automation tools.

### Automation and export

Run the Actor manually, through the Apify API, or on a schedule. After each run, open the Dataset and export the results as JSON, CSV, Excel, XML, or RSS. You can also connect the Actor to Make, n8n, Google Sheets, Airtable, Slack, or a custom webhook.

### Good to know

- Search and category collection are the most reliable workflows.
- Individual product pages can occasionally be unavailable because Best Buy applies stricter access controls to them.
- Prices and availability may change by time and location.
- Collect only public data and use it in accordance with applicable laws and the retailer's terms.

# Actor input Schema

## `operation` (type: `string`):

Choose the data you want to collect.

## `query` (type: `string`):

Required for Search products.

## `url` (type: `string`):

A full public Best Buy product or category URL.

## `sku` (type: `string`):

Best Buy SKU for Product details. A full product URL is also accepted.

## `page` (type: `integer`):

One-based page for search and category operations.

## `limit` (type: `integer`):

Maximum number of Dataset rows.

## `proxy` (type: `string`):

Access strategy. `auto` tries direct first, then a bounded US residential fallback if direct Apify cloud egress is blocked.

## `proxyCountry` (type: `string`):

Optional two-letter country code. US is used by default for residential and special routes.

## `specialProxyGroup` (type: `string`):

Optional account-enabled special group. The account's BUYPROXIES94952 group is the current default.

## `customProxyUrl` (type: `string`):

Required only for Custom proxy. Credentials are never written to Dataset or OUTPUT.

## Actor input object example

```json
{
  "operation": "search",
  "query": "laptop",
  "page": 1,
  "limit": 10,
  "proxy": "auto"
}
```

# Actor output Schema

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

Products or categories returned by the selected operation.

## `summary` (type: `string`):

Run status, result count, errors, and the selected connection route.

# 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 = {
    "query": "laptop"
};

// Run the Actor and wait for it to finish
const run = await client.actor("dromb/best-buy-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 = { "query": "laptop" }

# Run the Actor and wait for it to finish
run = client.actor("dromb/best-buy-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 '{
  "query": "laptop"
}' |
apify call dromb/best-buy-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,dromb/best-buy-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/01iXq4Bwk9bfqWutq/builds/bygCWD9EJBqSeUg7a/openapi.json
