Bestbuy Products Scraper
Pricing
$19.99/month + usage
Bestbuy Products Scraper
Efficiently access product data from Best Buy , capable of scraping unlimited details including ID, name, URL, prices, ratings, and stock status from bestbuy.com. Perfect for populating reports, databases, and applications with structured data.
Pricing
$19.99/month + usage
Rating
5.0
(2)
Developer
codemaster devops
Maintained by CommunityActor stats
3
Bookmarked
61
Total users
3
Monthly active users
1.2 days
Issues response
4 days ago
Last modified
Categories
Share
Best Buy Products Scraper
Best Buy Products Scraper extracts product data from BestBuy.com and BestBuy.ca into an Apify dataset. Use it for product research, price monitoring, catalog enrichment, competitive analysis, availability checks, and ecommerce lead generation.
The actor supports Best Buy URLs copied directly from your browser. You can scrape modern BestBuy.com search and category pages, deals pages, promo pages, direct product pages, and selected BestBuy.ca category, collection, and product pages.
What Data Can You Extract?
Depending on the page type and what Best Buy exposes for each product, the dataset can include:
- Product name, SKU, URL, brand, model, UPC, GTIN, and BSIN
- Current, regular, original, and sale prices
- Availability text and normalized stock status
- Ratings, review counts, aggregate rating data, and top reviews when available
- Product images, primary image objects, videos, manuals, and supported logos
- Descriptions, features, included items, specifications, dimensions, warranty, condition, and manufacturer data
- Partial records with SKU and URL when a product detail API request is blocked after retries
The actor keeps additionalProperties enabled in the dataset schema because Best Buy product APIs can return category-specific fields that vary across electronics, appliances, smart home products, phones, accessories, and open-box products.
Supported Start URLs
Use the real Best Buy URL from your browser. You do not need to convert URLs to an older format.
| URL type | Example |
|---|---|
| BestBuy.com search page | https://www.bestbuy.com/site/searchpage.jsp?st=smart%20light%20panels |
| BestBuy.com modern category page | https://www.bestbuy.com/site/smart-lighting/smart-light-panels/pcmcat1704310076876.c?id=pcmcat1704310076876 |
| BestBuy.com Top Deals page | https://www.bestbuy.com/site/electronics/top-deals/pcmcat1563299784494.c?id=pcmcat1563299784494 |
| BestBuy.com promo page | https://www.bestbuy.com/site/promo/tv-deals |
| BestBuy.com product page | https://www.bestbuy.com/site/6628380.p?skuId=6628380 |
| BestBuy.ca category page | https://www.bestbuy.ca/en-ca/category/laptops-macbooks/20352 |
| BestBuy.ca collection page | https://www.bestbuy.ca/en-ca/collection/top-deals-on-laptops/217126 |
| BestBuy.ca product page | Any supported BestBuy.ca product URL |
Modern BestBuy.com product list pages often expose product IDs as data-product-id rather than old skuId= links. The actor supports both patterns.
Quick Start
- Open BestBuy.com or BestBuy.ca.
- Navigate to a search page, category page, deals page, promo page, or product page.
- Copy the full browser URL.
- Paste it into Start URLs.
- Set Maximum products to
3for the first test. - Keep Proxy configuration enabled with
countryCode: "US"for BestBuy.com. - Run the actor and open the Products dataset.
Recommended Input
This example tests the exact modern BestBuy.com URL patterns that users commonly copy from the browser:
{"startUrls": [{"url": "https://www.bestbuy.com/site/searchpage.jsp?st=smart%20light%20panels"},{"url": "https://www.bestbuy.com/site/smart-lighting/smart-light-panels/pcmcat1704310076876.c?id=pcmcat1704310076876"}],"proxyConfig": {"useApifyProxy": true,"countryCode": "US"},"maxProductsCnt": 3,"addImages": true,"addTopReviews": true,"maxRequestRetries": 3,"minConcurrency": 1,"maxConcurrency": 4,"handleRequestTimeoutSecs": 20}
Input Options
| Field | Type | Default | Description |
|---|---|---|---|
startUrls | array | Required | One or more Best Buy search, category, deals, promo, collection, or product URLs. |
proxyConfig | object | Apify Proxy, US | Proxy settings. Use Apify Proxy with countryCode: "US" for BestBuy.com. Custom proxyUrls are also supported. |
maxProductsCnt | integer | 100 | Maximum products to save across all start URLs. Use 0 for all discovered products. |
addImages | boolean | true | Enables image extraction where Best Buy exposes image data. |
addTopReviews | boolean | true | Enables top review extraction where Best Buy exposes review data. |
maxRequestRetries | integer | 3 | Number of retries for failed pages, listing requests, and product detail requests. |
minConcurrency | integer | 1 | Minimum parallel requests. Keep at 1 for stable small runs. |
maxConcurrency | integer | 4 | Maximum parallel requests. Increase carefully with reliable proxies. |
handleRequestTimeoutSecs | integer | 20 | Request and handler timeout in seconds. Increase if proxies are slow. |
requestTimeoutSecs | integer | None | Legacy alias for request timeout. New tasks should use handleRequestTimeoutSecs. |
maxProducts | integer | None | Legacy alias for maxProductsCnt. Existing saved tasks can continue using it. |
proxy | object | None | Legacy alias for proxyConfig. Existing saved tasks can continue using it. |
More Example Inputs
Search Products
{"startUrls": [{"url": "https://www.bestbuy.com/site/searchpage.jsp?st=gaming%20monitor"}],"proxyConfig": {"useApifyProxy": true,"countryCode": "US"},"maxProductsCnt": 25,"maxRequestRetries": 3,"minConcurrency": 1,"maxConcurrency": 4,"handleRequestTimeoutSecs": 20}
Scrape a Category
{"startUrls": [{"url": "https://www.bestbuy.com/site/tv-home-theater/tvs/abcat0101000.c?id=abcat0101000"}],"proxyConfig": {"useApifyProxy": true,"countryCode": "US"},"maxProductsCnt": 100,"addImages": true,"addTopReviews": false}
Scrape Direct Product URLs
{"startUrls": [{"url": "https://www.bestbuy.com/site/6628380.p?skuId=6628380"},{"url": "https://www.bestbuy.com/site/11746203.p?skuId=11746203"}],"proxyConfig": {"useApifyProxy": true,"countryCode": "US"},"maxProductsCnt": 2}
Use Custom Proxies
{"startUrls": [{"url": "https://www.bestbuy.com/site/searchpage.jsp?st=smart%20light%20panels"}],"proxyConfig": {"proxyUrls": ["http://user:password@proxy.example.com:8000"]},"maxProductsCnt": 10,"maxRequestRetries": 3}
When proxyUrls are supplied, the actor does not force countryCode, so custom proxy configuration is not mixed with Apify Proxy settings.
Output
Results are saved to the default dataset. Each item represents one product. The output shape depends on whether the item came from a listing page, a product page, BestBuy.com product API details, or BestBuy.ca API data.
For simple exports, use the top-level name, brand, url, sku, price, and reviews fields. The actor also keeps source-specific fields such as currentPrice, salePrice, regularPrice, rating, and reviewCount when Best Buy exposes them.
Example output:
{"sku": "11746203","url": "https://www.bestbuy.com/site/11746203.p?skuId=11746203","name": "Lines 90 Degrees Smarter Kit (4 Light Lines)","brand": "Nanoleaf","price": 99.99,"reviews": 198,"currentPrice": 99.99,"reviewCount": 198,"upc": "4897105332060","bsin": "CGCL6RH8GP","color": {"displayName": "Multicolor"},"descriptions": {"long": "A modular smart lighting kit with customizable colors."},"manufacturer": {"modelNumber": "NL59K03-4SN00"},"features": [{"title": "Color-Changing Animations","description": "Customize your lights with colors and motion."}],"specifications": [{"displayName": "Works With","values": ["Amazon Alexa","Google Home"]}],"images": [{"href": "https://pisces.bbystatic.com/image2/BestBuy_US/images/products/example.jpg","primary": true}],"warranties": {"parts": "2 years","labor": "2 years"}}
If Best Buy blocks a product detail API request after all retries, the actor can still save a partial item:
{"sku": "11746203","url": "https://www.bestbuy.com/site/11746203.p?skuId=11746203","detailStatus": "api_failed","detailError": "Request blocked - received 403 status code"}
Reliability Notes
Best Buy can occasionally return 403 responses, reset HTTP connections, or serve different HTML for different regions. The actor is designed to continue when possible:
- Listing pages are parsed from modern
data-product-idproduct tiles and olderskuId=links. - BestBuy.com product detail pages use a JSON model endpoint when a SKU is known.
- BestBuy.ca category and collection URLs are transformed to BestBuy.ca JSON API requests.
- Product limits are enforced before scheduling extra detail requests.
- If only a detail request fails, a partial SKU record can still be saved.
For BestBuy.com, US proxies are strongly recommended.
Troubleshooting
No products were saved
Try the Top Deals or direct product example first. If that works, the start URL may use a new page shape or Best Buy may have blocked the listing request.
The run gets a few 403 errors
This can happen with Best Buy. Keep maxRequestRetries at 3, use US proxies, and keep concurrency modest.
Only partial items are saved
The actor found SKUs, but product detail requests were blocked after retries. Partial records preserve the SKU and URL so the run still returns useful leads.
Custom proxies fail
Use either Apify Proxy fields or proxyUrls, not both. The actor supports custom proxyUrls directly.
Cost Guidance
For small tests, set maxProductsCnt to 3. For normal category or search jobs, start with 100. Larger jobs depend mostly on proxy speed, retries, and the number of product detail requests. Lower concurrency is usually more reliable on Best Buy than aggressive parallel crawling.
Legal and Responsible Use
Use this actor responsibly and make sure your use case complies with Best Buy's terms, applicable laws, and privacy requirements. Do not scrape personal data unless you have a lawful basis and a clear business need.