Skip to main content
GET
Get Product Details
The response is the retailer’s own product payload, passed through unmodified. That means the field set depends on the retailer: the Response section below lists every field each retailer returns, tagged by retailer where a field is specific to one, and the example dropdown shows a full response for each.

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/details is the same call at the same price, paid per request instead of from a wallet.

What to pass, and where the price is

All prices are integers in cents, except Etsy, which reports minor units of the listing’s own currency.
status is the one field every response carries. It is completed when the payload 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

Product details. The payload is the retailer's, passed through unmodified, so the exact field set depends on retailer — the schema below lists every field each retailer returns, and the example dropdown shows one real response per retailer. status is always present.

Product details, passed through from the retailer. Common fields are listed first; fields marked with a retailer name are only present in that retailer's payload. Anything the retailer returns that is not listed here is passed through as well.

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 payload: amazon, walmart, bestbuy, etsy, or shopify (with the store's hostname in domain).

product_id
string

Identifier you passed in: ASIN (Amazon), item id (Walmart), bsin (Best Buy), product handle (Shopify), or listing id (Etsy).

title
string | null

Product title.

brand
string | null

Brand or manufacturer. Shopify: the store's vendor. Etsy: not set — see shop_name.

main_image
string | null

URL of the primary product image.

images
string[]

URLs of all product images.

product_description
string | null

Long-form description (Amazon, Walmart, Best Buy). Shopify and Etsy use description.

description
string | null

Long-form description (Shopify, Etsy). Plain text on Etsy; may contain HTML on Shopify.

price
integer | null

Price in cents (minor units of currency_code on Etsy). Amazon: the buy-box price, which is not always present and is often not the cheapest offer — use the offers endpoint for pricing. Best Buy: the New condition price. Shopify: the default variant's price.

stars
number | null

Average product rating, 0–5 (Amazon, Walmart, Best Buy). Not set on Etsy — see shop_review_average.

review_count
integer | null

Number of product reviews (Amazon, Walmart).

num_reviews
integer | null

Number of product reviews (Best Buy).

feature_bullets
string[]

Highlight bullets (Amazon, Walmart, Best Buy).

product_details
string[]

Specification lines, e.g. Item model number: 5438 (Amazon, Walmart, Best Buy).

categories
string[]

Category breadcrumb, broadest first (Amazon, Walmart, Best Buy).

variant_specifics
object[]

The variant axes and values that identify this product (Amazon, Walmart, Best Buy).

all_variants
object[]

Every sibling variant of this product and its identifier (Amazon, Walmart).

epids
object[]

External product identifiers (Amazon, Walmart, Best Buy).

epids_map
object

The same identifiers keyed by type, e.g. {"UPC": "048526054381"} (Amazon, Walmart).

timestamp
integer

Unix time the retailer page was retrieved (Amazon, Walmart).

url
string | null

Canonical product URL (Shopify, Etsy).

available
boolean | null

Whether the product can currently be bought (Shopify, Etsy). Etsy: false while the shop is on vacation even if stock exists — see shop_is_vacation.

tags
string[]

Merchant-assigned tags (Shopify, Etsy).

asin
string

Amazon only. The product's ASIN.

original_retail_price
integer | null

Amazon only. Crossed-out list price in cents, when the retailer shows one.

ship_price
integer | null

Amazon only. Shipping price in cents.

question_count
integer | null

Amazon only. Number of customer questions.

package_dimensions
object

Amazon only. Shipping weight and package size.

authors
string[]

Amazon only. Author names, for books.

aplus_html
string

Amazon only. present when the listing has A+ marketing content. The HTML itself is not returned.

fresh
boolean

Amazon only. Amazon Fresh item.

pantry
boolean

Amazon only. Amazon Pantry item.

handmade
boolean

Amazon only. Amazon Handmade item.

digital
boolean

Amazon only. Digital-only item (software, video, game codes). Zinc cannot order these.

buyapi_hint
boolean

Amazon only. false when the item cannot be ordered through Zinc; true when it might be.

sku
string | null

Best Buy only. Numeric SKU, for cross-referencing with search results (which return the SKU as product_id).

product_url
string

Best Buy only. Canonical product URL.

offers
object[]

Best Buy only. Price per condition (new plus each open-box grade). For Amazon and Walmart offers use the offers endpoint.

domain
string

Shopify only. Store hostname you passed as retailer.

handle
string

Shopify only. Product handle (same value as product_id).

shopify_product_id
string | null

Shopify only. The store's numeric product id.

product_type
string | null

Shopify only. The store's product type.

price_min
integer | null

Shopify only. Cheapest variant price in cents.

price_max
integer | null

Shopify only. Most expensive variant price in cents.

listing_id
string

Etsy only. Listing id (same as product_id).

currency_code
string | null

Etsy only. ISO 4217 currency of price, e.g. USD, EUR. Prices are not converted.

quantity
integer | null

Etsy only. Units the shop has in stock.

state
string | null

Etsy only. Listing state: active, inactive, sold_out, expired, …

materials
string[]

Etsy only. Materials listed by the shop.

taxonomy_id
integer | null

Etsy only. Etsy's category id. No category name is returned.

who_made
string | null

Etsy only. i_did, someone_else, or collective.

when_made
string | null

Etsy only. Etsy's production-era bucket, e.g. made_to_order, 2020_2026, before_2006.

is_supply
boolean | null

Etsy only. Craft supply, not a finished good.

is_customizable
boolean | null

Etsy only. Buyer can request customization.

listing_type
string | null

Etsy only. physical, download, or both. A download has nothing to ship.

num_favorers
integer | null

Etsy only. Users who favorited the listing.

views
integer | null

Etsy only. Listing view count.

has_variations
boolean | null

Etsy only. Whether the listing has variants at all. When true but variants is empty, Etsy did not expose the inventory matrix.

shop_name
string | null

Etsy only. Selling shop's name.

shop_url
string | null

Etsy only. Selling shop's URL.

shop_review_average
number | null

Etsy only. The shop's average rating over the past year, 0–5. Null when the shop has no recent reviews.

shop_review_count
integer | null

Etsy only. The shop's review count over the past year.

shop_is_vacation
boolean | null

Etsy only. Shop is on vacation mode.

variants
object[]

Shopify and Etsy only. Per-variant price and availability. Amazon and Walmart use variant_specifics / all_variants instead.