# 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/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 US Product Scraper

Collect normalized Best Buy US product data for price monitoring, product research, catalog enrichment, and competitor analysis.

The Actor returns clean Dataset rows and writes a machine-readable run summary to the `OUTPUT` key-value-store record.

### What you can collect

- Product search results
- Products from a public Best Buy category
- One product by URL or SKU
- A bounded connectivity diagnostic

Typical product fields include SKU, name, brand, regular and current price, savings, images, rating, review count, availability, badges, and source URL.

### Quick start

Search for laptops:

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

Browse a category:

```json
{
  "operation": "category",
  "url": "https://www.bestbuy.com/site/all-laptops/pcmcat138500050001.c?id=pcmcat138500050001",
  "limit": 10,
  "proxy": "auto"
}
```

Get product details:

```json
{
  "operation": "item",
  "url": "https://www.bestbuy.com/product/example/sku/1234567",
  "proxy": "auto"
}
```

### Connection routes

`auto` and `direct` use the cheapest verified route. Best Buy frequently stalls plain HTTP requests, so the Actor can use a bounded browser fallback.

Apify datacenter, residential, and account-enabled special proxy routes are available for diagnostics or workloads that need a specific route. All tested tiers can reach product search through the browser fallback, but they add proxy cost without improving the current result rate, so they are not the default.

Custom proxy credentials are treated as secrets and are not written to Dataset or `OUTPUT`.

### Output

Successful runs store product or category rows in the default Dataset. `OUTPUT` contains:

```json
{
  "source": "bestbuy",
  "operation": "search",
  "status": "success",
  "success": true,
  "total": 10,
  "errors": [],
  "proxy": {
    "requested": "auto",
    "effective": "direct"
  }
}
```

### Use with n8n / Make

A practical workflow is:

1. Start the Actor through the Apify API.
2. Wait until the run reaches a terminal state.
3. Read `OUTPUT` and continue only when `success` is `true`.
4. Fetch items from the run's default Dataset.
5. Send rows to Google Sheets, Airtable, a CRM, or a price-change notification flow.

Start a run:

```bash
curl -X POST "https://api.apify.com/v2/acts/dromb~best-buy-scraper/runs?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"operation":"search","query":"gaming laptop","limit":10,"proxy":"auto"}'
```

Fetch Dataset items after completion:

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

### Notes

- Public Best Buy US pages only.
- No login, cart, checkout, CAPTCHA solving, or private account data.
- Website changes and anti-bot controls can affect runtime.
- This Actor is unofficial and is not affiliated with Best Buy.

# 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`):

Auto uses the cheapest working direct route. Choose an Apify tier only if your use case needs it.

## `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("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=dromb/best-buy-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/01iXq4Bwk9bfqWutq/builds/AyB7s5c3C8t00knfV/openapi.json
