Run everything you never had time to implement. Define your process once, and keep it running with Qore.

All reports
Amazon Seller Central
Catalog & Listings

Amazon Catalog Items Report (Catalog Items API)

The Amazon Catalog Items report is Amazon's own catalog record for each ASIN you sell, pulled through the Catalog Items API's searchCatalogItems operation rather than as a Reports API file. For every ASIN and marketplace it gives you the product type, external identifiers, the variation family, the browse node and its full path, the headline sales ranks, the summary fields (brand, title, colour, size, package quantity), item and package dimensions, every image rendition, the product-type attribute blob exploded one row per element, and, for vendor accounts only, the vendor details. It is a snapshot of the catalog as it stands on the day of the pull, not a history.

Known upstream as
searchCatalogItems
One row is
One row per ASIN
Refreshed
Point-in-time snapshot
Columns
82
Marketplaces
All marketplaces
History
None inside the file. Every pull is Amazon's current catalog state, stamped with the snapshot date and carrying no date range, and the catalog mutates in place, so the only history that exists is the run of daily snapshots you have kept yourself.
Latency
The data is answered live by a synchronous endpoint, so a pull reflects the catalog at the moment of the call. Coverage is whatever ASINs the call names, since the operation takes a list of identifiers rather than dumping an account. How far Amazon's catalog itself runs behind the retail site on ranks and images is not established.
Requires

What this report contains

This is Amazon's catalog record for the ASINs you sell, as it stands on the day you ask. It is not a Reports API file: it comes from the Catalog Items API, one item resource per ASIN, and that resource carries several sections at once, so the file lands as six tables joined on asin (and reported_marketplace_id).

The report's own table, the master spine, is one row per ASIN per marketplace. It flattens the identity sections: product_type; the external identifiers ean, upc, gtin and isbn (several of one type are comma-joined into a cell); the VARIATION relationship as parent_asins, relationship_type, variation_theme and variation_attributes; the browse classification as a leaf (classification_id, classification) plus the parent chain walked root to leaf in classification_path; and the two sales-rank families, sales_rank within sales_rank_title and display_group_rank within display_group_rank_group. Each rank is the headline rank by construction: the lists arrived with at most one entry per family, and only the first is kept.

Five companion tables hang off it. Summaries is again one row per ASIN per marketplace with the descriptive fields: brand, item_name, manufacturer, model_number, part_number, color, size, style, the summary's own browse_classification, website_display_group, package_quantity and four flags. Dimensions carries up to two scopes, item_ and package_, each with height, length, width and weight as a float with its unit in the column beside it; an ASIN whose catalog entry has no dimensions still gets a row, with every measurement null. Images is one row per rendition: variant (MAIN and PT01 to PT08 observed), link, height, width, several sizes per variant. Attributes explodes the product-type attribute blob one row per element, in the same format as the listings attributes table: attribute_name, attribute_index, language_tag, value, value_json. Vendor details (brand_code, product_group, product_category, replenishment_category and so on) is populated only for vendor accounts and header-only for everyone else.

Everything is Amazon's current catalog state and mutates in place. There is no date range on any row, only the snapshot date the pull was made.

How to get it

There is no report type for this data in the Reports API or in Data Kiosk. It comes from the Selling Partner API's Catalog Items API (v2022-04-01) through the synchronous searchCatalogItems operation. You pass up to twenty identifiers per call and the marketplace, and ask for the includedData sections you want. Amazon's enum for the operation is attributes, classifications, dimensions, identifiers, images, productTypes, relationships, salesRanks, summaries and vendorDetails; ask for nothing and you get summaries alone. Each call answers the same item resource as the per-ASIN getCatalogItem, so one batch loop replaces thousands of single calls.

The trap is that the catalog has no dump operation. It is Amazon's catalog, not your account's, so nothing will hand you "all my items"; something has to say which ASINs to ask about. The usual list is the account's own listed ASINs, which is why the file covers your catalogue — but the list is an input to the call, so coverage is only ever as complete and as current as whatever list you feed it.

The second trap is vendorDetails. A seller credential that requests it gets an InvalidInput error reading "FORBIDDEN, requires vendor access", and the whole call fails with it. Request that section only when the account is a vendor. Vendors, for their part, answer every other section too.

Each section in the response is a list with one element per marketplace, and every element names its marketplaceId. One search call covers one store — Amazon's reference gives marketplaceIds on searchCatalogItems a Max count : 1 — so covering several stores means one call per store, and each row is stamped with the marketplace its call requested. Widening a pull to several marketplaces therefore means more calls, and more rows, not dropped ones.

Whether any Seller Central page offers an equivalent export is not something the evidence here establishes, and no Amazon help page describing one turned up. The API is the only path this page can vouch for.

Sample rows

Illustrative values, not data from a real account. Shown to give the shape of the file.

asinreported_marketplace_idproduct_typeupcparent_asinsrelationship_typevariation_themeclassificationsales_rank_titlesales_rank
B0EXAMPLE01ATVPDKIKX0DERDRINKING_CUP012345678905B0EXAMPLE00VARIATIONCOLOR/SIZETumblers & Water GlassesKitchen & Dining1450
B0EXAMPLE02ATVPDKIKX0DERDRINKING_CUP012345678912B0EXAMPLE00VARIATIONCOLOR/SIZETumblers & Water GlassesKitchen & Dining3820
B0EXAMPLE00ATVPDKIKX0DERDRINKING_CUPCOLOR/SIZETumblers & Water Glasses
B0EXAMPLE03ATVPDKIKX0DERWATER_BOTTLE012345678929,012345678936Sports Water BottlesSports & Outdoors26400

Field reference

Main table

ColumnTypeDescription
asinstringThe ASIN this row describes. Together with reported_marketplace_id it is the join key from this main table to all five companion tables (summaries, dimensions, images, attributes, vendor details).
reported_marketplace_idstringThe marketplace whose catalog view this row reflects, as Amazon named it in the section element. On every validated row it matched the marketplace that was requested. A pull covering several marketplaces lands one row per marketplace for the same ASIN, not one merged row.
product_typestringThe Amazon product type assigned to the ASIN in this marketplace, from the productTypes section. It decides which attribute names the attributes table can carry for the ASIN.
eanstringThe EAN Amazon holds for the ASIN. Where the catalog holds several identifiers of the same type they are comma-joined into this one cell, so do not assume a single value.
upcstringThe UPC Amazon holds for the ASIN, comma-joined when there are several.
gtinstringThe GTIN Amazon holds for the ASIN, comma-joined when there are several.
isbnstringThe ISBN Amazon holds for the ASIN, comma-joined when there are several. Empty on anything that is not a book.
parent_asinsstringThe parent ASIN of the variation family this ASIN belongs to, taken from the VARIATION relationship. Amazon's field is a list of ASINs, so a cell can hold more than one. Empty for a standalone ASIN and for a parent itself; grouping children on it rebuilds the family.
relationship_typestringThe relationship the parent came from. The spine flattens the VARIATION relationship, so this names that relationship on rows that have a parent and is empty where there is none.
variation_themestringThe variation theme of the family, meaning the axis or axes the children differ on.
variation_attributesstringThe attribute names the family's variation theme varies on, as Amazon lists them in the relationship.
classification_idstringThe browse node id of the leaf classification Amazon has placed the ASIN in for this marketplace.
classificationstringThe display name of that leaf browse node.
classification_pathstringThe browse node's parent chain walked from the root down to the leaf, so the full breadcrumb Amazon places the ASIN under is in one cell. Ends at classification.
sales_rank_classification_idstringThe browse node id of the classification the sales_rank is measured within.
sales_rank_titlestringThe display name of the classification the sales_rank is measured within.
sales_rankint64The ASIN's headline classification rank in this marketplace. Rank lists arrived with at most one entry per family on every validated row and only the first is kept, so this is the headline rank by construction and any secondary ranks are not in the file. Snapshot value; ranks move daily.
display_group_rank_groupstringThe website display group the display_group_rank is measured within.
display_group_rank_titlestringThe display name of that website display group.
display_group_rankint64The ASIN's headline rank within its website display group, the second of the two sales-rank families. Same rule as sales_rank: first entry only, snapshot value.

summaries

ColumnTypeDescription
asinstringJoin key back to the main table, together with reported_marketplace_id. This table is also one row per ASIN per marketplace, so the join is one-to-one.
reported_marketplace_idstringThe marketplace this summary row reflects. Join on it together with asin.
brandstringThe brand name Amazon shows for the ASIN in this marketplace.
item_namestringThe listing title as the catalog holds it. Changes in place, so a difference between two snapshots is a real title change.
manufacturerstringThe manufacturer name in the catalog summary.
model_numberstringThe manufacturer's model number for the item.
part_numberstringThe manufacturer's part number for the item.
colorstringThe colour attribute as it appears in the summary. Populated only where the product type carries one.
sizestringThe size attribute as it appears in the summary. Populated only where the product type carries one.
stylestringThe style attribute as it appears in the summary. Populated only where the product type carries one.
item_classificationstringAmazon's summary-level classification of the item. The reference's enum is BASE_PRODUCT (a product that can be bought directly, standalone or as a variation child), VARIATION_PARENT (the parent that groups children into a variation family), PRODUCT_BUNDLE (a parent representing a bundle of items) and OTHER.
browse_classificationstringThe browse node named in the summary section. The master table's classification comes from the classification section and carries the full path in classification_path; this one is the summary's own single node and has no path beside it.
browse_classification_idstringThe browse node id for browse_classification.
website_display_groupstringThe code of the website display group the summary places the ASIN in.
website_display_group_namestringThe display name for website_display_group.
package_quantityint64How many units one sellable package of this ASIN contains, per the catalog.
adult_productboolWhether Amazon flags the item as an adult product.
autographedboolWhether Amazon flags the item as autographed.
memorabiliaboolWhether Amazon flags the item as memorabilia.
trade_in_eligibleboolWhether Amazon flags the item as eligible for its trade-in program.

dimensions

ColumnTypeDescription
asinstringJoin key back to the main table, together with reported_marketplace_id. There is one row here per ASIN per marketplace even when the catalog holds no dimensions at all; that case lands as a row with every measurement null, not as a missing row.
reported_marketplace_idstringThe marketplace this dimensions row reflects.
item_heightfloat64Height of the item itself, the item scope, as a physical measurement. Read it with item_height_unit beside it; values are not normalised to one unit.
item_height_unitstringThe unit item_height is expressed in.
item_lengthfloat64Length of the item itself. Read with item_length_unit.
item_length_unitstringThe unit item_length is expressed in.
item_widthfloat64Width of the item itself. Read with item_width_unit.
item_width_unitstringThe unit item_width is expressed in.
item_weightfloat64Weight of the item itself. Read with item_weight_unit.
item_weight_unitstringThe unit item_weight is expressed in.
package_heightfloat64Height of the item as packaged, the package scope. The package scope was present on 40 of 60 validated seller items and the item scope on 23, so expect one, both or neither to be filled.
package_height_unitstringThe unit package_height is expressed in.
package_lengthfloat64Length of the item as packaged. Read with package_length_unit.
package_length_unitstringThe unit package_length is expressed in.
package_widthfloat64Width of the item as packaged. Read with package_width_unit.
package_width_unitstringThe unit package_width is expressed in.
package_weightfloat64Weight of the item as packaged. Read with package_weight_unit.
package_weight_unitstringThe unit package_weight is expressed in.

images

ColumnTypeDescription
asinstringJoin key back to the main table, together with reported_marketplace_id. The grain here is one image rendition rather than one ASIN, so a single ASIN has many rows.
reported_marketplace_idstringThe marketplace this image rendition is served for.
variantstringWhich image slot the rendition belongs to. MAIN plus PT01 through PT08 were observed. Several rows share a variant because Amazon serves several sizes of each image.
linkstringThe URL of this rendition.
heightint64The rendition's height in pixels. Together with width this is how you pick one size per variant.
widthint64The rendition's width in pixels.

attributes

ColumnTypeDescription
asinstringJoin key back to the main table, together with reported_marketplace_id. The grain here is one element of the product-type attribute blob, exploded in the same format as the listings attributes table, so a single ASIN has many rows.
attribute_namestringThe attribute's key in the product-type attribute blob. Which keys appear depends on the ASIN's product_type.
attribute_indexint64The element's position within a multi-valued attribute, so an attribute with several values produces several rows distinguished by this.
reported_marketplace_idstringThe marketplace this attribute value applies to.
language_tagstringThe language tag Amazon attaches to the element, where the attribute is language-specific.
valuestringThe element's value flattened to text.
value_jsonstringThe element kept as JSON. Amazon documents the attributes section only as a JSON object keyed by attribute name, and nothing on its side says how an element divides between the flattened value and this column, so read the pair together rather than either alone.

vendor_details

ColumnTypeDescription
asinstringJoin key back to the main table, together with reported_marketplace_id. Rows exist here only for vendor accounts; on a seller account the table is header-only.
reported_marketplace_idstringThe marketplace these vendor details apply to.
brand_codestringAmazon's vendor-side brand code for the item.
manufacturer_codestringAmazon's vendor-side manufacturer code for the item.
manufacturer_code_parentstringThe parent of manufacturer_code in Amazon's vendor manufacturer hierarchy.
product_groupstringThe vendor product group Amazon files the item under.
product_category_idstringThe id of the vendor product category.
product_categorystringThe display name of the vendor product category.
product_subcategory_idstringThe id of the vendor product subcategory.
product_subcategorystringThe display name of the vendor product subcategory.
replenishment_categorystringAmazon's vendor replenishment category for the item.

Use cases

Auditing variation families. Group the spine on parent_asins and compare variation_theme and variation_attributes across the children. A child whose theme differs from its siblings, or a child with no parent where you expected one, is a family Amazon has split or a listing that has come loose from it.

Building a sales-rank history you can trust. sales_rank and display_group_rank are today's headline ranks and nothing more; there is no history in the file. Keeping the daily snapshot and stacking sales_rank by asin over time is how you get a rank trend, and sales_rank_title tells you which node the rank is measured in so a node change does not read as a rank collapse.

Checking where Amazon actually filed your product. classification_path is the full browse breadcrumb Amazon places the ASIN under, root to leaf. Compare it against where you meant the product to sit, and compare the spine's classification against the summary's browse_classification when the two disagree.

Feeding dimensions into fee and shipping estimates. package_height, package_length, package_width and package_weight, each with its unit column, are the packaged measurements Amazon holds. Check the item_* scope as well, and treat an all-null dimensions row as "Amazon has none" rather than a missing join.

Image QA across the catalog. Count distinct variant values per asin in the images table to find ASINs with no MAIN image or with fewer secondary slots filled than their siblings, and pick one rendition per variant by height and width before you do so.

Reconciling identifiers with your own systems. upc, ean, gtin and isbn are what Amazon holds against the ASIN. Split the comma-joined values before matching them to an ERP.

Vendor category roll-ups. For a vendor account, product_group, product_category, product_subcategory and replenishment_category give Amazon's own retail hierarchy, which is what Vendor Central reporting is usually cut by.

Limitations and gotchas

It is a snapshot, not a history. Ranks move daily, titles and images change, and the record mutates in place. The rows carry no date range, only a snapshot date. If you did not keep yesterday's pull, yesterday's rank is gone.

Only the headline rank is kept. Rank lists arrived with at most one entry per family on every validated row, and only the first is kept. If Amazon returns a second rank in a family, it is not in the file.

Coverage is only the ASINs the call names. The report asks about the ASINs your account lists, because that is the list supplied to it. An ASIN missing from that list is absent from the file, and competitors' ASINs are not in it at all.

vendor_details is access-gated, not sparse. For a seller account the table is header-only, and requesting the section fails the call outright. Do not read an empty vendor details table as missing data.

Dimensions come in two scopes with units beside them. package_ was present on 40 of 60 validated seller items and item_ on 23; 20 of 60 had no dimensions at all and land as an all-null row. The unit columns are not normalised, so never compare or sum measurements without converting on the unit column first.

Images have several rows per variant. Amazon serves several sizes of each image, so counting rows in the images table overstates the number of images. Pick a size by height and width first.

Identifiers are comma-joined. A cell in upc, ean, gtin or isbn can hold more than one value.

Rows are per marketplace. Every table carries reported_marketplace_id, and a pull covering several marketplaces — one call each — produces one row per marketplace for the same ASIN. Join the companion tables to the spine on both columns, or an image list will multiply.

Attributes follow the product type. The keys in attribute_name are whatever the ASIN's product_type defines, so the set differs from one ASIN to the next; there is no fixed column per attribute.

FAQ

Is there a Reports API report type for Amazon catalog items?

No. Catalog data comes from the Catalog Items API, whose searchCatalogItems operation answers live for up to twenty identifiers per call. There is no createReport flow and no Data Kiosk dataset for it.

Why is the vendor details table empty for my account?

Because it is gated on account type. Sellers who request the vendorDetails section get an InvalidInput error saying it requires vendor access, so the section is requested only for vendor accounts and the table is header-only for everyone else.

Why does one ASIN have thirty rows in the images table?

The grain of that table is one row per image rendition. Each image slot, MAIN and PT01 through PT08, is served in several sizes, and every size is a row. Pick one per slot using the height and width columns.

Why are all the dimension columns blank for some ASINs?

Amazon's catalog holds no dimensions for that ASIN in that marketplace. The row is kept so you can tell the difference between no dimensions and no catalog entry; a third of the validated items had no dimensions at all.

Can I use this to get the sales rank history of an ASIN?

Only by keeping the snapshots yourself. Each pull carries the headline rank as of that day and no date range, so a daily pull stacked over time is the history; the file alone has none.

Can I ask about ASINs I do not sell?

The endpoint answers Amazon's catalog rather than your account's, so it needs a list of ASINs to ask about. The list supplied is the ASINs your account lists, which is why the file covers your catalogue and not a competitor's.

Sources

Every researched claim on this page, and the Amazon or Walmart page it came from.

  • marketplaces — developer-docs.amazon.com/catalog-items-api — 'Roles for the Catalog Items API v2022-04-01 … searchCatalogItems … Regions NA, EU, FE'. The same page gives Availability as 'Sellers and Vendors'.
  • marketplaces — developer-docs.amazon.com/sp-api-endpoints — the three selling regions name every store between them: North America (Canada, US, Mexico, Amazon Brazil), Europe (Ireland, Spain, UK, France, Belgium, Netherlands, Germany, Italy, Sweden, South Africa, Poland, Saudi Arabia, Egypt, Turkey, United Arab Emirates, Amazon India) and Far East (Singapore, Australia, Amazon Japan) — the same 23 stores _taxonomy.yaml lists, which is why NA + EU + FE reads as `all`. The claim is region-level and nothing more: Amazon publishes no per-store availability list for this operation, and only US pulls were validated (60 seller items, 20 vendor items), so no store outside the US is evidence-tested.
  • latency: no Amazon statement exists to cite. Checked — developer-docs.amazon.com/catalog-items-api, developer-docs.amazon.com/catalog-items-api-v2022-04-01-reference and developer-docs.amazon.com/catalog-items-api-v2022-04-01-use-case-guide: none of the three publishes a freshness, update-frequency or refresh-interval statement for catalog data. What the `latency:` field records instead — a synchronous endpoint answering live, and coverage limited to the identifiers a call names — is observed in the production files rather than documented, and how far Amazon's catalog runs behind the retail site on ranks and images stays unestablished.
  • how-to-get-it (console path): unresolved, so the page stays hedged. No Amazon help page was found that exports Amazon's own catalog record for an ASIN — browse path, ranks, image renditions, the per-marketplace view. The nearest candidate, 'Download Category Listings report' ( — sellercentral.amazon.com/GFYSJC946YKTD68L), is named for your listings rather than Amazon's catalog, and the Seller Central help hub is behind a seller login, so the page could not be read unauthenticated and its contents are not confirmed here. A help page that cannot be read is not proof that no console export exists.
  • seller_type — developer-docs.amazon.com/catalog-items-api — the version table gives 'Availability: Sellers and Vendors', and the note reads 'Vendors can retrieve additional vendor-specific details'. The reference adds, on ItemVendorDetails, 'Vendor details are only available to vendors', which corroborates the vendor gate observed on that section.
  • cadence — developer-docs.amazon.com/catalog-items-api-v2022-04-01-reference — corroboration only; the value follows the production files. Both operations are synchronous GETs under a requests-per-second usage plan (GET /catalog/2022-04-01/items, GET /catalog/2022-04-01/items/{asin}); there is no createReport flow, no schedule and no publication statement anywhere in the reference, which is what `snapshot` records.
  • how-to-get-it — developer-docs.amazon.com/catalog-items-api-v2022-04-01-reference — the IncludedData enum for searchCatalogItems is exactly `attributes`, `classifications`, `dimensions`, `identifiers`, `images`, `productTypes`, `relationships`, `salesRanks`, `summaries`, `vendorDetails`, and the parameter table defaults includedData to `summaries`. The same table gives identifiers 'Max count : 20', which matches the twenty-per-call the page already states.
  • fields — item_classification — developer-docs.amazon.com/catalog-items-api-v2022-04-01-reference — the ItemClassification enum is BASE_PRODUCT ('a product that can be directly purchased'), VARIATION_PARENT ('a parent catalog item that groups child items into a variation family'), PRODUCT_BUNDLE ('a parent catalog item that represents a bundle of items') and OTHER.
  • fields — parent_asins and variation_attributes — developer-docs.amazon.com/catalog-items-api-v2022-04-01-reference — ItemRelationship.parentAsins is '<string> array', 'ASINs of the related items that are parents of this item', and ItemVariationTheme.attributes is '<string> array', 'Names of the Amazon catalog item attributes that are associated with the variation theme', beside theme with the example 'COLOR_NAME/STYLE_NAME'. Both can hold several values; the reference says nothing about how they are flattened into a cell. The descriptions now say a cell can hold more than one and name no separator, which is as far as the document goes — the comma-joining stated for `ean`, `upc`, `gtin` and `isbn` was observed on those columns only and was not extended to these two.
  • fields — value and value_json — developer-docs.amazon.com/catalog-items-api-v2022-04-01-reference — there is no such split on Amazon's side to check against. `attributes` is documented only as 'A JSON object containing structured item attribute data that is keyed by attribute name', conforming to the product type definition from the Product Type Definitions API. The text/JSON pair has no counterpart on Amazon's side, so how one element divides between the two columns is undocumented; the field descriptions say so rather than guess.
  • conflict — developer-docs.amazon.com/catalog-items-api-v2022-04-01-reference — on searchCatalogItems, 'marketplaceIds required … Max count : 1'; on getCatalogItem the same parameter carries no max count. Re-checked, still true. The evidence from the production files is unchanged and the page follows it — rows are per marketplace, and one search call covers one marketplace — so the two are reconcilable rather than contradictory. The prose now states the `Max count : 1` and says one call covers one store, so 'widening a pull' can no longer be read as a single call spanning several stores.
  • upstream.report_type — developer-docs.amazon.com/searchcatalogitems — Amazon's own name for this data is the operation, not a Reports API report type: the reference page is titled `searchCatalogItems`, and its OpenAPI definition gives `"operationId": "searchCatalogItems"` on `GET /catalog/2022-04-01/items` under `"title": "Catalog Items v2022-04-01"`, which is the name the page already states throughout.