# listings_fetch_attributes_by_asins (https://sellersheetai.com/docs/mcp-api/tools/listings_fetch_attributes_by_asins)

> Bulk fetch + flatten Amazon catalog attributes for N ASINs in ONE call.

Access: **READ** · toolset amazon_sp · family sp.catalogItems_2022-04-01

Amazon SP-API · getCatalogItem · GET /catalog/2022-04-01/items/{asin} Amazon SP-API · getDefinitionsProductType · GET /definitions/2020-09-01/productTypes/{productType} For each item, fetches the catalog item, infers productType (or uses the explicit hint), looks up the schema, and flattens the whole JSON into cells keyed by Amazon's own flat-file keys — the operator can paste them straight into a Publish Queue row. To edit a listing you own, fetch by SKU (listings_fetch_attributes_by_skus) — an ASIN returns Amazon's merged catalog values, which can include other contributors' data; a full UPDATE would submit them as yours.

## Call it

MCP tool call:

```json
{
  "name": "listings_fetch_attributes_by_asins",
  "arguments": {
    "store": "myStore-US",
    "items": []
  }
}
```

Tool API (early access — contact us):

```bash
curl -X POST https://api.sellersheetai.com/api/v1/tools/listings_fetch_attributes_by_asins \
  -H "Authorization: Bearer $SELLERSHEET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"store":"myStore-US","items":[]}'
```

## Arguments

| Name | Type | Required | Description |
|---|---|---|---|
| `store` | string | yes | the store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim. |
| `items` | object[] | yes | List of {asin: str, productType?: str}. productType is auto-inferred from the catalog if omitted. |
| `locale` | string |  | schema locale for the labels; defaults to the marketplace's. Allowed: DEFAULT \| ar \| ar_AE \| de \| de_DE \| en \| en_AE \| en_AU \| en_CA \| en_GB \| en_IN \| en_SG \| en_US \| es \| es_ES \| es_MX \| es_US \| fr \| fr_CA \| fr_FR \| it \| it_IT \| ja \| ja_JP \| nl \| nl_NL \| pl \| pl_PL \| pt \| pt_BR \| pt_PT \| sv \| sv_SE \| tr \| tr_TR \| zh \| zh_CN \| zh_TW. Allowed: DEFAULT \| ar \| ar_AE \| de \| de_DE \| en \| en_AE \| en_AU \| en_CA \| en_GB \| en_IN \| en_SG \| en_US \| es \| es_ES \| es_MX \| es_US \| fr \| fr_CA \| fr_FR \| it \| it_IT \| ja \| ja_JP \| nl \| nl_NL \| pl \| pl_PL \| pt \| pt_BR \| pt_PT \| sv \| sv_SE \| tr \| tr_TR \| zh \| zh_CN \| zh_TW. |
| `language_tag` | string |  | which language's entries to keep; defaults to the marketplace's primary listing locale. |

## Result

- `data.rows` — [{asin, productType, attributes: {key: cell},
- `data.rows.names` — {key: display_name},
- `data.rows.data.rows.names.dropped_entries` — {attr: sentence}} | {asin, error}] `attributes` keys are self-describing (Amazon's flat-file grammar); `names` gives a NEW key's display name (for a column the target sheet doesn't have yet); `dropped_entries` names, per attribute, any entry skipped for a foreign marketplace/language, in plain English. A row carries `note` when its product-type schema could not be served and the cells were typed from the JSON alone.

## Params (Amazon schema; getCatalogItem)

- asin*: string marketplaceIds*: [string] includedData: attributes | classifications | dimensions | identifiers | images | productTypes | relationships | salesRanks | summaries | vendorDetails (list) locale: string

## Params (Amazon schema; getDefinitionsProductType)

- productType*: string sellerId: string marketplaceIds*: [string] productTypeVersion: string requirements: LISTING | LISTING_PRODUCT_ONLY | LISTING_OFFER_ONLY requirementsEnforced: ENFORCED | NOT_ENFORCED locale: DEFAULT | ar | ar_AE | de | … | zh_TW (38 values) parentageLevel: NONE | CHILD | PARENT

## Workflow

- 1. Read column matching `externally_assigned_product_identifier` (or `merchant_suggested_asin`) for the selected rows. 2. Call this tool ONCE with all ASINs. 3. Never rename or move a template column (the template is the source of truth). A bare key, `#1.value`, line 1 of `#*.value` and a literal marketplace/language bracket equal to row 3 are the same column — the template's spelling wins. 4. Any other key that is not yet a column — a leaf the template's productType schema doesn't have (the row's productType differs from the template's) — is APPENDED AT THE RIGHT END, named from `names`, so the seller sees the whole listing. Do not write a special row-4 note for it: its place says it was appended. Only a REPEAT of a cluster the template already has (entry index >1 whose `#1` twin is on the sheet) is inserted beside it. EVERY column is sent on submit — the sheet is trusted; whoever owns the sheet removes a column Amazon no longer takes after reading the result. 5. Write each row's cells back under their row-5 keys (attribute columns start at F; E is attributes_json) and set column D (productType) from the response.