Skip to content
amz

Data model

Every record amz emits, field by field, so you know exactly what each command returns and how to reach it.

amz turns each Amazon surface into one typed record. Every command emits a stream of one record type, and the JSON name of a field is stable across formats, so --fields, --template, and DuckDB's data->>'name' all use the same names you see here.

A field is present only when the page carried it. An omitted field always means Amazon did not show it for your marketplace and session, never that amz dropped it. The two always-present anchors on every record are url (the canonical page the record came from) and, on fetched records, fetched_at (an RFC 3339 UTC timestamp).

Product

product returns one Product per ASIN. It is the richest record amz builds, read from the JSON-LD block first and completed from the HTML.

Field Type Meaning
asin string the item
parent_asin string the variation parent, when the page is a child
title string product title
brand string brand name
brand_id string the brand's browse-node id, when linked
price number current price
currency string ISO currency code (USD, GBP, ...)
list_price number the struck-through list price, when discounted
savings number list_price minus price
savings_pct number the discount as a whole percent
coupon string the clip-coupon line, when one is offered
rating number average star rating, 0 to 5
ratings_count number number of ratings
reviews_count number number of written reviews
answered_qs number answered questions on the page
bought_past_month string the "N+ bought in past month" line
availability string the stock line as shown
in_stock bool whether availability means buyable
description string the product description paragraph
bullet_points []string the "About this item" feature bullets
specs map the technical-details table as key/value pairs
images []string full-resolution image URLs, one per distinct photo
videos []string inline product video URLs
category_path []string the breadcrumb, root to leaf
browse_node_ids []string the node ids behind the breadcrumb
seller_id string the merchant's seller id
seller_name string the merchant's display name
sold_by string the "Sold by" line from the buy box
ships_from string the "Ships from" line from the buy box
fulfilled_by string the fulfiller (often Amazon)
variant_asins []string the other ASINs in the variation family
similar_asins []string "similar items" ASINs on the page
rank number the overall Best Sellers Rank
rank_category string the category that overall rank is in
ranks []ProductRank every Best Sellers Rank, overall and per subcategory
marketplace string the marketplace slug the record came from

ProductRank is one rank line: rank (number) and category (string). A product is usually ranked once overall and again in one or more subcategories; rank/rank_category keep the overall rank flat for quick filtering, while ranks holds them all.

Images and videos

Amazon serves the same photo at dozens of sizes and from several CDN hosts. amz strips the size modifier from every image URL and pins one canonical host, so images holds one full-resolution URL per distinct photo, with thumbnails, tracking pixels, and sprites removed. The same canonicalization runs on every record that carries an image, so an image URL means the same thing everywhere.

Card

search and related return a stream of Card, a lightweight catalog hit.

Field Type Meaning
position number 1-based position in the stream
rank number rank on the source page, when it carries one
asin string the item
title string product title
price number current price
list_price number the struck-through price, when discounted
currency string ISO currency code
rating number average star rating
ratings_count number number of ratings
image string the card thumbnail, canonicalized to full resolution
badge string "Amazon's Choice", "Best Seller", and similar tags
prime bool Prime eligibility
bought_past_month string the "N+ bought in past month" line
sponsored bool whether the card is a paid placement
kind string the source rail (search, related, also-viewed, ...)

Review

reviews returns one Review per review.

Field Type Meaning
review_id string stable id, derived when the page has none
asin string the reviewed item
reviewer_id string the reviewer's profile id
reviewer_name string display name
rating number star rating, 1 to 5
title string review title
text string review body
date string the review date as shown
country string the reviewer's country
verified_purchase bool the verified-purchase badge
helpful_votes number "N people found this helpful"
images []string reviewer photos, full resolution
variant_attrs map the format strip parsed to key/value (colour, size)

QA

qa returns one QA per question-and-answer pair.

Field Type Meaning
qa_id string stable id for the pair
asin string the item
question string the question text
question_by string who asked
answer string the top answer
answer_by string who answered
helpful_votes number votes on the answer

Offer

offers returns one Offer per buying option.

Field Type Meaning
asin string the item
price number the offer price
currency string ISO currency code
shipping string the shipping line
condition string New, Used - Like New, and so on
seller_name string the offering seller
seller_id string the seller's id
seller_rating string the seller's feedback summary
fulfilled_by string the fulfiller
delivery string the delivery promise
is_buybox bool whether this is the featured Buy Box offer

BestsellerEntry

The five chart commands (bestsellers, new-releases, movers, wished, gifted) all return BestsellerEntry.

Field Type Meaning
list_type string which chart (bestsellers, most-gifted, ...)
category string the category scope, when set
node_id string the browse-node scope, when set
rank number rank in the chart
asin string the item
title string product title
price number current price
currency string ISO currency code
rating number average star rating
ratings_count number number of ratings

Category

category returns one Category per browse node.

Field Type Meaning
node_id string the browse-node id
name string the node name
parent_node_id string the parent node, when known
breadcrumb []string the path from the root
child_node_ids []string the immediate children
top_asins []string the ASINs on the landing page

Brand

brand returns one Brand per storefront.

Field Type Meaning
slug string the storefront slug
name string brand name
description string the storefront description
logo_url string the brand logo, full resolution
banner_url string the storefront banner, full resolution
follower_count number followers, when shown
featured_asins []string the ASINs the storefront features

Seller

seller returns one Seller per third-party profile.

Field Type Meaning
seller_id string the seller's id
name string the seller's display name
rating string the headline rating line
rating_count number number of ratings
positive_pct number percent positive feedback
neutral_pct number percent neutral feedback
negative_pct number percent negative feedback

Author

author returns one Author per Author Central page.

Field Type Meaning
slug string the author slug
name string author name
bio string the biography
photo_url string the author photo, full resolution
website string the linked website
book_asins []string the author's book ASINs
follower_count number followers, when shown

Deal

deals returns one Deal per deals-grid entry.

Field Type Meaning
asin string the item
title string product title
deal_price number the deal price
list_price number the pre-deal price
discount_pct number the discount as a whole percent
badge string the deal badge ("Lightning Deal", ...)
currency string ISO currency code

Reaching a field

Because every field has one stable name, the same name works in every tool:

# project columns in any format
amz product B084DWG2VQ -o csv --fields asin,price,savings_pct,rank

# a custom line with a template
amz search "usb c cable" --template '{{.asin}} {{.price}} {{.title}}'

# a typed column out of the local store's JSON
amz db query "select asin, (data->>'price')::double price from products order by price desc limit 10"