Skip to main content
GET
Get Product Offers
Returns every seller’s offer for a product: price, condition, seller reputation, handling time, and shipping options. Use it when you need the cheapest offer or a specific seller rather than the retailer’s default buy box. The Response section below documents the full offer object, and the example shows a real Amazon response.

Pricing

This is a metered data call, billed whether or not you go on to order. A retry loop bills every attempt: check GET /wallet/me rather than retrying into a 402.
The MPP counterpart POST /agent/products/offers is the same call at the same price, paid per request instead of from a wallet.

Retailer coverage

All prices are integers in cents. price excludes shipping; each entry in shipping_options[] carries its own price.
status is the one field every response carries. It is completed when offers[] is populated, processing when you passed async=true and the fetch is still running (poll again), and failed when the retailer returned an error, in which case code and message say why.

Authorizations

Authorization
string
header
required

Zinc API key (Bearer zn_...)

Headers

authorization
string | null

Path Parameters

product_id
string
required

Query Parameters

retailer
string
required

Retailer identifier: amazon, amazon_uk, amazon_ca, amazon_de, amazon_mx, amazon_fr, walmart, bestbuy, etsy, or a Shopify store's domain (e.g. retailer=yetch.studio)

max_age
integer | null

Max response age in seconds, at least 31 (mutually exclusive with newer_than)

Required range: x >= 31
newer_than
integer | null

Minimum retrieval timestamp, as a unix time (mutually exclusive with max_age). Windows shorter than 31s are widened to it.

async
boolean | null

Return immediately with status=processing

Response

Seller offers for the product, passed through from the retailer. status is always present; offers is populated when status is completed.

Every seller's offer for the product, passed through from the retailer. Shopify stores and Etsy listings have a single seller, so they are rejected here and report price and availability on the details endpoint; Best Buy's per-condition prices are on the details endpoint too.

status
enum<string>
required

completed when the payload below is populated. processing when async=true was passed and the fetch is still running — poll again. failed when the retailer returned an error; see code and message.

Available options:
completed,
processing,
failed
code
string

Only on status: failed. Machine-readable error code, e.g. product_not_found, invalid_request.

message
string

Only on status: failed. Human-readable explanation.

retailer
string

Retailer that served the offers, e.g. amazon.

asin
string

Amazon only. The product's ASIN.

offers
ProductOffer · object[]

One entry per seller offer. Empty when the product has no buyable offers.

timestamp
integer

Unix time the offers were retrieved.