productPricing_getListingOffersBatch
Get lowest-priced offers for a batch of SKU listings in a single request (Product Pricing v0).
readAmazon Seller (SP-API)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
In an AI client (MCP)
{
"name": "productPricing_getListingOffersBatch",
"arguments": {
"store": "myStore-US",
"requests_": []
}
}From code (Tool API)
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_":[]}'Early access — the Tool API is open on request, contact us.
Arguments
| Name | Type | Description |
|---|---|---|
storerequired | string | the store ref `<store>-<CC>` (name-country, e.g. 'myStore-US') — one of get_user_context's store_refs, verbatim. |
requests_required | object[] | 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
Every tool answers {notification, data, human_action}; data carries:
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