bhphotovideo.com APIbhphotovideo.com ↗
Search B&H Photo inventory, fetch product specs, pricing, stock status, category trees, and review summaries via a structured JSON API.
curl -X GET 'https://api.parse.bot/scraper/ed4a2459-d6a9-4c48-8055-6992602eecbe/search_products?page=1&sort=BS&query=sony+camera' \ -H 'X-API-Key: $PARSE_API_KEY'
Search for products by keyword. Returns a paginated list of products with basic details including pricing, stock status, images, and available filters for refining results.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| sort | string | Sort order: BS (Best Sellers), RE (Relevance), PLH (Price Low to High), PHL (Price High to Low), CR (Customer Rating) |
| queryrequired | string | Search keyword |
{
"type": "object",
"fields": {
"count": "integer total number of matching products",
"items": "array of product objects with pricing, stock, images, and core info",
"filters": "array of filter groups with available values for refining search"
},
"sample": {
"data": {
"sort": "RELEVANCE",
"count": 449,
"items": [
{
"core": {
"shortDescription": "Sony a7R VI Mirrorless Camera"
},
"itemKey": {
"skuNo": 1970580,
"itemSource": "REG"
},
"priceInfo": {
"price": 4498
},
"stockInfo": {
"status": "DYNAMIC",
"statusMessage": "New Item - Coming Soon"
}
}
],
"filters": [
{
"id": "fct_category",
"name": "Category",
"type": "REGULAR",
"availableValues": [
{
"id": "mirrorless_system_cameras_16158",
"name": "Mirrorless Cameras",
"count": 365
}
]
}
],
"pageNumber": 1,
"itemsPerPage": 28
},
"status": "success"
}
}About the bhphotovideo.com API
The B&H Photo Video API covers 6 endpoints for searching products, browsing category hierarchies, retrieving full product specifications, and pulling customer review summaries from bhphotovideo.com. The get_product_detail endpoint alone returns over a dozen distinct response objects including priceInfo, stockInfo, specifications, imageInfo, and brand — making it straightforward to build product data pipelines for cameras, audio, lighting, and other photography gear.
Search and Browse
The search_products endpoint accepts a query string and returns a paginated list of matching products alongside a filters array you can use to drill down by brand, price range, or other attributes. Sort order is controlled by the sort parameter using codes like BS (Best Sellers), PLH (Price Low to High), or CR (Customer Rating). The count field in the response tells you total matching products, which you can use to calculate page depth. The get_category_products endpoint works the same way but is scoped to a specific category_id — for example, 9811 for Digital Cameras or 16158 for Mirrorless Cameras.
Product Detail and Specifications
get_product_detail takes a sku parameter (with or without a suffix like -REG) and returns a rich payload. The specifications object contains grouped spec items covering technical details for the product. priceInfo includes current price and savings data. stockInfo provides inventory status and a human-readable statusMessage. The brand object includes an isAuthorizedDealer flag, which is useful for filtering gray-market concerns. imageInfo returns arrays of product images.
Category Tree
get_category_tree requires no inputs and returns the full navigational category hierarchy — top-level departments with nested subcategories, images, and URLs. This is useful for building a local mirror of B&H's product taxonomy or seeding a crawl list of category IDs for use with get_category_products.
Reviews and Used Inventory
get_product_reviews_summary returns a snapshot object containing ratingHistogram, numReviews, and averageRating for a given SKU. It does not return individual review text. get_used_products returns a paginated list of used and refurbished inventory items with pricing and stock details, using the same sort parameter codes as the other listing endpoints.
- Track real-time pricing and stock status for camera gear across multiple SKUs using
get_product_detail - Build a product comparison tool for mirrorless cameras using
specificationsandpriceInfofields - Seed a product catalog with B&H's category hierarchy via
get_category_treeand then populate listings withget_category_products - Monitor used and refurbished equipment availability with
get_used_productsfor resale or deal-alert applications - Aggregate average ratings and review counts from
get_product_reviews_summaryacross a watchlist of SKUs - Power a search autocomplete or product recommendation engine using
search_productswith sort and filter parameters - Verify authorized dealer status for a brand before surfacing a product listing using the
brand.isAuthorizedDealerfield
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does B&H Photo Video have an official developer API?+
What does `get_product_reviews_summary` return, and does it include individual review text?+
snapshot object containing averageRating, numReviews, and a ratingHistogram showing the distribution of ratings. It does not return individual review text, reviewer names, or review dates. The API covers aggregate review statistics only. You can fork it on Parse and revise to add an endpoint that fetches individual review content.Can I filter search results by specific attributes like sensor size or lens mount?+
search_products and get_category_products endpoints return a filters array in the response that shows available filter groups and their values for a given query or category. However, passing those filter values as input parameters to narrow results is not currently supported by these endpoints. You can fork it on Parse and revise to add filter input parameters.How does pagination work across listing endpoints?+
search_products, get_category_products, and get_used_products endpoints all accept an integer page parameter. The count field in listing responses gives the total number of matching items, which you can use alongside a known page size to calculate how many pages exist for a given query or category.Does the API return international pricing or regional availability?+
priceInfo and stockInfo fields reflect US pricing and US inventory status from bhphotovideo.com. International pricing, regional tax variations, and shipping availability by country are not currently exposed. You can fork it on Parse and revise to add region-specific logic if needed.