Best Buy Product & Price Scraper avatar

Best Buy Product & Price Scraper

Pricing

from $2.40 / 1,000 results

Go to Apify Store
Best Buy Product & Price Scraper

Best Buy Product & Price Scraper

Scrape Best Buy (bestbuy.com) product, price, discount, availability, seller, and rating data from category and product pages. Every row carries a stable sku_id and a scrape-time captured_at timestamp so you can diff price and availability across scheduled runs.

Pricing

from $2.40 / 1,000 results

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share


🎯 What this 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 current_price/discount_percent 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 seller_type to see which listings are Best Buy-fulfilled vs. third-party marketplace sellers.
  • Stock/availability alerting — diff availability_status and in_store_pickup_eligible across scheduled runs for restock notifications.
  • Catalog enrichment — resolve a category into stable sku_id-keyed rows with rating, review count, and model number in one schema.

⚙️ How to use it

  1. Click Try for free at the top of the page.
  2. Fill in the input form — most fields have sensible defaults.
  3. Click Start. Output streams into the run's dataset.
  4. Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.

📥 Input

FieldTypeRequiredDefaultNotes
startUrlsarrayyes['https://www.bestbuy.com/site/laptop-computers/all-laptops/pcmcat138500050001.c?id=pcmcat138500050001']Best Buy category browse URLs, e.g.…
maxItemsintegerno200Cap on the total number of product rows emitted this run.
proxyConfigurationobjectno{'useApifyProxy': True}Apify Proxy spec. No forced residential group in v1 — both datacenter and residential tiers are confirmed to reach Best…

Example input

{
"startUrls": [
"https://www.bestbuy.com/site/laptop-computers/all-laptops/pcmcat138500050001.c?id=pcmcat138500050001"
],
"maxItems": 3,
"proxyConfiguration": {
"useApifyProxy": true
}
}

📤 Output

Every row is one dataset item.

FieldTypeNotes
sku_idstringBest Buy SKU identifier.
product_namestringShort product name.
model_number['string', 'null']Manufacturer model number.
product_urlstringCanonical product detail page URL.
category_hint['string', 'null']The startUrls entry this row was found under (traceability).
conditionstringProduct condition, e.g. new.
open_box_condition['string', 'null']Open-box condition grade, if applicable.
current_pricenumberCurrent customer-facing USD price.
regular_price['number', 'null']Displayable regular (pre-discount) USD price.
discount_percent['number', 'null']Percent off regular price — sourced from the page, or computed when absent.
savings_amount['number', 'null']Absolute USD savings versus regular price.
seller_typestringbest_buy (1P, sold by Best Buy) or marketplace (3P, third-party seller).
seller_id['string', 'null']Seller identifier.
availability_statusstringFulfillment button text, e.g. Add to Cart or Sold Out.
in_store_pickup_eligible['boolean', 'null']Whether in-store pickup is available for this SKU.
rating['number', 'null']Average customer star rating.
review_count['integer', 'null']Number of customer reviews.
upc['string', 'null']Always null in v1 — UPC is absent from Best Buy's wire format.
captured_atstringISO 8601 UTC scrape-time timestamp (not page-sourced).

Example output

{
"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

Pay-Per-Event — you pay only when these events fire:

EventUSDWhat it is
actor-start$0.02One-off warm-up charge per run
result-scraped$0.0024Per unique dataset item

Example: 1 000 results at the rates above ≈ $2.42. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.

🚧 Limitations

US bestbuy.com storefront only — no Canada or other regional storefronts. Direct product-page (PDP) URLs are not supported; supply category browse URLs. UPC is always null (absent from the source data). No free-text keyword search (?st= URLs are robots-disallowed and skipped). Category pagination is capped at cp=2-cp=5 per robots.txt (max ~5 pages per category per run). Review text/author/date is out of scope — only the aggregate rating and review count are included. Historical price trend charts are not built in — diff captured_at-stamped rows across scheduled runs yourself.

❓ FAQ

Does this cover bestbuy.ca or other storefronts?

No — bestbuy.com (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 sku_id yourself for a time series; the explicit captured_at 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 null 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 robots.txt and is deliberately never used. Supply category or product URLs instead.

💬 Your feedback

Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.