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

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

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

Amazon SP-API · getItemOffersBatch · POST /batches/products/pricing/v0/itemOffers More efficient than calling productPricing_getItemOffers repeatedly. Batch up to 20 ASINs.

## Call it

MCP tool call:

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

Tool API (early access — contact us):

```bash
curl -X POST https://api.sellersheetai.com/api/v1/tools/productPricing_getItemOffersBatch \
  -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/items/{asin}/offers' (fill in ASIN) - 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` — ASINs whose request Amazon accepted (statusCode 200, no errors).
- `data.failed` — [{identifier, status, reason}] for every ASIN that failed at the TRANSPORT level — statusCode != 200 (a bogus ASIN 400s here with body.errors [{code: 'InvalidInput', ...}]), 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-ASIN responses, each with: - request.Asin / 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 ASINs per call). 2. Call productPricing_getItemOffersBatch.

## Body (Amazon schema): {requests: [ItemOffersRequest]} (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