Catalog search for the seller catalog
The Catalog Search API lets you search your Seller Catalog by submitting a request payload with query, filters, and sort options. It supports searching by attributes such as SKU, product name (wildcard supported), price, publication status, and rating, and it supports pagination using page/limit as well as cursor-based pagination with nextCursor.
Use cases
- Search your Seller Catalog by identifiers (for example, SKU, WPID, UPC, GTIN).
- Find items by lifecycle and publication status (for example, ACTIVE vs RETIRED; PUBLISHED vs UNPUBLISHED).
- Filter items based on rating/reviews or other supported attributes.
- Retrieve and review variant group details when returned in results.
Benefits
- Flexible search: combine query + filters + sort in one request.
- Pagination support for large result sets (
page/limitandnextCursor). - Wildcard search support for
productName.
Reference guide
This guide explains how to use the Catalog Search API to search your Seller Catalog using a structured request body (query, filters, sort) and paginate through results.
For full technical details, including endpoints, parameters, and brief descriptions, refer to the Catalog Search API Reference.
Endpoint
POST https://marketplace.walmartapis.com/v3/items/catalog/search
Query parameters
page(int32, default 0): Indicates which page of results to retrieve.limit(int32, default 100): Specifies the number of items to retrieve per page.nextCursor(string): Used for cursor-based pagination to retrieve the next set of items.
Throttling: Refer to the API throttling guide to understand the usage limitations for this API.
Request sample
curl --request POST \ --url 'https://marketplace.walmartapis.com/v3/items/catalog/search?page=0&limit=100' \ --header 'WM_CONSUMER.CHANNEL.TYPE: <consumer-channel-type>' \ --header 'WM_GLOBAL_VERSION: 3.1' \ --header 'WM_MARKET: us' \ --header 'WM_QOS.CORRELATION_ID: b3261d2d-028a-4ef7-8602-633c23200af6' \ --header 'WM_SEC.ACCESS_TOKEN: eyJraWQiOiIzZjVhYTFmNS1hYWE5LTQzM.....' \ --header 'WM_SVC.NAME: Walmart Service Name' \ --header 'accept: application/json' \ --header 'content-type: application/json' \ --data '
{ "query": { "field": "sku", "value": "12345678" }, "filters": [ { "field": "customerRating", "op": "greater_than", "values": [ "5" ] } ], "sort": { "field": "num_reviews", "order": "ASC" }
}
'
import requests url = "https://marketplace.walmartapis.com/v3/items/catalog/search"
params = {"page": 0, "limit": 100} headers = { "WM_CONSUMER.CHANNEL.TYPE": "<consumer-channel-type>", "WM_GLOBAL_VERSION": "3.1", "WM_MARKET": "us", "WM_QOS.CORRELATION_ID": "b3261d2d-028a-4ef7-8602-633c23200af6", "WM_SEC.ACCESS_TOKEN": "eyJraWQiOiIzZjVhYTFmNS1hYWE5LTQzM.....", "WM_SVC.NAME": "Walmart Service Name", "accept": "application/json", "content-type": "application/json",
} payload = { "query": {"field": "sku", "value": "12345678"}, "filters": [{"field": "customerRating", "op": "greater_than", "values": ["5"]}], "sort": {"field": "num_reviews", "order": "ASC"},
} resp = requests.post(url, headers=headers, params=params, json=payload, timeout=30)
print("Status:", resp.status_code)
print(resp.text)
Modify your code
You can customize results by adjusting pagination, query, filters, and sort in the request. Start with a targeted query, then refine results with filters and sorting, and paginate through larger result sets as needed.
-
Choose your query
- Pick a
query.fieldthat matches how you identify items (for example,sku,productName(wildcard supported),gtin(14 digits),wpid,upc(12 digits), oritemId). - Set
query.valueto the identifier or search term you want to find.
- Pick a
-
Call the catalog search endpoint
- Send a
POSTrequest to/v3/items/catalog/searchwith your request body containingquery(and optionallyfiltersandsort). - Send required headers and any optional headers as needed.
- Send a
-
Refine results with filters (optional)
- Add one or more filter objects in
filtersto narrow results (for example, rating, lifecycle status, publication status). - Use supported operators only:
equals,between,greater_than,less_than.
- Add one or more filter objects in
-
Control ordering with sorting (optional)
- Set
sort.fieldandsort.orderto control result order. - Allowed
sort.ordervalues:ASC,DESC.
- Set
-
Paginate results
- Use
pageandlimitin the URL to page through results (example:?page=1&limit=50). - If the response includes
nextCursor, pass it as?nextCursor=<token>to fetch the next set of results.
- Use
-
Review the response
- Review the returned results to identify the items you want to investigate or take action on (for example, publishing decisions, lifecycle checks, catalog maintenance).
- Keep paginating (page/limit or
nextCursor) until you’ve retrieved the items you need.
Response samples
Sample 1: 200 Search items
{ "All": 682
}
Sample 2: 200 with variant information
{ "status": "Success", "payload": [ { "gtin": "05420529997042", "wpid": "5DTSM799JCUI", "lifecycleStatus": "RETIRED", "mart": "WALMART_US", "publishedStatus": { "reasons": [ "END_DATE" ], "status": "UNPUBLISHED" }, "productName": "Electronic Cables", "manufacturer": "ECManu", "shelf": [ "UNNAV" ], "itemId": "562433848", "price": { "amount": 70, "unit": "USD" }, "variantGroupInfo": { "groupingAttributes": [ { "name": "actual_color", "value": "1234567890" } ], "isPrimary": "true" }, "variantGroupId": "Toysgroup0101", "sku": "88nZ6RR82XghDkd", "brand": "ECB brand", "productType": "default" } ], "limit": 10, "totalItems": 126331, "nextCursor": "DnF1ZXJ5VGhlbkZldGNoFAAAAAAFY5rZFmJYLXU3cXBtUkptLUh5Rl9SelItZmcAAAAAAyAIRRZ4Mm41WTB1UlFIUzkyUVlOSjhFWXV3AAAAAAMgCEYWeDJuNVkwdVJRSFM5MlFZTko4RVl1dwAAAAAFhKggFmswVURRXzhzUlYtQVhyRmVXTy1UN0EAAAAABYSoHxZrMFVEUV84c1JWLUFYckZlV08tVDdBAAAAAAWt5AIWTl82dF9OR09Uc2VXbVhwRUFUSk44ZwAAAAAFTM_uFk11Q04ydmlOUk1pNW1iS0paUUt6Q1EAAAAABUzP7xZNdUNOMnZpTlJNaTVtYktKWlFLekNRAAAAAAWEqCIWazBVRFFfOHNSVi1BWHJGZVdPLVQ3QQAAAAAFhKghFmswVURRXzhzUlYtQVhyRmVXTy1UN0EAAAAABWOa2hZiWC11N3FwbVJKbS1IeUZfUnpSLWZnAAAAAAVMz_EWTXVDTjJ2aU5STWk1bWJLSlpRS3pDUQAAAAADIAhHFngybjVZMHVSUUhTOTJRWU5KOEVZdXcAAAAABWOa3BZiWC11N3FwbVJKbS1IeUZfUnpSLWZnAAAAAAWt5AMWTl82dF9OR09Uc2VXbVhwRUFUSk44ZwAAAAAFY5rbFmJYLXU3cXBtUkptLUh5Rl9SelItZmcAAAAABUzP8BZNdUNOMnZpTlJNaTVtYktKWlFLekNRAAAAAAMgCEgWeDJuNVkwdVJRSFM5MlFZTko4RVl1dwAAAAAFreQFFk5fNnRfTkdPVHNlV21YcEVBVEpOOGcAAAAABa3kBBZOXzZ0X05HT1RzZVdtWHBFQVRKTjhn"
}
Results
After a successful call (200):
- You receive a response that may include a
payloadlist of matched items and pagination metadata (for example,limit,totalItems, andnextCursor). - Each item includes a set of item attributes (for example, identifiers, lifecycle/publication status, pricing, descriptive details, and other catalog metadata).
Next steps
- Start with a precise
query.field(for example, SKU or GTIN) and add filters only as needed. - Use
page/limitfor simple pagination, andnextCursorfor efficient deep pagination across large result sets. - Add request logging with
WM_QOS.CORRELATION_IDfor traceability and support. - Refer to the API reference documentation to confirm supported query/filter/sort fields by market, pagination behavior, and the latest status/error behavior before promoting changes to production.
Updated about 14 hours ago
