Best Buy Product & Price Scraper icon

E-commerce

Best Buy Product & Price Scraper

Price-monitoring-grade Best Buy scraper — stable sku_id and an explicit scrape-time captured_at on every row, so you can diff price, discount, and availability across scheduled runs instead of getting a raw page dump.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

Point this Actor at one or more Best Buy category browse pages and it returns one clean row per SKU — current price, regular price, discount percent, savings amount, seller type (Best Buy vs. third-party marketplace), stock/pickup availability, and rating summary. Every row carries a stable sku_id and an explicit captured_at scrape-time timestamp, so scheduling repeat runs and diffing the dataset gives you a real price-history feed instead of a one-off snapshot. Built on curl-cffi with browser TLS impersonation against Best Buy's own JSON product payload — no fragile CSS-selector scraping.

What we handle for you

  • 🛡️ Browser fingerprint rotationcurl-cffi impersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python.
  • 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
  • 🔁 Retries with exponential backoff on 408 / 429 / 5xx — up to 5 attempts per page, Retry-After honoured.
  • 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
  • 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
  • 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.

Use cases

  • Price-drop monitoring — schedule repeat runs against a category or SKU list and diff <code>current_price</code>/<code>discount_percent</code> across runs to catch deals the moment they land.
  • Competitor price intelligence — track how Best Buy prices a category over time versus your own catalog.
  • Marketplace-vs-Best Buy mix analysis — use <code>seller_type</code> to see which listings are Best Buy-fulfilled vs. third-party marketplace sellers.
  • Stock/availability alerting — diff <code>availability_status</code> and <code>in_store_pickup_eligible</code> across scheduled runs for restock notifications.
  • Catalog enrichment — resolve a category into stable <code>sku_id</code>-keyed rows with rating, review count, and model number in one schema.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
startUrls array yes Best Buy category browse URLs, e.g. bestbuy.com/site/&lt;category-slug&gt;/&lt;sub-slug&gt;/&lt;categoryId&gt;.c?id=&lt;categoryId&gt;. Direct product (PDP) URLs are not supported — bestbuy.com resets the connection on…
maxItems integer no Cap on the total number of product rows emitted this run.
{
  "startUrls": [
    "https://www.bestbuy.com/site/laptop-computers/all-laptops/pcmcat138500050001.c?id=pcmcat138500050001"
  ],
  "maxItems": 3,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

sku_idproduct_namemodel_numberproduct_urlcategory_hintconditionopen_box_conditioncurrent_priceregular_pricediscount_percentsavings_amountseller_typeseller_idavailability_statusin_store_pickup_eligiblerating

{
  "sku_id": "6667474",
  "product_name": "HP - 14\" Laptop - Intel N150 Processor - 4GB Memory - 128GB UFS - Natural Silver",
  "model_number": "14-dq6101dx",
  "product_url": "https://www.bestbuy.com/product/hp-14-laptop-intel-n150-processor-4gb-memory-128gb-ufs-natural-silver/JJGW3FGFPZ/sku/6667474",
  "category_hint": "https://www.bestbuy.com/site/laptop-computers/all-laptops/pcmcat138500050001.c?id=pcmcat138500050001",
  "condition": "new",
  "open_box_condition": null,
  "current_price": 229.99,
  "regular_price": 349.99,
  "discount_percent": 34,
  "savings_amount": 120,
  "seller_type": "best_buy",
  "seller_id": "bby",
  "availability_status": "Add to Cart",
  "in_store_pickup_eligible": true,
  "rating": 4.4,
  "review_count": 294,
  "upc": null,
  "captured_at": "2026-08-06T14:32:07.512381+00:00"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result scraped$0.0024Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

FAQ

Does this cover bestbuy.ca or other storefronts?
No — <code>bestbuy.com</code> (US) only in v1. See Limitations.
Does it return historical price charts?
No — each run is a point-in-time snapshot. Schedule repeat runs and diff rows by <code>sku_id</code> yourself for a time series; the explicit <code>captured_at</code> timestamp is designed for exactly this.
Why is upc always null?
Best Buy's underlying product data does not expose a UPC field on the pages this Actor reads — it's always <code>null</code> rather than a guess.
Can I pass a direct product page instead of a category page?
No — direct product-page (PDP) URLs are not supported. Best Buy's PDPs reset the connection on direct fetch independent of proxy or geography, so the Actor skips them with a clear error rather than silently returning nothing. Supply a category browse URL instead.
Does it search by keyword?
No — Best Buy's free-text keyword search path is disallowed by <code>robots.txt</code> and is deliberately never used. Supply category or product URLs instead.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Read more

Articles about this Actor

Related Actors

Teams that run this also run