Get Product Offers
Fetch the purchasable offers for a retail product by URL or product ID, with ACCURATE Amazon Prime eligibility, fulfillment (FBA), availability, seller, and the per-offer shipping price — unlike product search, which runs logged-out and under-reports Prime. Returns each offer plus a recommended bestOffer (cheapest available, preferring free shipping / Prime) and, when shipping is known, a cent-accurate order quote. Ideal for: confirming Prime/fast shipping before ordering, getting an exact pre-checkout quote, deciding whether an item ships free.
Catalog action Integrations
Fetch the purchasable offers for a retail product by URL or product ID, with ACCURATE Amazon Prime eligibility, fulfillment (FBA), availability, seller, and the per-offer shipping price — unlike product search, which runs logged-out and under-reports Prime. Returns each offer plus a recommended bestOffer (cheapest available, preferring free shipping / Prime) and, when shipping is known, a cent-accurate order quote. Ideal for: confirming Prime/fast shipping before ordering, getting an exact pre-checkout quote, deciding whether an item ships free.
At a Glance
| Field | Value |
|---|---|
| Action ID | get-product-offers |
| Category | Integrations |
| Connector | Not required |
| Requires gas | No |
| Funds movement | None declared |
| Tags | shopping, products, details, quote, lookup, 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. |
productUrl | string | Yes | Canonical product URL — pass to order-product. |
offerCount | number | Yes | Number of offers returned. |
hasPrimeOffer | boolean | Yes | True when any offer is Prime-eligible. |
hasFreeShippingOffer | boolean | Yes | True when any offer ships free. |
requiresShippingConfirmation | boolean | Yes | True when bestOffer is NOT a free-shipping/Prime buy — it carries a paid (or unknown) shipping fee. Surface bestOffer.shipPriceUsd to the user and have them accept the higher total or pick a Prime alternative BEFORE ordering; do not order silently (the cap may not cover the shipping). |
bestOffer | object | null | Yes | Recommended offer: cheapest available (preferring New, free shipping, then Prime). Null when no purchasable offer exists. |
offers | array | Yes | All purchasable offers with accurate Prime / fulfillment / shipping data. |
orderQuote | object | null | Yes | Charge estimate built on bestOffer (null when no priced offer). When shippingKnown is true the cap is cent-accurate (goods + tax buffer + real ship price); otherwise it falls back to a flat shipping allowance. Pass estimatedMaxTotalCents to order-product as maxTotalCents for an exact charge. |
Examples
json{ "type": "get-product-offers", "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-offers/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.
