Get Product Details
Fetch full details for a retail product by URL or product ID, including title, brand, images, feature bullets, price in USD, and ratings. When the listed price is known, also returns an order quote: the estimated total charge includes a service fee and a tax/shipping headroom cap — the actual product charge never exceeds the cap. Ideal for: verifying a product before ordering, getting an exact charge estimate, comparing options.
Catalog action Integrations
Fetch full details for a retail product by URL or product ID, including title, brand, images, feature bullets, price in USD, and ratings. When the listed price is known, also returns an order quote: the estimated total charge includes a service fee and a tax/shipping headroom cap — the actual product charge never exceeds the cap. Ideal for: verifying a product before ordering, getting an exact charge estimate, comparing options.
At a Glance
| Field | Value |
|---|---|
| Action ID | get-product-details |
| Category | Integrations |
| Connector | Not required |
| Requires gas | No |
| Funds movement | None declared |
| Tags | shopping, products, details, quote, ecommerce, read |
Payload Schema
| Field | Type | Required | Description |
|---|---|---|---|
productUrl | string | No | Product URL (e.g. https://www.amazon.com/dp/B01N5IB20Q or https://www.walmart.com/ip/123456789\). A bare 10-character Amazon ASIN is also accepted. Provide this OR productId. |
productId | string | No | Retailer product identifier (Amazon ASIN or Walmart item ID). Provide this OR productUrl. |
retailer | string | No | Retailer for productId lookups. Default: 'amazon'. Ignored when productUrl is provided. |
quantity | number | No | Quantity used to compute the order quote. Default: 1. |
Result Schema
| Field | Type | Required | Description |
|---|---|---|---|
productId | string | Yes | Retailer product identifier. |
retailer | string | Yes | Retailer the product belongs to. |
title | string | Yes | Product title. |
brand | string | null | No | Brand name, when available. |
mainImageUrl | string | null | No | Primary product image URL, when available. |
featureBullets | array | Yes | Product feature bullet points (may be empty). |
priceCents | number | null | No | Listed per-unit price in integer USD cents. Null when the retailer hides the price. |
priceUsd | number | null | No | Listed per-unit price in USD (2 decimal places). Null when unavailable. |
stars | number | null | No | Average star rating (0-5), when available. |
reviewCount | number | null | No | Number of customer reviews, when available. |
productUrl | string | Yes | Canonical product URL — pass to order-product. |
orderQuote | object | null | Yes | Estimated charge breakdown for ordering this product (null when the listed price is unknown). Includes the service fee and a tax/shipping headroom cap; the actual product charge never exceeds the cap. |
Examples
json{ "type": "get-product-details", "payload": { "productUrl": "https://example.com/webhook", "productId": "example-productId", "retailer": "amazon", "quantity": 1 }, "children": []}
bashcurl -X POST "https://api.b3os.org/v1/actions/get-product-details/test" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "inputs": { "productUrl": "https://example.com/webhook", "productId": "example-productId", "retailer": "amazon", "quantity": 1 }}'
Payload fields can use workflow expressions such as {{$trigger.body.amount}}, {{$nodes.fetch.result.price}}, and {{$props.asset}} when the value should come from a trigger, prior node, or reusable workflow prop.
