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

> Bulk fetch + flatten Amazon listings attributes for N OWNED SKUs in ONE call.

Access: **READ** · toolset amazon_sp · family sp.listingsItems_2021-08-01

Amazon SP-API · getListingsItem · GET /listings/2021-08-01/items/{sellerId}/{sku} Amazon SP-API · getDefinitionsProductType · GET /definitions/2020-09-01/productTypes/{productType} Same shape as `listings_fetch_attributes_by_asins`, but reads your own submitted listing (listings_getListingsItem) instead of Amazon's merged catalog. productType comes from summaries[].productType.

## Call it

MCP tool call:

```json
{
  "name": "listings_fetch_attributes_by_skus",
  "arguments": {
    "store": "myStore-US",
    "skus": []
  }
}
```

Tool API (early access — contact us):

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

## 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. |
| `skus` | object[] | yes | List of SKUs from the configured store. |
| `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` — [{sku, productType, attributes: {key: cell},
- `data.rows.names` — {key: display_name},
- `data.rows.data.rows.names.dropped_entries` — {attr: sentence}, note?} | {sku, error}] `note` is present when the row's product-type schema could not be served and the cells were typed from the JSON alone.

## Params (Amazon schema; getListingsItem)

- sellerId*: string sku*: string marketplaceIds*: [string] issueLocale: string includedData: summaries | attributes | issues | offers | fulfillmentAvailability | procurement | relationships | productTypes (list)

## 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 B (sku) for the selected rows. 2. Call this tool ONCE with all SKUs. 3. Place the returned keys by the template-is-truth recipe in `listings_fetch_attributes_by_asins` (steps 3–4): never rename a template column; a key outside the template's productType schema goes at the right end, named from `names`. 4. Write each row's flat attributes back + col D productType. 5. `product_site_launch_date` comes back with the rest. Nothing drops it for you: before you update this listing, remove the key or leave the fetched value — see listings_build_payload's note on it.