Skip to main content
POST
Get full details for one product
POST /agent/products/details returns the full product details for a specific product on a retailer (amazon or walmart) — title, images, description, specs, and more. It’s the agent-native, MPP-paid counterpart to the authenticated Get Product Details endpoint. No Zinc account is required. Each call is paid per request via the Machine Payments Protocol (MPP).

Pricing

Caching and freshness

Retailer data is cached. Use these optional query parameters to control freshness:
  • max_age — accept a cached response only if it is no older than this many seconds.
  • newer_than — accept a cached response only if it was retrieved at or after this Unix timestamp.
  • async — return immediately with status: "processing" instead of waiting for a fresh fetch. Poll again to retrieve the completed result.

402 Payment Required

If no valid payment credential is provided, the API returns 402 Payment Required with one WWW-Authenticate header per payable method (per RFC 9110 §11.6.1). Your MPP client uses these to complete payment and resubmit the request. See the MPP guide for details.

Query Parameters

product_id
string
required

Product identifier (e.g. ASIN)

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.