bhphotovideo.com API: Get B&H Photo product
Gets a B&H Photo product's details by name, product link, or B&H number. A name uses the best matching search result; details and prices reflect the public page.
Unofficial. Not affiliated with or endorsed by bhphotovideo.com.
Inputs
Values from the run on Oct 31, 2026, shown under Output.
- Product, required
product Product name, B&H product link, or B&H number, for example Sony a7 IV body.
SOA74
Input as JSON
{ "product": "SOA74"}Output
{ "brand": "Sony", "price": 1998, "currency": "USD", "bh_number": "SOA74", "in_the_box": [ "Sony a7 IV Mirrorless Camera", "Sony NP-FZ100 Battery (2280mAh)", "AC Adapter" ], "image_links": [ "https://www.bhphotovideo.com/images/images500x500/sony_ilce_7m4_b_alpha_a7_iv_mirrorless_1634812545_1667800.jpg" , "https://static.bhphoto.com/images/multiple_images/images500x500/1764007167_IMG_1634875.jpg" , "https://static.bhphoto.com/images/multiple_images/images500x500/1764007167_IMG_1634876.jpg" ], "star_rating": 4.6, "availability": "In Stock", "key_features": [ "33MP Full-Frame Exmor R CMOS BSI Sensor", "Up to 10 fps Shooting, ISO 100-51200", "4K 60p Video in 10-Bit, S-Cinetone" ], "product_link": "https://www.bhphotovideo.com/c/product/1667800-REG/sony_ilce_7m4_b_alpha_a7_iv_mirrorless.html" , "product_name": "Sony a7 IV Mirrorless Camera", "review_count": 500, "specifications": [ { "name": "Lens Mount", "group": "Key Specs", "value": "Sony E" }, { "name": "Effective Sensor Resolution", "group": "Key Specs", "value": "33 Megapixel (7008 x 4672)" }, { "name": "Image Sensor", "group": "Key Specs", "value": "Full-Frame" } ], "instant_savings": 500, "manufacturer_model_number": "ILCE-7M4/B" }Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"bhphotovideo.com/get_product","input":{"product":"SOA74"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "bhphotovideo.com/get_product" , "input": { "product": "SOA74" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "bhphotovideo.com/get_product" , "input": { "product": "SOA74" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run bhphotovideo.com/get_product# with {"product":"SOA74"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "product" ], "properties": { "product": { "type": "string", "minLength": 1, "description": "Product name, B&H product link, or B&H number, for example Sony a7 IV body." } }}Output schema
{ "type": "object", "required": [ "product_name", "brand", "bh_number", "manufacturer_model_number", "price", "currency", "instant_savings", "availability", "key_features", "specifications", "in_the_box", "star_rating", "review_count", "image_links", "product_link" ], "properties": { "brand": { "type": [ "string", "null" ] }, "price": { "type": [ "number", "null" ] }, "currency": { "type": "string" }, "bh_number": { "type": [ "string", "null" ] }, "in_the_box": { "type": "array", "items": { "type": "string" } }, "image_links": { "type": "array", "items": { "type": "string" } }, "star_rating": { "type": [ "number", "null" ] }, "availability": { "type": [ "string", "null" ] }, "key_features": { "type": "array", "items": { "type": "string" } }, "product_link": { "type": "string" }, "product_name": { "type": "string" }, "review_count": { "type": [ "integer", "null" ] }, "specifications": { "type": "array", "items": { "type": "object", "required": [ "group", "name", "value" ], "properties": { "name": { "type": "string" }, "group": { "type": [ "string", "null" ] }, "value": { "type": "string" } }, "additionalProperties": false } }, "instant_savings": { "type": [ "number", "null" ] }, "manufacturer_model_number": { "type": [ "string", "null" ] } }, "additionalProperties": false}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
bhphotovideo.com/get_product- Returns
- name, brand, B&H number, model number, price, instant savings, availability, key features, specifications, in the box, rating, images, link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method bhphotovideo.com/get_product with the inputs above.
Ask your agent
- What's the current price and stock status of the Canon EOS R6 Mark II body at B&H?
- Pull up the specs and what comes in the box for the DJI Mini 4 Pro Fly More Combo
- Look up B&H # NISZ8 and tell me its model number and any instant savings
- Get me the key features, rating, and images for the Rode Wireless PRO microphone system
- Check this listing for availability and price: https://www.bhphotovideo.com/c/product/1735470-REG/fujifilm_16821845_x_t50_mirrorless_camera_silver.html
See more
All bhphotovideo.com methodsSearches B&H Photo products by keywords, with optional price range and sort order, and returns prices, savings, stock, ratings, identifiers, images and links in site order. Exact category names fall back to phrase matching to show products.
bhphotovideo.com/search_productsGets details, price and availability for a Walmart product by name or product link, using Walmart's default location.
walmart.com/get_productGets full details for a Newegg US product by name, product link, or item number. Seller, price, stock and shipping reflect the selected public offer; shipping may be unavailable when not displayed.
newegg.com/get_productFinds a Flipkart product from its name or link and returns its price, offers, seller, ratings, highlights, specifications, images and delivery estimate (for a PIN code when given).
flipkart.com/get_product_by_productGets details for an Amazon product, found by name or by link, in a chosen country store. Offer prices, delivery and variants may be missing when Amazon does not show them publicly.
amazon.com/get_productFinds a Lowe's product by name, item number or product link and returns its details, price, specifications, images and availability at the nearest store for a ZIP code (or the site's default store).
lowes.com/get_productGet one AliExpress product’s prices, variants, reviews, shipping to a chosen country, seller and specifications from its link or the best-selling name match. Sold counts may be rounded, and shipping options are those shown for the displayed variant.
aliexpress.com/get_productGets an H&M item's current country-specific price, sizes, colours and images by product name or product page link. Description, materials, composition, care and sustainability details are always returned as null.
hm.com/get_product