Item search for the Walmart catalog
Overview
Use the Item Search API to quickly determine whether Walmart already has the item you want to sell. Search the Walmart catalog by keyword (query) or by product identifier (UPC, GTIN). In the US market, you can also search by ASIN (in addition to UPC or GTIN) and request spec-formatted results (responseFormat=SPEC).
When to use the Search API
- Before item setup: Use the Item Search API as the first step in item setup to determine the correct setup path. Use offer-only (MP_ITEM_MATCH) when a match exists, or full item setup (MP_ITEM) when no match is found.
- Accelerate full item setup: Pull available catalog attributes in spec format, so you only populate missing data.
- For broader search and match exploration: Start with the default response (keyword search), then refine as needed.
Benefits
- Faster item setup decisions: Quickly determines whether to use offer-only setup (MP_ITEM_MATCH) or full item setup (MP_ITEM).
- Prefilled catalog attributes: Reuses Walmart catalog attributes so you only populate missing fields instead of starting from scratch.
- Flexible search options: Supports broad discovery (keyword search) and precise matching (identifier lookup and spec-format).
How results are returned
Default response (responseFormat=DEFAULT or omitted)
- Keyword search (
query): returns up to 40 matches. - Identifier lookup (
UPCorGTIN): returns 0 or 1 match.
Spec-format response (responseFormat=SPEC, US only)
-
Requires exactly one identifier (
UPC,GTIN, orASIN). -
queryis not supported. -
Returns 0 or 1 match:
- If the item is found and is already live in the Walmart catalog, returns
MP_ITEM_MATCH(offer setup by match). - If the item is found but is not live, returns
MP_ITEM(full item setup) with any available Walmart catalog attributes.
- If the item is found and is already live in the Walmart catalog, returns
-
If no match is found, the API returns 200 with an empty JSON object (
{}) anditemsmay be omitted.
Endpoint
GET https://marketplace.walmartapis.com/v3/items/walmart/searchQuery parameters
- query (string): Keyword search based on descriptive terms (example:
keyboard and mouse). - UPC (string): 12-digit Universal Product Code (example:
716999676441). - GTIN (string): 14-digit Global Trade Item Number (example:
02917687511041). - ASIN (string): Amazon Standard Identification Number (US only). Supported only when
responseFormat=SPEC. - responseFormat(string, optional): Controls response format. Allowed values (case sensitive):
SPEC,DEFAULT.DEFAULTor omitted: returns the current response format.SPEC(US only): returns a spec-compliant response intended for item setup workflows.
Throttling: Refer to the API throttling guide to understand the usage limitations for this API.
Validation rules
responseFormatmust beSPECorDEFAULT(uppercase only). If omitted, defaults toDEFAULT.- If
responseFormat=SPEC(US only): send exactly one ofUPC/GTIN/ASINand do not sendquery. - If
responseFormat=DEFAULTor omitted: send at least one ofquery/UPC/GTIN.
Request sample: default response
curl --request GET \ --url 'https://marketplace.walmartapis.com/v3/items/walmart/search?upc=716999676441' \ --header 'WM_CONSUMER.CHANNEL.TYPE: <consumer-channel-type>' \ --header 'WM_GLOBAL_VERSION: 3.1' \ --header 'WM_MARKET: mx' \ --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'import requests base_url = "https://marketplace.walmartapis.com/v3/items/walmart/search" headers = { "WM_CONSUMER.CHANNEL.TYPE": "<consumer-channel-type>", "WM_GLOBAL_VERSION": "3.1", "WM_MARKET": "mx", "WM_QOS.CORRELATION_ID": "b3261d2d-028a-4ef7-8602-633c23200af6", "WM_SEC.ACCESS_TOKEN": "eyJraWQiOiIzZjVhYTFmNS1hYWE5LTQzM.....", "WM_SVC.NAME": "Walmart Service Name", "accept": "application/json",
} params = {"upc": "716999676441"} resp = requests.get(base_url, headers=headers, params=params, timeout=30)
print("Status:", resp.status_code)
print(resp.text)Request sample: spec-format
For the spec-format flow, send one identifier only.
curl --request GET \ --url 'https://marketplace.walmartapis.com/v3/items/walmart/search?asin=B08N5WRWNW&responseFormat=SPEC' \ --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'import requests url = "https://marketplace.walmartapis.com/v3/items/walmart/search"
params = {"asin": "B08N5WRWNW", "responseFormat": "SPEC"} 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",
} resp = requests.get(url, headers=headers, params=params, timeout=30)
resp.raise_for_status()
print(resp.json())Modify your code
You can tailor search results by choosing a single search input per request: a keyword (query) or one identifier (UPC or GTIN). If you request spec-formatted results (responseFormat=SPEC), you must follow the additional request rules outlined below.
Step 1: Build and send the request
Choose one search input per request and call GET /v3/items/walmart/search.
-
Keyword search (default response):
...?query=<keywords> -
Identifier lookup (default response):
...?upc=<upc>or...?gtin=<gtin> -
Spec-format (US only): add
responseFormat=SPECand exactly one identifier:...?upc=<upc>&responseFormat=SPECor...?gtin=<gtin>&responseFormat=SPECor...?asin=<asin>&responseFormat=SPEC
Rules for responseFormat=SPEC:**
- Send exactly one of
UPC/GTIN/ASIN - Do not include
query
Step 2: Send required headers and any optional headers
WM_SEC.ACCESS_TOKEN(required): Access token obtained from the Token APIWM_QOS.CORRELATION_ID(required): Unique GUID per request for tracking/debuggingWM_SVC.NAME(required): Service name (example: Walmart Marketplace)WM_CONSUMER.CHANNEL.TYPE(optional): Channel identifier received during onboardingAccept:application/json
Step 3: Review the response
Default response structure: When responseFormat=DEFAULT (or omitted), the response returns:
- An
itemsarray, which may includeitemId,title,brand,price,images,condition, and signals likeisMarketPlaceItem. - Default keyword searches return up to the first 40 matches.
- Default identifier lookups (
upcorgtin) and spec-format searches return 0 or 1 match.
Spec-format response structure: When responseFormat=SPEC, items contains up to one entry with:
feedType:MP_ITEMorMP_ITEM_MATCHversion: spec versionproductType: present only forMP_ITEMitemSpecPayload: spec payload containingMPItemFeedHeadermetadata and anMPItemarray (structure varies byfeedType)
Spec selection behavior (deterministic): If the identifier is found in the Walmart catalog, the API returns MP_ITEM_MATCH (OSBM). If the identifier is not found, the API returns MP_ITEM (full setup). Only one response type is returned per request.
Response sample (spec-format MP_ITEM)
{ "items": [ { "feedType": "MP_ITEM", "version": "5.0.20260205-21_38_48-api", "productType": "Woodwind Instrument Replacement Parts", "itemSpecPayload": { "MPItemFeedHeader": { "locale": "en", "version": "5.0.20260205-21_38_48-api", "businessUnit": "WALMART_US" }, "MPItem": [ { "Orderable": { "specProductType": "Woodwind Instrument Replacement Parts", "batteryTechnologyType": "Does Not Contain a Battery", "productIdentifiers": { "productId": "06702124049005", "productIdType": "GTIN" }, "electronicsIndicator": "No", "releaseDate": "2000-01-01", "externalProductIdentifier": [ { "externalProductIdType": "ASIN", "externalProductId": "0001081753" } ], "chemicalAerosolPesticide": "No" }, "Visible": { "Woodwind Instrument Replacement Parts": { "warrantyText": "No", "isProp65WarningRequired": "No", "material": [ "Metal" ], "has_written_warranty": "No", "isCollectible": "No", "netContent": { "productNetContentUnit": "Each", "productNetContentMeasure": 1 }, "shortDescription": "This comprehensive sheet music for wind ensemble, titled \"Quasi improvvisando,\" features parts for a wide array of woodwind and brass instruments. It includes arrangements for Flute, Piccolo, 2 Oboes, Clarinet, Bass Clarinet, Bassoon, Contrabassoon, 2 French Horns, and Trumpet (C).", "keyFeatures": [ "Quasi Improvvisando Wind Ensemble Sheet Music for Flute, Piccolo, Oboes, Clarinet, Bassoon, French Horns, Trumpet:", "Musical Instrument Style: Wind Ensemble", "Instruments Included: Flute, Piccolo, 2 Oboes, Clarinet, Bass Clarinet, Bassoon, Contrabassoon, 2 French Horns, Trumpet (C)", "Format: Sheet Music Partition", "Manufacturer ID: ED6762", "Publication Date: January 1, 2000" ], "brand": "Jean Franaix", "warrantyURL": "https://www.toolweb.com/", "productName": "Quasi Improvvisando Wind Ensemble Sheet Music for Flute, Piccolo, Oboes, Clarinet, Bassoon, French Horns, Trumpet", "prop65WarningText": "California residents: This product can expose you to chemicals including diethylhexyl phthalate or lead, which are known to the State of California to cause cancer and birth defects or other reproductive harm. For more information go to www.P65Warnings.ca.gov." } } } ] } } ]
}Next steps
- Persist key identifiers for downstream catalog and listing workflows.
- Add request logging with
WM_QOS.CORRELATION_IDfor traceability and support. - Refer to the API reference documentation to confirm query parameter rules, throttling expectations, and the latest status/error behavior before promoting changes to production.
Updated 6 days ago
