# B\&H Product & Reviews Scraper (`krazee_kaushik/b-h-product-reviews-scraper`) Actor

Scrape B\&H product data and customer reviews from one or multiple product URLs. Extract prices, specifications, ratings, reviews, images, inventory status, warranty information, and other product details. Export to Excel, CSV, JSON, XML, RSS, and HTML.

- **URL**: https://apify.com/krazee\_kaushik/b-h-product-reviews-scraper.md
- **Developed by:** [Krazee](https://apify.com/krazee_kaushik) (community)
- **Categories:** E-commerce, Developer tools, AI
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 product scrapeds

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

### 🛍️ What is B&H Product & Reviews Scraper?

B&H Product & Reviews Scraper is a data extraction tool for collecting product information and customer reviews from [B&H Photo Video](https://www.bhphotovideo.com). Extract product details, specifications, pricing, availability, ratings, and reviews from one or multiple B&H product URLs for product research, competitor monitoring, catalog building, price tracking, review analysis, and ecommerce workflows.

Simply provide one or more B&H product URLs, choose your review collection settings, click **"Save & Start"**, and begin collecting structured B&H product and review data.

---

### ⭐ Why Use This Actor?

- ⭐ **Product Details + Reviews Together:** Collect complete product information and customer reviews in a single run.

- ⚡ **API-Based Extraction:** Uses direct API-based extraction for faster, more reliable, and more consistent data collection.

- 🔒 **Automatic Session & Proxy Management:** Built-in session handling and proxy management provide stable runs without requiring any proxy setup, maintenance, or technical configuration.

- ⏯️ **Resurrect Run Support:** Resume interrupted runs from where they stopped instead of starting the entire job again.

---

### 📊 What Data Can You Extract?

| Category | Included Data |
|---|---|
| 🛍️ Product Details | Product names, descriptions, B&H product IDs, SKUs, manufacturer part numbers, product URLs, included items, and product identifiers |
| 🏷️ Brand & Product Information | Brand names, product categories, selling points, key features, product variants, and catalog information |
| 💲 Pricing & Discounts | Current prices, regular prices, discount information, savings amounts, promotional pricing, and pricing-related metadata |
| 📦 Inventory & Availability | Stock status, availability messages, shipping information, quantity limits, and purchasing restrictions |
| 📋 Technical Specifications | Detailed product specifications organized by category, including dimensions, compatibility, performance metrics, connectivity options, and manufacturer-provided technical details |
| 🖼️ Product Images & Media | Main product images, gallery images, image counts, product media availability, and visual product assets |
| ⭐ Ratings & Review Summary | Average ratings, review counts, review availability, and overall customer feedback metrics |
| 💬 Customer Reviews | Review titles, review text, ratings, review dates, reviewer types, helpful votes, staff responses, and review metadata |
| 📸 Review Images & Media | Customer-submitted review images, review media attachments, image URLs, and visual review content when available |
| 🛡️ Warranty & Protection Plans | Manufacturer warranty information, warranty periods, available protection plans, plan counts, and protection pricing |
| ⚙️ Additional Metadata | Product weight, shipping information, item source data, catalog metadata, and other B&H-provided product attributes |

The actor returns one dataset item per product, with customer reviews optionally included inside each product record for easier analysis, exporting, catalog management, review research, and ecommerce workflows.

---

### 🚀 How to Scrape B&H Product Data

#### Minimal Input

The simplest way to start scraping product information from B&H Photo Video.

Just provide one or more B&H product URLs and the actor will collect product details, specifications, pricing, availability, ratings, images, and other product information.

```json
{
  "productUrls": [
    "https://www.bhphotovideo.com/c/product/1919557-REG/canon_7280c001_powershot_elph_360_hs.html",
    "https://www.bhphotovideo.com/c/product/1919558-REG/canon_7283c001_powershot_elph_360_hs.html"
  ]
}
````

#### Scrape Product Details With Reviews

Enable review collection and control how many customer reviews are extracted for each product.

```json
{
  "includeReviews": true,
  "productUrls": [
    "https://www.bhphotovideo.com/c/product/1919557-REG/canon_7280c001_powershot_elph_360_hs.html",
    "https://www.bhphotovideo.com/c/product/1919558-REG/canon_7283c001_powershot_elph_360_hs.html"
  ],
  "reviewsLimit": 50
}
```

***

### 📥 Sample Output

```json
 {
    "brandName": "Canon",
    "name": "Canon PowerShot ELPH 360 HS A Digital Camera (Silver)",
    "shortDescription": "Canon PowerShot ELPH 360 HS A Digital Camera (Silver)",
    "bhId": "1919558-REG",
    "imageUrls": [
      "https://static.bhphoto.com/images/images1500x1500/1757407699_1919558.jpg",
      "https://www.bhphotovideo.com/images/images500x500/canon_7283c001_powershot_elph_360_hs_1757407699_1919558.jpg",
      "https://static.bhphoto.com/images/multiple_images/images500x500/1757408018_IMG_2569582.jpg",
      "https://static.bhphoto.com/images/multiple_images/images500x500/1757408018_IMG_2569583.jpg",
      "https://static.bhphoto.com/images/multiple_images/images500x500/1757408018_IMG_2569584.jpg",
      "https://static.bhphoto.com/images/multiple_images/images500x500/1757408018_IMG_2569585.jpg",
      "https://static.bhphoto.com/images/multiple_images/images500x500/1757408018_IMG_2569586.jpg",
      "https://static.bhphoto.com/images/multiple_images/images500x500/1757408018_IMG_2569587.jpg",
      "https://static.bhphoto.com/images/multiple_images/images500x500/1757408018_IMG_2569588.jpg"
    ],
    "itemWeight": 0.6,
    "weightUnit": "lb",
    "stockAvailability": true,
    "sku": 1919558,
    "itemSource": "REG",
    "itemCode": "CAPS360S",
    "manufacturerCatalogNumber": "7283C001",
    "productUrl": "/c/product/1919558-REG/canon_7283c001_powershot_elph_360_hs.html",
    "canonicalUrl": "https://www.bhphotovideo.com/c/product/1919558-REG/canon_7283c001_powershot_elph_360_hs.html",
    "shortUrl": "https://bhpho.to/42o0plM",
    "pageTitle": "Canon PowerShot ELPH 360 HS A Digital Camera (Silver) 7283C001",
    "seoShortDescription": "Canon ELPH 360 HS A",
    "currencyPrice": null,
    "price": 379,
    "regularPrice": 379,
    "strikethroughPrice": null,
    "hasDiscount": false,
    "hasSavings": false,
    "instantSavingsAmount": null,
    "instantSavingsPercent": null,
    "soldInKitOnly": false,
    "callForPrice": false,
    "mapItem": false,
    "hasSessionPricing": false,
    "includedItems": [
      "Canon PowerShot ELPH 360 HS A Digital Camera (Silver)",
      "Canon NB-11LH Lithium-Ion Battery Pack for Select PowerShot Digital Cameras (3.6V, 800mAh)",
      "Canon CB-2LF Charger for NB-11L Battery",
      "Wrist Strap",
      "Limited 1-Year Manufacturer Warranty"
    ],
    "specifications": {
      "Key Specs": {
        "Effective Sensor Resolution": "20.2 Megapixel (5184 x 3888)",
        "Image Sensor": "1/2.3\"-Type",
        "Image Stabilization": "Optical in Integrated Lens",
        "Focal Length": "4.5 to 54mm (35mm Equivalent: 25 to 300mm)",
        "Optical Zoom": "12x",
        "Aperture": "Maximum: f/3.6 to 7<br>Minimum: Not Specified by Manufacturer",
        "ISO/Gain Sensitivity": "Native: 80 to 3200",
        "Max Recording Modes": "<b>H.264/MP4/MPEG-4</b><br>Up to 1080p at 29.97 fps",
        "Media/Memory Card Slot": "Single Slot: microSD/microSDHC/microSDXC",
        "Wireless": "Wi-Fi<b></b> / <b></b>NFC",
        "Display Type": "Fixed 3\" LCD",
        "Built-In Flash/Light": "Yes, Flash Only",
        "Battery": "1x NB-11LH Rechargeable, 3.6 VDC, 800 mAh (Included)",
        "Dimensions (W x H x D)": "3.9 x 2.3 x 0.9\" / 99.6 x 58 x 22.8&nbsp;mm",
        "Weight": "4.59&nbsp;oz / 130&nbsp;g (Body Only)"
      },
      "Imaging": {
        "Effective Sensor Resolution": "Effective: 20.2 Megapixel (5184 x 3888)<br>Actual: 21.1 Megapixel",
        "Image Sensor": "1/2.3\"-Type CMOS",
        "Image Stabilization": "Optical in Integrated Lens"
      },
      "Lens": {
        "Focal Length": "4.5 to 54mm (35mm Equivalent: 25 to 300mm)",
        "Optical Zoom": "12x",
        "Digital Zoom": "4x <i>Maximum</i> (48x Combined Zoom)",
        "Aperture": "Maximum: f/3.6 to 7<br>Minimum: Not Specified by Manufacturer",
        "Focus Range": "<span class=\"repeat-wrapper\"><b>Normal</b><br>1.97\" to Infinity / 5&nbsp;cm to Infinity (Wide)<b></b><br>3.3' to Infinity / 1&nbsp;m to Infinity (Telephoto)<b></b></span><br /><span class=\"repeat-wrapper\"><b>Auto</b><br>0.39\" to Infinity / 1&nbsp;cm to Infinity (Wide)<b></b><br>3.3' to Infinity / 1&nbsp;m to Infinity (Telephoto)<b></b></span><br /><span class=\"repeat-wrapper\"><b>Macro</b><br>0.39\" to 1.64' / 1&nbsp;cm to 50&nbsp;cm (Wide)<b></b></span>"
      },
      "Exposure Control": {
        "Shutter Speed": "<span class=\"repeat-wrapper\"><b></b>1/2000 to 1 Second<b></b></span>",
        "Bulb/Time Mode": "Bulb Mode (1 to 15 Seconds)",
        "ISO/Gain Sensitivity": "<span class=\"repeat-wrapper\"><b></b>Native: 80 to 3200<b></b></span>",
        "Metering Method": "Center-Weighted Average, Evaluative, Spot",
        "Exposure Modes": "Program",
        "Exposure Compensation": "-2 to +2 EV (1/3 EV Steps)",
        "White Balance": "<b>Presets: </b>Auto, Cloudy, Custom, Daylight, Fluorescent, Fluorescent H, Tungsten",
        "Continuous Shooting": "<span class=\"repeat-wrapper\">Up to 2.5 fps at Maximum Resolution<b></b><b></b></span>",
        "Interval Recording": "No",
        "Self-Timer": "2/10-Second Delay",
        "Special Options": "Fireworks, Fish-Eye Effect, Handheld Night, Miniature Effect, Monochrome, Portrait, Toy Camera Effect"
      },
      "Still Image Capture": {
        "Aspect Ratio": "1:1, 3:2, 4:3, 16:9",
        "Image File Format": "JPEG"
      },
      "Video Capture": {
        "Internal Recording": "<span class=\"repeat-wrapper\"><b>H.264/MP4/MPEG-4</b><br>1920 x 1080p at 29.97 fps (30 Mb/s)<br><b></b>1280 x 720 at 29.97 fps (8 Mb/s)<b></b><br><b></b>640 x 480 at 29.97 fps (3 Mb/s)<b></b></span>",
        "Video Output": "No",
        "Recording Limit": "30-Minute Maximum",
        "Broadcast Output": "NTSC/PAL",
        "IP Streaming": "No",
        "Built-In Microphone": "Mono",
        "Audio Recording": "AAC LC Audio"
      },
      "Interface": {
        "Media/Memory Card Slot": "Single Slot: microSD/microSDHC/microSDXC",
        "Internal Storage": "No",
        "Video I/O": "1x Micro-HDMI Output",
        "Audio I/O": "No",
        "Power I/O": "No",
        "Other I/O": "1x Mini-USB&nbsp;2.0 (Data) Output",
        "Wireless": "<span class=\"repeat-wrapper\"><b></b>Wi-Fi<b></b> / <b></b>NFC<b></b></span>",
        "Mobile App Compatible": "Yes: Android & iOS<br>App Name: Canon Camera Connect<br>Functionality: Access Stored Files, Remote Control",
        "Global Positioning (GPS, GLONASS, etc.)": "GPS<br>*<i>Via Connected Smartphone</i>"
      },
      "Monitor": {
        "Display Type": "Fixed 3\" LCD",
        "Resolution": "461,000 Dot"
      },
      "Viewfinder": {
        "Type": "No Viewfinder Support"
      },
      "Flash": {
        "Built-In Flash/Light": "Yes, Flash Only",
        "Flash Modes": "Auto, Flash On, Off, Slow Sync",
        "Effective Flash Range": "<span class=\"repeat-wrapper\">1.6 to 13.1' / 0.5 to 4&nbsp;m (Wide)<br>3.3 to 6.6' / 1 to 2&nbsp;m (Telephoto)</span>",
        "Non-Shoe Flash Connection": "No"
      },
      "General": {
        "Environmental Resistance": "No",
        "Operating Conditions": "32 to 104&deg;F / 0 to 40&deg;C at 10 to 90% Humidity",
        "Battery": "1x NB-11LH Rechargeable, 3.6 VDC, 800 mAh (Included)",
        "Shoe Mount": "No",
        "Dimensions (W x H x D)": "3.9 x 2.3 x 0.9\" / 99.6 x 58 x 22.8&nbsp;mm",
        "Weight": "4.59&nbsp;oz / 130&nbsp;g (Body Only)"
      },
      "Packaging Info": {
        "Package Weight": "0.6 lb",
        "Box Dimensions (LxWxH)": "4.5 x 3 x 2.75\""
      }
    },
    "stockStatus": "IN_STOCK",
    "stockMessage": "Temporarily Out of Stock",
    "stockImportance": "LOW",
    "stockShipTime": null,
    "maxSellQuantity": 20,
    "minSellQuantity": 1,
    "sellsInMultipleOf": 1,
    "rating": 4.8,
    "reviewCount": 98,
    "hasReviews": true,
    "reviews": [
      {
        "is_syndicated": false,
        "staffResponses": [],
        "not_helpful": 0,
        "reviewer_type": "Verified Buyer",
        "rating": 5,
        "videos_and_tags": [],
        "title": "Love it",
        "syndicated_content_attribution": "Bhphotovideo",
        "productInfo": {
          "groupVariables": [
            {
              "type": "Color",
              "value": "Silver"
            },
            {
              "type": "Kit Configuration",
              "value": "Camera Only"
            }
          ],
          "title": "Canon PowerShot ELPH 360 HS A Digital Camera (Silver)"
        },
        "badges": [
          "S"
        ],
        "shared_review_id": "182499376",
        "review": "The camera came in really quick. It was easy to set up and pick my settings for the camera. At first. I thought the images weren’t that great of quality but then once I download them onto my phone, they look amazing very similar to a G7X, but it’s smaller and super easy to travel with. I take it everywhere with me.",
        "images_and_tags": [],
        "name": "Julissa",
        "location": "null",
        "helpful": 0,
        "created_date": "2026-06-19"
      },     
      {
        "is_syndicated": false,
        "staffResponses": [],
        "not_helpful": 0,
        "reviewer_type": "Verified Buyer",
        "rating": 5,
        "videos_and_tags": [],
        "title": "Best camera for you",
        "syndicated_content_attribution": "Bhphotovideo",
        "productInfo": {
          "groupVariables": [
            {
              "type": "Color",
              "value": "Black"
            },
            {
              "type": "Kit Configuration",
              "value": "Camera Only"
            }
          ],
          "title": "Canon PowerShot ELPH 360 HS A Digital Camera (Black)"
        },
        "badges": [
          "S"
        ],
        "shared_review_id": "179088079",
        "review": "When I got the package which held my camera I was as excited as a bride by her wedding. I hope that when you open your camera delivery you will be as excited as me.",
        "images_and_tags": [
          {
            "thumbnail_uri": "https://photos-us.bazaarvoice.com/photo/2/cGhvdG86YmhwaG90b3ZpZGVv/b0b6426a-abf0-5299-b457-3504ebc34aca",
            "uri": "https://photos-us.bazaarvoice.com/photo/2/cGhvdG86YmhwaG90b3ZpZGVv/59576870-f9b7-526a-ba34-52e194f3e25b"
          },
          {
            "thumbnail_uri": "https://photos-us.bazaarvoice.com/photo/2/cGhvdG86YmhwaG90b3ZpZGVv/0e3ddc46-37d9-509b-b48f-d9452dce57f5",
            "uri": "https://photos-us.bazaarvoice.com/photo/2/cGhvdG86YmhwaG90b3ZpZGVv/da5dc8ee-a4af-542a-90cb-80123df46677"
          },
          {
            "thumbnail_uri": "https://photos-us.bazaarvoice.com/photo/2/cGhvdG86YmhwaG90b3ZpZGVv/7dbff092-ecba-598d-b305-8d7bb14208d4",
            "uri": "https://photos-us.bazaarvoice.com/photo/2/cGhvdG86YmhwaG90b3ZpZGVv/77582c0a-6ffd-5fc4-8330-7fefd6e3cebe"
          },
          {
            "thumbnail_uri": "https://photos-us.bazaarvoice.com/photo/2/cGhvdG86YmhwaG90b3ZpZGVv/6bf7f26c-c31b-59d3-aa5b-0ec8978ff3b2",
            "uri": "https://photos-us.bazaarvoice.com/photo/2/cGhvdG86YmhwaG90b3ZpZGVv/11253e5d-b121-587c-aa40-398677d521a6"
          }
        ],
        "name": "Miriam",
        "location": "null",
        "helpful": 0,
        "created_date": "2026-01-13"
      }
    ],
    "mainImageUrl": "https://static.bhphoto.com/images/images1500x1500/1757407699_1919558.jpg",
    "imageCount": 9,
    "hasImages": true,
    "hasSecondaryImages": true,
    "hasVideos": false,
    "has3DImages": true,
    "hasManufacturerWarranty": true,
    "manufacturerWarrantyPeriod": "Year",
    "hasProtectionPlans": true,
    "protectionPlanCount": 6,
    "lowestProtectionPlanPrice": 44.99,
    "hasWarranty": true,
    "sellingPoints": [
      "20.2MP 1/2.3\" CMOS Image Sensor",
      "DIGIC 4+ Image Processor",
      "12x Optical Zoom Lens",
      "25-300mm (35mm Equivalent)",
      "3.0\" 461k-Dot LCD Monitor",
      "Full HD 1080p Video Recording at 30 fps",
      "Intelligent IS Image Stabilization",
      "Built-In Wi-Fi with NFC",
      "ISO 3200 and 7.2 fps Continuous Shooting",
      "microSDXC/microSDHC/microSD Card Slot"
    ],
    "scrapedAt": "2026-06-20T08:48:02.108701",
    "rawPayloadVersion": "v1"
  }
```

***

### ⚙️ Input Options

| Input | Type | Description |
|---|---|---|
| `productUrls` | array | One or more B\&H product URLs to scrape |
| `includeReviews` | boolean | Enable customer review scraping for each product |
| `reviewsLimit` | number | Maximum number of reviews to collect per product when reviews are enabled |

***

### ⚡ Apify Resurrect Run Support

The actor supports Apify resurrect runs for interrupted or partially completed scraping jobs.

If a run crashes or stops unexpectedly, the resurrected run can continue from the same scraping position instead of starting from the beginning.

***

### 💰 How Much Does It Cost?

| Feature | Free Apify Users | Paid Apify Users |
|----------|----------|----------|
| Product Scraping | $4 per 1,000 results | $2 per 1,000 results |
| Comments Scraping | $2 per 1000 comments | $1 per 1,000 comments |
| Products Limit | Includes 10 products for testing | Unlimited products |
| Comments Limit | 20 comments per product | Unlimited |

💡 Start with a small test run to verify the output structure and estimate usage before launching larger scraping jobs.

Free users can unlock comments scraping, unlimited profiles, and higher limits by upgrading their Apify subscription: https://apify.com/pricing

***

### ⚠️ Limitations & Troubleshooting

- **Fewer reviews than requested**\
  If a product has fewer reviews than the specified `reviewsLimit`, the actor will return all available reviews. The total number of returned reviews cannot exceed the number published on the product page.

- **Null or missing values**\
  Some fields may be `null` or missing when the information is not provided by B\&H or is unavailable for a particular product.

- **Free plan limit**\
  Free users can collect up to **10 products** and up to **20 reviews per product**. Upgrade to a paid plan to unlock higher review limits.

***

### ❓ Frequently Asked Questions

#### How do I scrape B\&H product data and customer reviews?

Simply provide one or more B\&H product URLs, choose whether to include reviews, set your desired review limit, and start the actor. The scraper will extract product details, specifications, pricing, availability information, ratings, and customer reviews into a structured dataset.

#### What product data can I extract from B\&H Photo Video?

The actor extracts a wide range of product information, including:

- Product names and descriptions
- Brand names and product identifiers
- Current prices and discount information
- Product specifications and technical details
- Stock availability and inventory status
- Product images and media assets
- Ratings and review counts
- Included accessories and package contents
- Warranty and protection plan information
- Customer reviews and review metadata

#### Can I scrape B\&H product specifications and pricing data?

Yes. The actor extracts detailed specification tables and pricing information directly from B\&H product pages. This makes it useful for product catalog creation, competitor analysis, price monitoring, ecommerce automation, and product research workflows.

#### Is scraping B\&H product data legal?

This actor only collects publicly available information from publicly accessible B\&H product pages. However, you are responsible for ensuring your use of the collected data complies with applicable laws, regulations, website terms of service, and your intended business use case.

#### Why am I receiving fewer reviews than requested?

The actor can only return reviews that exist on the product page. If a product has fewer reviews than your configured `reviewsLimit`, all available reviews will be returned. Free plan users are also limited to a maximum of 20 reviews per product.

#### Do I need external proxies or API access?

No. The actor handles request management and extraction automatically without requiring external proxies or API keys.

***

### 💬 Support

Check the troubleshooting section above before opening an issue.

For bug reports, scraping issues, or feature requests, please open an [issues](https://console.apify.com/organization/XjtvaC9MoQZuFl4Da/actors/tnj8MctPxclDLiOUd/issues) on the actor page.

If you need custom scraper modifications, automation workflows, or additional extraction features, feel free to contact:

📧 kamakrazeekaushik@gmail.com

When reporting issues, please include the Actor Run ID or relevant run logs to help speed up debugging.

***

### 🔗 Related Scrapers

- 📷 [B\&H Product Catalog Builder & Monitor](https://apify.com/krazee_kaushik/b-h-product-scraper) - Build your product catalog once from category pages, then run in Monitor Mode to track daily price drops and stock changes at a fraction of standard platform compute costs.
- 🛍️ [Meesho Search Results Scraper](https://apify.com/krazee_kaushik/meesho-search-results-scraper) – Marketplace product listings and customer reviews
- 🚚 [Blinkit Search Results Scraper](https://apify.com/krazee_kaushik/blinkit-search-results-scraper) – Quick-commerce pricing and availability
- ⚡ [Zepto Product Scraper](https://apify.com/krazee_kaushik/zepto-scraper) – Hyperlocal delivery intelligence

# Actor input Schema

## `productUrls` (type: `array`):

Enter one or more product URLs. Please ensure URLs follow the 'https://www.bhphotovideo.com/c/product/...'format.

## `includeReviews` (type: `boolean`):

Fetches reviews for each product. Default is 100.

## `reviewsLimit` (type: `integer`):

Number of reviews to scrape for each product

## Actor input object example

```json
{
  "productUrls": [
    "https://www.bhphotovideo.com/c/product/893134-REG/Profoto_900753_Pro_Head_Plus_UV.html"
  ],
  "includeReviews": false,
  "reviewsLimit": 100
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# 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 = {
    "productUrls": [
        "https://www.bhphotovideo.com/c/product/893134-REG/Profoto_900753_Pro_Head_Plus_UV.html"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("krazee_kaushik/b-h-product-reviews-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 = { "productUrls": ["https://www.bhphotovideo.com/c/product/893134-REG/Profoto_900753_Pro_Head_Plus_UV.html"] }

# Run the Actor and wait for it to finish
run = client.actor("krazee_kaushik/b-h-product-reviews-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 '{
  "productUrls": [
    "https://www.bhphotovideo.com/c/product/893134-REG/Profoto_900753_Pro_Head_Plus_UV.html"
  ]
}' |
apify call krazee_kaushik/b-h-product-reviews-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "B&H Product & Reviews Scraper",
        "description": "Scrape B&H product data and customer reviews from one or multiple product URLs. Extract prices, specifications, ratings, reviews, images, inventory status, warranty information, and other product details. Export to Excel, CSV, JSON, XML, RSS, and HTML.",
        "version": "0.0",
        "x-build-id": "9SBrSpNGkF16Zcc91"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/krazee_kaushik~b-h-product-reviews-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-krazee_kaushik-b-h-product-reviews-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/krazee_kaushik~b-h-product-reviews-scraper/runs": {
            "post": {
                "operationId": "runs-sync-krazee_kaushik-b-h-product-reviews-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/krazee_kaushik~b-h-product-reviews-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-krazee_kaushik-b-h-product-reviews-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",
                "required": [
                    "productUrls"
                ],
                "properties": {
                    "productUrls": {
                        "title": "B&H Product URLs",
                        "type": "array",
                        "description": "Enter one or more product URLs. Please ensure URLs follow the 'https://www.bhphotovideo.com/c/product/...'format.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeReviews": {
                        "title": "Include reviews?",
                        "type": "boolean",
                        "description": "Fetches reviews for each product. Default is 100.",
                        "default": false
                    },
                    "reviewsLimit": {
                        "title": "Number of reviews per product",
                        "type": "integer",
                        "description": "Number of reviews to scrape for each product",
                        "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
