# Best Buy Product Scraper (`sian.agency/best-buy-product-scraper`) Actor

Scrape Best Buy products — price, ratings, reviews, images, specs & availability. Keyword or category search, full detail enrichment, clean JSON/CSV, no code.

- **URL**: https://apify.com/sian.agency/best-buy-product-scraper.md
- **Developed by:** [SIÁN OÜ](https://apify.com/sian.agency) (community)
- **Categories:** E-commerce, Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 overview product extracteds

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use 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, Specs & Deals to JSON/CSV 🚀

[![SIÁN Agency Store](https://img.shields.io/badge/Store-SI%C3%81N%20Agency-1AE392)](https://apify.com/sian.agency?fpr=sian) [![Walmart Data Scraper](https://img.shields.io/badge/Store-Walmart%20Data%20Scraper-0071CE)](https://apify.com/sian.agency/walmart-data-scraper?fpr=sian) [![Amazon Product Scraper](https://img.shields.io/badge/Store-Amazon%20Product%20Scraper-FF9900)](https://apify.com/sian.agency/amazon-product-scraper?fpr=sian) [![Google Shopping Price Scraper](https://img.shields.io/badge/Store-Google%20Shopping%20Price%20Scraper-4285F4)](https://apify.com/sian.agency/google-shopping-price-scraper?fpr=sian)

#### 🎉 Turn any Best Buy search, category, or product page into a clean dataset — SKUs, live prices, savings, ratings, and full specification tables in a single run.
##### Perfect for pricing analysts, competitor-monitoring teams, ecommerce sellers, and catalog researchers who need reliable Best Buy data without lifting a finger.

---

### 📋 Overview

**The Best Buy Product Scraper turns bestbuy.com into structured data in seconds.** Search by keyword or category, or paste Best Buy product-listing (PLP) URLs, and get a clean JSON/CSV dataset with one row per product — prices, promotions, ratings, availability, and complete specifications.

No account, no API key, no setup. Just enter what you want, click Run, and download export-ready data for pricing intelligence, catalog research, and market analysis.

**Why professionals choose us:**
- ✅ **Zero Setup**: No Best Buy account or API key — enter keywords and go
- ⚡ **Fast Overview Mode**: Pull search-results data at scale (~18 products per results page)
- 🎯 **Deep Detail Mode**: Enrich every product with a full specifications table (30–90 rows), long description, and full image gallery
- 💰 **Pay-Per-Result Pricing**: Only pay for products you actually extract — plus a free tier to test risk-free
- 💎 **One Clean Record Per Product**: Overview and detail are merged into a single row — no stitching, no duplicates
- ✨ **NEW: Built-In Filters & Sorting**: Filter by brand, price band, and Top-Rated, and sort by price, best selling, top rated, or newest

---

### ✨ Features

- 🔍 **Keyword & Category Search**: Find products by free-text search or Best Buy category IDs
- 🔗 **Paste PLP URLs**: Drop in any Best Buy product-listing URL and scrape it directly
- ⚡ **Overview Mode**: Fast search-results extraction — SKU, title, brand, price, savings, rating, availability, and more
- 📊 **Detail Mode**: Full spec sheet, long description, complete image gallery, model number, UPC, color, and breadcrumb category path
- 🏷️ **Complete Pricing Data**: Current price, regular/was price, savings amount, percent off, on-sale flag, and deal expiry
- ⭐ **Ratings & Reviews**: Star rating and total review count for every product
- 📦 **Availability Intelligence**: In-stock status, availability, fulfillment, product condition, and seller
- 🎚️ **Sorting & Filters**: Featured, Price low→high, Price high→low, Best selling, Top rated, Newest — plus brand, min/max price, and Top-Rated filters
- 🧾 **Identifiers for Feeds**: Model number, UPC, SKU, and product-family ID (bsin) ready for catalog matching
- 💾 **Clean JSON & CSV**: Export-ready dataset with one row per product, priced in USD

---

### 🎬 Quick Start

Enter keywords, categories, or Best Buy PLP URLs, pick a mode, and click Run. Results land in your dataset ready to export.

```bash
## Run via API - one line
curl -X POST https://api.apify.com/v2/acts/sian.agency~best-buy-product-scraper/runs?token=[YOUR_TOKEN] \
-d '{"keywords": ["laptop"], "scrapeMode": "overview"}'
````

***

### 🚀 Getting Started (3 Simple Steps)

#### Step 1: Tell It What to Scrape

Enter search keywords (e.g. `4k tv`, `gaming laptop`), add category IDs, or paste Best Buy product-listing URLs. Mix and match as needed.

#### Step 2: Choose Mode & Filters

Pick **Overview** (fast search-results data) or **Detail** (enriched with full specs). Optionally set a sort order, brand, min/max price, or Top-Rated filter.

#### Step 3: Run & Download

Click Run and download clean, structured data as JSON, CSV, or Excel — ready for spreadsheets, databases, and analytics tools.

**That's it! In minutes, you'll have:**

- Live prices, regular/was prices, savings, and percent off
- Ratings, review counts, images, and availability for every product
- Full specification tables, descriptions, and identifiers (detail mode)
- Clean export-ready data priced in USD, one row per product

***

### 📥 Input Configuration

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| keywords | array | No | Free-text Best Buy searches (e.g. `"laptop"`, `"4k tv"`) |
| categoryIds | array | No | Best Buy category IDs to scrape (advanced) |
| urls | array | No | Best Buy product-listing (PLP) URLs to scrape directly |
| scrapeMode | string | No | `overview` (fast) or `detail` (enriched with full specs) |
| sort | string | No | Featured, Price low→high, Price high→low, Best selling, Top rated, Newest |
| brand | string | No | Limit results to a single brand |
| minPrice | number | No | Minimum price band (USD) |
| maxPrice | number | No | Maximum price band (USD) |
| topRated | boolean | No | Only return Top-Rated products |
| maxResults | integer | No | Maximum number of products to return |

**Example — keyword search, detail mode:**

```json
{
  "keywords": ["gaming laptop"],
  "scrapeMode": "detail",
  "sort": "Top rated",
  "brand": "ASUS",
  "minPrice": 800,
  "maxPrice": 2000,
  "topRated": true,
  "maxResults": 100
}
```

**Example — scrape product-listing URLs:**

```json
{
  "urls": [
    "https://www.bestbuy.com/site/laptops/all-laptops/pcmcat138500050001.c",
    "https://www.bestbuy.com/site/tvs/4k-ultra-hd-tvs/pcmcat333800050000.c"
  ],
  "scrapeMode": "overview"
}
```

***

### 📤 Output

Results are saved to the Apify dataset with **30+ fields per product**, one clean row each. In detail mode, the overview row is enriched in place with specs, gallery, and identifiers — no separate records to merge.

| Field | Type | Description |
|-------|------|-------------|
| sku | string | Best Buy SKU (unique product ID) |
| productTitle | string | Full product name |
| brand | string | Manufacturer / brand |
| price | number | Current price (USD) |
| regular\_price | number | Regular / was price (USD) |
| savings | number | Amount saved vs. regular price |
| savings\_percent | number | Percent off |
| on\_sale | boolean | Whether the product is currently on sale |
| rating | number | Average star rating |
| review\_count | number | Total number of reviews |
| in\_stock | boolean | Whether the product is currently in stock |
| availability | string | Availability / delivery status |
| condition | string | New, open-box, refurbished, etc. |
| model\_number | string | Manufacturer model number (detail) |
| upc | string | UPC barcode (detail) |
| specs | object | Full specifications table, 30–90 rows (detail) |
| images | array | Full product image gallery (detail) |

**Full example (detail mode):**

```json
{
  "thumbnail": "https://pisces.bbystatic.com/image.jpg",
  "sku": "6535401",
  "productTitle": "ASUS - ROG Zephyrus 16\" Gaming Laptop",
  "url": "https://www.bestbuy.com/site/.../6535401.p",
  "source": "detail",
  "brand": "ASUS",
  "bsin": "pcmcat138500050001",
  "model_number": "GU603ZM-211.ZG16",
  "upc": "195553771016",
  "color": "Off Black",
  "price": 1499.99,
  "regular_price": 1799.99,
  "savings": 300.00,
  "savings_percent": 17,
  "currency": "USD",
  "on_sale": true,
  "deal_expires": "2026-07-20",
  "rating": 4.7,
  "review_count": 1284,
  "images": ["https://pisces.bbystatic.com/1.jpg", "https://pisces.bbystatic.com/2.jpg"],
  "image_count": 8,
  "in_stock": true,
  "availability": "Available to ship",
  "fulfillment": "Ships in 1-2 days",
  "condition": "New",
  "seller": "Best Buy",
  "category": "Laptops",
  "subcategory": "Gaming Laptops",
  "breadcrumbs": ["Computers & Tablets", "Laptops", "Gaming Laptops"],
  "what_it_is": "16-inch gaming laptop with RTX graphics",
  "description": "Power through demanding games and creative workloads...",
  "features": ["QHD 165Hz display", "RTX 3060 GPU", "16GB DDR5 RAM"],
  "specs": {
    "Processor": "Intel Core i7-12700H",
    "Memory": "16GB DDR5",
    "Storage": "1TB SSD",
    "Graphics": "NVIDIA GeForce RTX 3060",
    "Screen Size": "16 inches"
  },
  "metadata": { "scrapedAt": "2026-07-14T10:30:00.000Z" }
}
```

***

### 💼 Use Cases & Examples

#### 1. Price & Promo Monitoring

**Retail and pricing teams tracking Best Buy prices and deals over time.**

**Input:** Keywords or category IDs for your product lines
**Output:** Current price, regular/was price, savings, percent off, on-sale flag, and deal expiry
**Use:** Detect price drops and promotions the moment they go live and react faster.

#### 2. Competitor Pricing Intelligence

**Brands and sellers benchmarking their catalog against Best Buy.**

**Input:** SKUs, brands, or category URLs you compete on
**Output:** Live prices, ratings, and availability per product
**Use:** Build a repricing feed and stay competitive without manual checks.

#### 3. Catalog & Assortment Research

**Category managers mapping what Best Buy carries in a niche.**

**Input:** Category IDs or PLP URLs, overview mode
**Output:** Full product lists with SKU, brand, price, and rating
**Use:** Understand assortment breadth, brand mix, and price distribution at a glance.

#### 4. In-Stock & Availability Checks

**Resellers and dropshippers monitoring stock and fulfillment.**

**Input:** Keywords or URLs for the products you source
**Output:** In-stock status, availability, fulfillment, condition, and seller
**Use:** Only list what's actually available and avoid overselling.

#### 5. Product-Spec Extraction for Feeds

**Ecommerce and feed teams enriching product catalogs.**

**Input:** Product URLs or keywords, detail mode
**Output:** Full specification tables, descriptions, model number, UPC, color, and image gallery
**Use:** Populate product feeds and comparison pages with rich, accurate specs.

#### 6. Market & Demand Research

**Analysts studying demand signals across electronics categories.**

**Input:** Category IDs sorted by Best selling or Top rated
**Output:** Ratings, review counts, prices, and rankings
**Use:** Identify best-sellers, top-rated products, and pricing trends by category.

***

### 🔗 Integration Examples

#### JavaScript/Node.js

```javascript
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });

const run = await client.actor('sian.agency/best-buy-product-scraper').call({
  keywords: ['gaming laptop'],
  scrapeMode: 'detail',
  maxResults: 100
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items[0]);
```

#### Python

```python
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')

run = client.actor('sian.agency/best-buy-product-scraper').call(
    run_input={'keywords': ['gaming laptop'], 'scrapeMode': 'detail'}
)

for item in client.dataset(run['defaultDatasetId']).iterate_items():
    print(item)
```

#### cURL

```bash
curl -X POST 'https://api.apify.com/v2/acts/sian.agency~best-buy-product-scraper/runs?token=YOUR_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"keywords": ["gaming laptop"], "scrapeMode": "detail"}'
```

#### Automation Workflows (N8N / Zapier / Make)

1. **Trigger**: Schedule or webhook
2. **HTTP Request**: Call the actor API
3. **Process**: Handle the JSON product results
4. **Action**: Save to a database, update a pricing sheet, or send an alert

***

### 📊 Performance & Pricing

#### FREE Tier (Try It Now)

- **Up to 25 products** per run — full feature access, same data quality
- No credit card required
- Perfect for testing keywords, categories, and detail mode

#### PAID Tier (Production Ready)

- **Unlimited** products per run
- Faster, at-scale extraction with no caps
- **Pay-per-result**: you're only charged for products that are successfully extracted

💰 **Fair, transparent pricing** — pay for the products you get, nothing more.

🔗 [View current pricing](https://apify.com/sian.agency/best-buy-product-scraper?fpr=sian)

***

### ❓ Frequently Asked Questions

**Q: How many products can I scrape?**
A: FREE tier: up to 25 products per run. PAID tier: unlimited.

**Q: Do I need a Best Buy account or API key?**
A: No. There's nothing to sign up for or configure — just enter keywords, categories, or URLs and run.

**Q: What's the difference between Overview and Detail mode?**
A: Overview is the fast path — search-results data like SKU, title, brand, price, savings, rating, and availability. Detail enriches each product with the full specifications table, long description, complete image gallery, model number, UPC, color, and breadcrumb category path.

**Q: Can I filter and sort results?**
A: Yes — sort by Featured, Price low→high, Price high→low, Best selling, Top rated, or Newest, and filter by brand, min/max price, and Top-Rated.

**Q: What output formats are available?**
A: JSON, CSV, and Excel — export directly from the Apify dataset.

**Q: Which region and currency does it cover?**
A: The US storefront (bestbuy.com), with prices in USD.

**Q: Is this legal?**
A: Yes — the actor accesses only publicly available data. See the [legal section](#-is-it-legal-to-scrape-data) below.

***

### 🐛 Troubleshooting

**No results returned**

- Check keyword spelling and try broader terms (e.g. `laptop` instead of an exact model)
- Remove or widen filters (brand, min/max price, Top-Rated)
- Verify any PLP URLs open correctly in a browser

**Specifications are missing**

- Switch `scrapeMode` to `detail` — full spec tables, descriptions, and galleries are only extracted in detail mode

**Fewer products than expected**

- FREE tier is capped at 25 products per run — upgrade to PAID for unlimited results
- Some categories or filtered searches simply contain fewer products

**Prices look different from what I expect**

- Results reflect the US storefront (bestbuy.com) in USD; regional pricing may differ from other markets

***

### ⚖️ Is it legal to scrape data?

Our actors are ethical and do not extract any private user data, such as email addresses, gender, or location. They only extract what is publicly available. We therefore believe that our actors, when used for ethical purposes by Apify users, are safe.

However, you should be aware that your results could contain personal data (for example, seller or reviewer names). Personal data is protected by the **GDPR** in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. If you're unsure whether your reason is legitimate, consult your lawyers.

You can also read Apify's blog post on the [legality of web scraping](https://blog.apify.com/is-web-scraping-legal/).

**Trademark & affiliation disclaimer:** SIÁN Agency is an independent provider and is **not affiliated with, endorsed by, or sponsored by Best Buy**. "Best Buy" and related names, marks, and logos are trademarks of their respective owner. This actor is not an official Best Buy product or service and accesses only publicly available data.

***

### 🤝 Support

[![Telegram Support](https://img.shields.io/badge/Telegram-Support%20Group-0088cc?logo=telegram)](https://t.me/+vyh1sRE08sAxMGRi)

**Join our active support community**

- For issues or questions, open an issue in the actor's repository
- Check the [SIÁN Agency Store](https://apify.com/sian.agency?fpr=sian) for more automation tools
- ✉️ <apify@sian-agency.online>

***

**Built by [SIÁN Agency](https://www.sian-agency.online)** | **[More Tools](https://apify.com/sian.agency?fpr=sian)**

# Actor input Schema

## `keywords` (type: `array`):

🔍 **KEYWORD SEARCH:** Free-text Best Buy searches — exactly what you'd type into the site's search bar.

📝 **EXAMPLES:** `laptop` · `4k tv` · `sony headphones` · `wireless mouse` · `air fryer`

💡 **TIP:** Add one keyword per line — each runs as its own search and all results land in the same dataset.

🖊️ **BULK EDIT:** Click "Bulk edit" to paste many keywords at once (one per line).

✅ **IMPORTANT:** Provide either keywords, category ids, OR Best Buy URLs (at least one is needed to have something to scrape).

## `scrapeMode` (type: `string`):

⚙️ **SCRAPE DEPTH:** Choose how much data to pull per product.

⚡ **Overview (fast):** Search results only — SKU, title, brand, price, was-price, savings, rating, review count, image, availability, condition & seller. Fastest and cheapest path.

🔬 **Detail (enriched specs + description):** Everything in Overview PLUS the full specifications table (30–90 rows), the long product description, the full image gallery, model number, UPC, color and the breadcrumb category path scraped from each product page.

💡 **TIP:** Start with Overview to scope your catalog, then switch to Detail when you need the complete spec sheet for feeds or comparisons.

## `sort` (type: `string`):

🔃 **RESULT ORDERING:** Order search results using Best Buy's own native sort options — so you get the same ranking real shoppers see.

🏆 **Best selling** surfaces the most popular products first · 💲 **Price** sorts ascending or descending · ⭐ **Top rated** leads with the highest-reviewed items · 🆕 **Newest** prioritizes the latest arrivals.

## `brand` (type: `string`):

™️ **BRAND FILTER:** Restrict results to a single brand (e.g. `Sony`, `Apple`, `Samsung`, `HP`). Uses Best Buy's own brand facet, so it mirrors the site's brand filter.

💡 **TIP:** Leave blank to include every brand.

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

💵 **MINIMUM PRICE:** Only return products at or above this price (USD). Leave blank for no lower bound.

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

💰 **MAXIMUM PRICE:** Only return products at or below this price (USD). Leave blank for no upper bound.

## `topRated` (type: `boolean`):

⭐ **TOP-RATED ONLY:** When on, limits results to Best Buy's "Top-Rated" customer-rating facet — the highest-reviewed products.

## `categoryIds` (type: `array`):

🧭 **CATEGORY BROWSING (Advanced):** Scrape a whole Best Buy category instead of a keyword search.

🔧 **HOW TO GET IT:** Open any Best Buy category page and copy the numeric id from the URL after the category slug (e.g. for `bestbuy.com/site/laptops/all-laptops/pcmcat138500050001.c?id=pcmcat138500050001` use `pcmcat138500050001`).

💡 **TIP:** Leave this empty if you're only using keywords — it's purely an advanced alternative for category-level harvesting.

🖊️ **BULK EDIT:** Add one category id per line to sweep multiple categories in a single run.

## `urls` (type: `array`):

🔗 **PASTE RESULT-PAGE URLs:** Paste full Best Buy search or category result-page URLs to scrape them verbatim — filters and sorting you already set in the URL are preserved.

📝 **EXAMPLE:** `https://www.bestbuy.com/site/searchpage.jsp?st=4k+tv`

🖊️ **BULK EDIT:** Add one URL per line to sweep several pages in a single run.

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

🔢 **RESULT CAP:** Maximum number of products to return across all keywords, categories and URLs combined.

🎁 **TIER-BASED LIMITS:**

- **FREE users:** Up to 25 products per run
- **PAID users:** Unlimited — scrape entire catalogs in a single run

💡 **TIP:** Keep this low while you dial in your keywords, then raise it once the output looks right.

## Actor input object example

```json
{
  "keywords": [
    "laptop"
  ],
  "scrapeMode": "overview",
  "sort": "featured",
  "topRated": false,
  "maxResults": 100
}
```

# Actor output Schema

## `bestBuyProducts` (type: `string`):

Scraped Best Buy products with prices, promotions, ratings, images, specs and availability.

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

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

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

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=sian.agency/best-buy-product-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Best Buy Product Scraper",
        "description": "Scrape Best Buy products — price, ratings, reviews, images, specs & availability. Keyword or category search, full detail enrichment, clean JSON/CSV, no code.",
        "version": "1.0",
        "x-build-id": "uea7UPB4lz76ht1xx"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/sian.agency~best-buy-product-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-sian.agency-best-buy-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/sian.agency~best-buy-product-scraper/runs": {
            "post": {
                "operationId": "runs-sync-sian.agency-best-buy-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/sian.agency~best-buy-product-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-sian.agency-best-buy-product-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "keywords": {
                        "title": "🔍 Search Keywords",
                        "type": "array",
                        "description": "🔍 **KEYWORD SEARCH:** Free-text Best Buy searches — exactly what you'd type into the site's search bar.\n\n📝 **EXAMPLES:** `laptop` · `4k tv` · `sony headphones` · `wireless mouse` · `air fryer`\n\n💡 **TIP:** Add one keyword per line — each runs as its own search and all results land in the same dataset.\n\n🖊️ **BULK EDIT:** Click \"Bulk edit\" to paste many keywords at once (one per line).\n\n✅ **IMPORTANT:** Provide either keywords, category ids, OR Best Buy URLs (at least one is needed to have something to scrape).",
                        "default": [
                            "laptop"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "scrapeMode": {
                        "title": "⚙️ Scrape Mode",
                        "enum": [
                            "overview",
                            "detail"
                        ],
                        "type": "string",
                        "description": "⚙️ **SCRAPE DEPTH:** Choose how much data to pull per product.\n\n⚡ **Overview (fast):** Search results only — SKU, title, brand, price, was-price, savings, rating, review count, image, availability, condition & seller. Fastest and cheapest path.\n\n🔬 **Detail (enriched specs + description):** Everything in Overview PLUS the full specifications table (30–90 rows), the long product description, the full image gallery, model number, UPC, color and the breadcrumb category path scraped from each product page.\n\n💡 **TIP:** Start with Overview to scope your catalog, then switch to Detail when you need the complete spec sheet for feeds or comparisons.",
                        "default": "overview"
                    },
                    "sort": {
                        "title": "🔃 Sort Order",
                        "enum": [
                            "featured",
                            "price_low",
                            "price_high",
                            "best_selling",
                            "top_rated",
                            "newest"
                        ],
                        "type": "string",
                        "description": "🔃 **RESULT ORDERING:** Order search results using Best Buy's own native sort options — so you get the same ranking real shoppers see.\n\n🏆 **Best selling** surfaces the most popular products first · 💲 **Price** sorts ascending or descending · ⭐ **Top rated** leads with the highest-reviewed items · 🆕 **Newest** prioritizes the latest arrivals.",
                        "default": "featured"
                    },
                    "brand": {
                        "title": "™️ Brand Filter",
                        "type": "string",
                        "description": "™️ **BRAND FILTER:** Restrict results to a single brand (e.g. `Sony`, `Apple`, `Samsung`, `HP`). Uses Best Buy's own brand facet, so it mirrors the site's brand filter.\n\n💡 **TIP:** Leave blank to include every brand."
                    },
                    "minPrice": {
                        "title": "💵 Min Price (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💵 **MINIMUM PRICE:** Only return products at or above this price (USD). Leave blank for no lower bound."
                    },
                    "maxPrice": {
                        "title": "💰 Max Price (USD)",
                        "minimum": 0,
                        "type": "integer",
                        "description": "💰 **MAXIMUM PRICE:** Only return products at or below this price (USD). Leave blank for no upper bound."
                    },
                    "topRated": {
                        "title": "⭐ Top-Rated Only",
                        "type": "boolean",
                        "description": "⭐ **TOP-RATED ONLY:** When on, limits results to Best Buy's \"Top-Rated\" customer-rating facet — the highest-reviewed products.",
                        "default": false
                    },
                    "categoryIds": {
                        "title": "🧭 Category IDs (Advanced)",
                        "type": "array",
                        "description": "🧭 **CATEGORY BROWSING (Advanced):** Scrape a whole Best Buy category instead of a keyword search.\n\n🔧 **HOW TO GET IT:** Open any Best Buy category page and copy the numeric id from the URL after the category slug (e.g. for `bestbuy.com/site/laptops/all-laptops/pcmcat138500050001.c?id=pcmcat138500050001` use `pcmcat138500050001`).\n\n💡 **TIP:** Leave this empty if you're only using keywords — it's purely an advanced alternative for category-level harvesting.\n\n🖊️ **BULK EDIT:** Add one category id per line to sweep multiple categories in a single run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "urls": {
                        "title": "🔗 Best Buy URLs (Advanced)",
                        "type": "array",
                        "description": "🔗 **PASTE RESULT-PAGE URLs:** Paste full Best Buy search or category result-page URLs to scrape them verbatim — filters and sorting you already set in the URL are preserved.\n\n📝 **EXAMPLE:** `https://www.bestbuy.com/site/searchpage.jsp?st=4k+tv`\n\n🖊️ **BULK EDIT:** Add one URL per line to sweep several pages in a single run.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "maxResults": {
                        "title": "🔢 Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "🔢 **RESULT CAP:** Maximum number of products to return across all keywords, categories and URLs combined.\n\n🎁 **TIER-BASED LIMITS:**\n- **FREE users:** Up to 25 products per run\n- **PAID users:** Unlimited — scrape entire catalogs in a single run\n\n💡 **TIP:** Keep this low while you dial in your keywords, then raise it once the output looks right.",
                        "default": 100
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
