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

> Get lowest-priced offers for a batch of SKU listings in a single request (Product Pricing v0).

Access: **READ** · toolset amazon_sp · family sp.productPricingV0

Amazon SP-API · getListingOffersBatch · POST /batches/products/pricing/v0/listingOffers More efficient than calling productPricing_getListingOffers repeatedly. Batch up to 20 SKUs.

## Call it

MCP tool call:

```json
{
  "name": "productPricing_getListingOffersBatch",
  "arguments": {
    "store": "myStore-US",
    "requests_": []
  }
}
```

Tool API (early access — contact us):

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

## 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. |
| `requests_` | object[] | yes | List of up to 20 batch request dicts. Each must include: - uri: str — '/products/pricing/v0/listings/{sellerSku}/offers' (fill in SKU, URL-encode the SKU if it contains special characters) - method: str — 'GET' - ItemCondition: str — Allowed: New \| Used \| Collectible \| Refurbished \| Club - MarketplaceId: str (optional) — defaults to the store's marketplace; pass only to override. - CustomerType: str (optional) — Allowed: Consumer \| Business |

## Result

- `notification.type` — 'warning' whenever data.failed is non-empty, else 'success'.
- `data.ok` — SKUs whose request Amazon accepted (statusCode 200, no errors).
- `data.failed` — [{identifier, status, reason}] for every SKU that failed at the TRANSPORT level — statusCode != 200, a body.errors list, or no response envelope at all (status='NoResponse', including when the whole payload came back empty). Body CONTENT is never judged: a listing with a real Summary and an empty Offers list is a genuine zero-offer answer, not a failure. Note the success body nests the real payload under body.payload. Never read a missing Buy Box price as "no Buy Box" without checking data.failed first.
- `data.responses` — list of per-SKU responses, each with: - request.SellerSKU / request.ItemCondition: the request this entry answers - status.statusCode: 200 means success - body.payload.Summary.BuyBoxPrices: current Buy Box prices - body.payload.Summary.LowestPrices: lowest prices by channel/condition - body.payload.Offers: individual offer details - body.errors: Amazon's error list when this entry failed NOTE the body.payload nesting — reading body.Summary directly is undefined.

## Workflow

- 1. Build requests_ list (up to 20 SKUs per call). 2. Call productPricing_getListingOffersBatch.

## Body (Amazon schema): {requests: [ListingOffersRequest]} (1–20), each item

- uri*: string method*: GET | PUT | PATCH | DELETE | POST headers: object MarketplaceId*: string ItemCondition*: New | Used | Collectible | Refurbished | Club CustomerType: Consumer | Business