Walmart MCP Server
Provides read-only tools for searching Walmart products by keyword or category, retrieving detailed product information including the buy-box seller and price, and paging through customer reviews on walmart.com and walmart.ca.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Walmart MCP ServerSearch for 'Apple AirPods Pro 2' and show the buy box price."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Walmart MCP Server
A hosted Model Context Protocol (MCP) server that gives Claude, Cursor, Windsurf and any other MCP client three read-only Walmart tools. Run a keyword or category search, read one item with the seller holding the buy box, and page through its customer reviews, all as structured JSON, with no Walmart developer account and nothing to host.
It reads public Walmart pages that a signed-out visitor can see, on walmart.com and walmart.ca.
1,000 free credits every month, no card required, which is 100 Walmart calls at the 10-credit rate.
https://mcp.hasdata.com/api/mcp?apis=walmart
Contents
Related MCP server: bach-walmart_scraper4
What you need
An MCP client and a HasData API key from the dashboard, free to create with no card, and the free tier covers about 100 calls a month at the 10-credit rate. This is a remote server, so the simplest path is a URL and an x-api-key header, with no container to run. A client that only speaks stdio reaches it through a thin launcher, published as @hasdata/walmart-mcp on npm and hasdata-walmart-mcp on PyPI, shown below.
Quick start
The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.
Field | Value |
URL |
|
Transport | HTTP, streamable |
Auth header |
|
Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.
claude mcp add --transport http walmart "https://mcp.hasdata.com/api/mcp?apis=walmart" \
--header "x-api-key: HASDATA_API_KEY"Settings, then Connectors, then Add custom connector, then paste https://mcp.hasdata.com/api/mcp?apis=walmart and sign in.
For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The @hasdata/walmart-mcp package is that launcher, and it reads the key from the environment. Add this to claude_desktop_config.json:
{
"mcpServers": {
"walmart": {
"command": "npx",
"args": ["-y", "@hasdata/walmart-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}For Python instead of Node, swap the launcher for the PyPI package, which uvx runs without a manual install:
{
"mcpServers": {
"walmart": {
"command": "uvx",
"args": ["hasdata-walmart-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
{
"mcpServers": {
"walmart": {
"url": "https://mcp.hasdata.com/api/mcp?apis=walmart",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:
{
"mcpServers": {
"walmart": {
"serverUrl": "https://mcp.hasdata.com/api/mcp?apis=walmart",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}.vscode/mcp.json in the workspace:
{
"servers": {
"walmart": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=walmart",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}Example prompts
Each of these lands on one tool, or on two in sequence when the second needs the item id the first returns.
Find laptop stands under $30 on Walmart and sort them by price.
What does item 18493462688 cost right now, and who holds the buy box?
Show me every other seller offering this item and what they charge with shipping.
Read the reviews of this item that mention battery life.
Pull only the verified-purchase reviews of this item and summarise the complaints.
Compare the price of this item on walmart.com and walmart.ca.
A prompt that names a product rather than an item id takes two calls, one search to resolve the id and one product lookup to read it. Reviews work the same way, and the search result carries the id both need.
Tools
Three tools, 10 credits per successful call. Each takes domain, either walmart.com or walmart.ca, and language, where walmart.com serves en and es while walmart.ca serves en and fr. A language the storefront does not offer falls back to its default.
Item ids are storefront-scoped. On walmart.com they are numeric, such as 18493462688, and on walmart.ca alphanumeric, such as 6NZMJ5CW6MH2. An id from one storefront does not resolve on the other.
Get Walmart search results
hasdata_walmart_search_getSearchResults
A page of search results for a keyword, a category, or both.
Parameter | Type | Required | Notes |
| string | see below | The search term |
| string | see below | Category id from a category URL, such as |
| string | A full Walmart search or category URL, scraped as is. Overrides the parameters above | |
| string |
| |
| string |
| |
| string |
| |
| number | Result page, starting at 1 | |
| number | Price band in the storefront currency | |
| string |
| |
| string | One filter in |
Send q to search, catId to browse a whole category, or both to search inside one. Neither appears in the schema's required array because either one satisfies the call on its own.
Returns searchInformation, a productResults array, a facets block and pagination. Each result carries position, id, title, url, brand, isSponsored, badges, walmartPlusSavings, categoryPathId, a price object, reviews with rating and totalReviews, image, seller, availability and fulfillment.
The facets block is the map of every filter the query supports, and each value carries the exact string to send back in facet. Running one unfiltered search to read the facets is cheaper than guessing.
{
"position": 1,
"id": "18493462688",
"title": "Incipio Portable Foldable Aluminum Laptop Stand and Riser with Adjustable Angles, Anti-Slip and Ventilated Design",
"url": "https://www.walmart.com/ip/Portable-Laptop-Stand-Black/18493462688",
"isSponsored": true,
"badges": ["Overall pick"],
"walmartPlusSavings": true,
"categoryPathId": "4125_4134_1074326_9623037_7875081",
"price": { "currentPrice": 9.96, "currentPriceDisplay": "$9.96" },
"reviews": { "rating": 4.5, "totalReviews": 49 }
}Get Walmart product details
hasdata_walmart_product_getWalmartProduct
One item in full.
Parameter | Type | Required | Notes |
| string | see below | The Walmart item id |
| string | see below | A full product URL, scraped as is. Overrides |
| string |
| |
| string |
| |
| boolean | Also collect competing offers. Costs 5 credits on top, 15 instead of 10 |
Pass itemId or url. As with search, neither is listed as required because either one works alone.
Returns a product object with itemId, title, url, brand, brandUrl, type, model, upc, condition, badges, availability, a price object, the seller holding the buy box, reviews, images, categoryPath, categoryPathId, highlights, specifications, keyItemFeatures, productDetails and fulfillment.
The base call already reports how many competitors the page advertises and the cheapest competing price. Turn on otherOffers only when you need the offers themselves, because it takes a second request to Walmart and costs half again as much.
{
"itemId": "18493462688",
"brand": "Incipio",
"condition": "New",
"price": { "currentPrice": 9.96, "currentPriceDisplay": "$9.96", "currency": "USD" },
"seller": {
"name": "Walmart.com",
"id": "F55CDC31AB754BB68FE0B39041159D63",
"returnPolicy": "Free 30-day returns"
},
"reviews": {
"totalReviews": 49,
"rating": 4.5,
"fiveStars": 38,
"fourStars": 4,
"threeStars": 3,
"twoStars": 1,
"oneStar": 3
},
"specifications": [{ "name": "Maximum screen size", "value": "16 in" }],
"fulfillment": {
"type": "FC",
"message": "Pickup, today at Fredericksburg Massaponax Supercenter",
"deliveryDate": "2026-09-09T21:59:00.000Z"
}
}Get Walmart product reviews
hasdata_walmart_reviews_getWalmartReviews
The review feed of one item, ten reviews a page.
Parameter | Type | Required | Notes |
| string | see below | The Walmart item id |
| string | see below | A full product URL whose reviews to read. Overrides |
| string |
| |
| string | Language of the review page, not of the reviews themselves | |
| number | Review page, ten a page | |
| string |
| |
| number | Keep one star rating, 1 to 5 | |
| string | Keep reviews mentioning one topic, by its id | |
| string | Keep reviews about one condition of the item | |
| boolean | Keep only purchases Walmart confirmed |
Returns reviewsInformation, a reviewResults array, a filters block, appliedFilters and pagination.
filters is the part worth reading first. It lists the star ratings, frequent mentions and conditions this item can actually be filtered by, each with a count and with the exact value to send back. Given {"name": "Battery Life", "value": "6049", "count": 8} you send aspectId: "6049" and expect eight reviews. Guessing an aspect id instead of reading it here is the usual way to get an empty page.
reviewsInformation carries the item rating, the per-star breakdown, per-aspect scores and Walmart's AI review summary. It also separates totalRatings from totalReviews, which matter separately: the item below has 49 ratings but only 21 written reviews, and paging covers the 21.
{
"reviewsInformation": {
"rating": 4.49,
"totalRatings": 49,
"totalReviews": 21,
"recommendedPercentage": 100,
"ratingBreakdown": { "fiveStars": 38, "fourStars": 4, "threeStars": 3, "twoStars": 1, "oneStar": 3 }
},
"reviewResults": [
{
"position": 1,
"id": "434698083",
"rating": 5,
"title": "Good value laptop stand.",
"text": "Good value for money. Not the sturdiest, but that is to be expected for a collapsible laptop stand. Overall gets the job done, I'd buy it again.",
"date": "8/1/2026",
"verifiedPurchase": true,
"helpfulVotes": 0,
"notHelpfulVotes": 0,
"badges": ["Verified Purchase"],
"seller": "Walmart.com",
"language": "English",
"aspects": [{ "id": "284", "polarity": "Positive" }]
}
],
"filters": [
{ "name": "Star rating", "parameter": "rating", "values": [{ "name": "5 stars", "value": "5", "count": 38 }] },
{ "name": "Frequent mentions", "parameter": "aspectId", "values": [{ "name": "Sturdiness", "value": "828", "count": 6 }] }
],
"pagination": { "currentPage": 1, "reviewsPerPage": 10, "totalPages": 3, "totalResults": 21, "nextPage": 2 }
}Errors and failure paths
Plan for these rather than assuming a happy path.
Two totals disagree in one search response, and both are correct. searchInformation.totalResultsDisplay is the string Walmart prints on the page, such as "1000+", while pagination.totalResults is the number behind it, such as 8005. One is display text and the other is an integer, so do not parse the first or print the second.
Walmart stops serving results after roughly page 10. Beyond that the page comes back empty rather than erroring. A large keyword cannot be enumerated by paging, so narrow it with facet, a price band or a category instead.
Prices belong to one store, and the response says which. searchInformation.storeId names it, and fulfillment.message names it in words, down to "Pickup, today at Fredericksburg Massaponax Supercenter". Comparing prices across calls only means something while that store stays the same.
deliveryType: pickup is answered against a single store. An item in stock nationally can still come back unavailable, because it is unavailable at that one store rather than everywhere.
The product tool reports ratings where you might read reviews. Its reviews.totalReviews is the count of ratings, 49 for the item above, while the reviews tool reports 49 ratings and 21 written reviews separately. Use the reviews tool when the distinction matters.
Review dates are M/D/YYYY strings. "8/1/2026" is the first of August, not the eighth of January. Parse with the format in hand rather than letting a date library guess.
A review can carry an aspect id absent from filters. The block lists the topics the item can be filtered by, which is a shorter list than the topics its reviews were tagged with. Read aspects off the review, and filter only with ids the block offers.
variants is missing rather than empty on an item with no variants. Check for the key before you read it.
Only one condition per request. The parameter takes a single value, so a query across two conditions is two calls.
Results that carry data also carry a requestMetadata.id worth quoting in support.
Pricing, free tier and limits
Each Walmart tool costs 10 credits per successful call. Turning on otherOffers adds 5 credits to the product call, 15 instead of 10, so leave it off unless the competing offers are the point. Response size does not change the price.
The free tier is 1,000 credits every month with no card, which is 100 Walmart calls at the base rate. It renews with the billing cycle, so a low-volume agent runs on the free tier indefinitely.
Paid plans start at $49 a month for 200,000 credits, which is 20,000 calls. The unit price falls with volume, from $2.45 per 1,000 calls on the entry plan to $1.00 on Business, $0.84 on Growth and $0.74 on the largest high-volume plans.
Your plan also sets concurrency. The free tier allows 1 request at a time, Startup 15, Business 30, Growth 50, and the high-volume plans run from 200 to 1,500. Retry on the 429 with a backoff in anything unattended, because an agent that fans out across item ids will reach the ceiling before you do.
A request that comes back non-200 is not billed. A successful call that finds nothing is still a call.
Tool selection
Start from what the prompt gives you. A keyword or a category goes to the search tool, an item id goes straight to the product or reviews tool. Spending a search call to reach an id you already have is the most common waste.
Then pick by what the question is about. The search result is enough for ranking, price sweeps and share-of-shelf work across many items. The product tool is the only one carrying specifications, the buy-box seller and the competing-offer count. The reviews tool is the only one carrying review text.
Read the filters block before you filter. One unfiltered reviews call tells you which ratings, topics and conditions exist and how many reviews each holds, which turns a guessed filter into a known one.
How it compares
Walmart's own Affiliate and Marketplace APIs are the official routes to this data, and they answer different questions.
Walmart Affiliate API | Walmart Marketplace API | This server | |
Eligibility | An approved affiliate account | A Walmart seller account | An API key |
Scope | Items in the affiliate catalogue | Your own listings and orders | Any public item page |
Competing sellers | Not returned | Your own offers only | The offer list, with |
Review text | Not returned | Reviews of your items | The feed, with filters |
Buy box | Not returned | For your items | Whoever holds it |
| Separate programme | Separate account | A parameter |
Cost | Free, when you qualify | Free with a seller account | Paid past the free tier |
The row that decides it is scope. Both official APIs answer questions about a catalogue you have a commercial relationship with, which rules them out for watching a competitor. When the items are yours, the Marketplace API is authoritative and free, and you should use it.
FAQ
Is there an official Walmart MCP server?
Walmart does not publish one. This one is maintained by HasData and reads public Walmart pages.
What is a Walmart MCP server?
An MCP server exposes tools an AI client can call. This one turns Walmart search results, item pages and review feeds into JSON an agent can reason over, without a browser or a scraping library in your stack.
Do I need a Walmart account or a seller account?
No. The only credential is your HasData key.
Which storefronts are covered?
walmart.com and walmart.ca. They hold separate catalogues, item ids, prices and currencies, so a cross-storefront comparison is a real comparison rather than a currency conversion.
Why did my item id return nothing?
Most often because it belongs to the other storefront. A numeric id is walmart.com and an alphanumeric one is walmart.ca, and neither resolves on the other. Pass domain to match, or pass the full url and let it set the storefront.
How do I get the competing offers?
Set otherOffers on the product call. Each offer comes back with the seller name, storefront URL, price, condition, shipping cost, delivery date and return policy. It costs 5 credits more, because it takes a second request to Walmart.
Why does the same search return different prices on different days?
Partly because prices move, and partly because the response is answered against one Walmart store, reported as searchInformation.storeId. Hold that store constant before reading a price change as a price change.
Can I use this together with other HasData APIs?
Yes. One key covers everything, and one endpoint serves them all through the apis parameter. Point a client at ?apis=walmart,amazon to get both tool sets in one connection, or at mcp.hasdata.com/api/mcp for the full catalogue.
Is HasData affiliated with Walmart?
No. HasData is an independent service and is not affiliated with, endorsed by, or sponsored by Walmart. Walmart is a trademark of its respective owner. The tools work with publicly available data only, and you are responsible for using the results in line with Walmart's terms and the law that applies to you.
Compliance and personal data
Reviews carry an author name as the reviewer chose to publish it, along with a verified-purchase flag. Marketplace seller entries carry a business name and a storefront URL. Neither block needs the author fields for sentiment or pricing work, so drop them unless your purpose needs them, and check your own obligations before storing them.
HasData links
Walmart API documentation, the REST endpoints behind these tools
Other HasData MCP servers: Google Search, Google Maps, Google Trends, Google Flights, DuckDuckGo, YouTube, TikTok, Instagram, Amazon, Shopify, Yelp, Zillow, Redfin, Airbnb, Booking.com, Indeed.
Development
The launcher is a thin stdio bridge to the remote server, so there is nothing to build.
npm install
HASDATA_API_KEY=your_key_here npm testThe tests in test/ assert the tool contract, the part that can break without a commit here. They check that ?apis=walmart returns the expected tool count, that no name changed, that every tool still carries a description, that the either/or parameters this README documents are still in the schema, and that the key in use is actually accepted. That last check calls a tool for real and costs 10 credits, which is the price of a canary that can fail for the right reason.
None of the three tools declares a required parameter, because each accepts one of two inputs. The suite pins the alternatives instead of the required array, which would pass while the schema said nothing.
The contract suite also runs weekly on a schedule, because the upstream tool list can change without anyone touching this repository.
Contributing
A tool table, a response sample or a documented behaviour that does not match reality is worth an issue. There is a template for exactly that. Pull requests are welcome for the same, and for anything in the launcher.
License
MIT, see LICENSE.
Available Tools
3 toolshasdata_walmart_product_getWalmartProductwalmart_product: GET /A
Get Walmart Product Details
Scrapes one Walmart product page on a chosen storefront by item id or URL. Returns title, brand, model, UPC, condition, availability, price with strikethrough before-price and unit price, the seller holding the buy box with its rating and return policy, badges, SNAP EBT eligibility, Walmart+ savings, star rating with the per-star review breakdown and AI review summaries, images, category path, highlights, specifications, AI-generated key item features, variant axes with every option and the itemId each combination resolves to, fulfillment details, and the other-sellers block: how many competitors the page advertises and the cheapest competing price always, plus - when otherOffers is enabled - the offer list with each seller name, storefront URL, price, condition, shipping cost, delivery date and return policy. Use for price and buy-box monitoring, seller and marketplace competitor tracking, assortment enrichment of item ids harvested from search, and variant mapping.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A full Walmart product URL to scrape as is. When provided, it overrides `itemId` and the storefront is taken from the URL itself. Required unless `itemId` is provided. | |
| domain | No | Walmart storefront the item belongs to. Each storefront has its own catalog, item ids, prices and currency, so an id from one storefront does not resolve on another. Ignored when `url` is provided. Default is `walmart.com`. | |
| itemId | No | Walmart item id, taken from a product URL or from the id field of the Walmart Search API response. On `walmart.com` it is numeric (for example `14977205582`), on `walmart.ca` an alphanumeric code (for example `6NZMJ5CW6MH2`). Required unless `url` is provided. | |
| language | No | Language of the product details. Availability depends on the storefront - `walmart.com` serves `en` and `es`, `walmart.ca` serves `en` and `fr`. A language the storefront does not support falls back to its default. | |
| otherOffers | No | Also collect the offers of other sellers competing for this item - each seller name, storefront, price, condition, shipping cost, delivery date and return policy. This takes an extra request to Walmart and costs 5 credits on top of the base 10, whether or not the item turns out to have competing sellers. How many competitors the item advertises, and the cheapest competing price, are returned in the `otherOffers` block whether the switch is on or off, so it can be left off until the count shows there is something to collect. Default is `false`. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It does convey that the tool performs a live scrape and that the other-sellers block behaves conditionally based on otherOffers. However, the credit cost, extra request behavior, and storefront-specific item id incompatibility appear only in the input schema descriptions, not in the main description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but purposefully so: it opens with a one-sentence action summary, then enumerates the full set of returned fields because there is no output schema. The final use-case sentence earns its place. It could be made more scannable with bullets, but there is little redundant prose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of both annotations and an output schema, the description thoroughly documents the return payload, including the conditional other-sellers block and the always-returned competitor count and cheapest competing price. Combined with the detailed input schema descriptions, an agent has sufficient context to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema coverage is 100% with rich property descriptions that already explain url/itemId precedence, domain defaults, language fallback, and otherOffers costs. The main description adds value through the returned field list and use cases, but it does not add further parameter-level meaning, so it stays at the high-coverage baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action: 'Scrapes one Walmart product page on a chosen storefront by item id or URL.' It clearly names the resource and the primary access modes, and the long field list clarifies the product-detail scope. It does not explicitly name sibling tools, but the single-product-page scope distinguishes it from search and reviews.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description closes with explicit use cases: 'price and buy-box monitoring, seller and marketplace competitor tracking, assortment enrichment of item ids harvested from search, and variant mapping.' This gives clear context for when to use it, though it does not directly contrast with the sibling getWalmartReviews or getSearchResults tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_walmart_reviews_getWalmartReviewswalmart_reviews: GET /A
Get Walmart Product Reviews
Scrapes the customer reviews of one Walmart product on a chosen storefront by item id or URL, ten reviews a page. Returns each review with its rating, title, full text with paragraphs preserved, submission date, author, verified-purchase flag, helpful and not-helpful vote counts, badges, marketplace seller, photos and videos, and the review aspects it was tagged with. Alongside the reviews it returns the item rating, how many ratings versus how many written reviews exist, the per-star breakdown, the AI review summary, per-aspect scores such as Quality or Value for money, and a filters block listing exactly which star ratings, frequent mentions and conditions this item can be filtered by, with a count for each - the values in that block are the ones to pass back as request parameters. Sort by most relevant, most recent, most helpful, highest rated, lowest rated or oldest, and filter by star rating, frequent mention, condition or verified purchases only. Use for review mining and sentiment analysis, tracking what buyers praise or complain about per product, monitoring new reviews over time, and pulling only verified-purchase feedback.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | A full Walmart product URL whose reviews to scrape. When provided, it overrides `itemId` and the storefront is taken from the URL itself. Required unless `itemId` is provided. | |
| page | No | Page of reviews to return, ten reviews a page. The response reports the last available page in `pagination.totalPages`, the next one in `pagination.nextPage`, and how many reviews the current filters select in `pagination.totalResults`. Note that only reviews carrying written text are paginated, so the ceiling follows `reviewsInformation.totalReviews` rather than the larger `reviewsInformation.totalRatings`. Default is `1`. | |
| sort | No | Order of the returned reviews, named as the Walmart review page names it. Default is `mostRelevant`. | |
| domain | No | Walmart storefront the item belongs to. Each storefront has its own catalog, item ids and review pool, so an id from one storefront does not resolve on another. Ignored when `url` is provided. Default is `walmart.com`. | |
| itemId | No | Walmart item id, taken from a product URL or from the id field of the Walmart Search API response. On `walmart.com` it is numeric (for example `14977205582`), on `walmart.ca` an alphanumeric code (for example `6NZMJ5CW6MH2`). Required unless `url` is provided. | |
| rating | No | Return only reviews carrying this star rating, from `1` to `5`. The Star rating group of the `filters` block lists the ratings this item actually has, each with the `value` to send here and a `count` of how many reviews to expect. | |
| aspectId | No | Return only reviews mentioning one topic. Send the `value` of the topic you want, taken from the Frequent mentions group of the `filters` block in the response - given `{"name": "Battery Life", "value": "6049", "count": 8}` you send `6049`, and `count` is how many reviews to expect. **Only one topic per request**, Walmart rejects a list of them. Topics belong to the product rather than to Walmart: a phone offers Battery Life or Display, a coffee offers Flavor or Aroma, and some items offer none at all - so make an unfiltered request first and read the block, instead of reusing a topic id across products. | |
| language | No | Language of the review page. Availability depends on the storefront - `walmart.com` serves `en` and `es`, `walmart.ca` serves `en` and `fr`. A language the storefront does not support falls back to its default. Reviews themselves are returned in the language their author wrote them in. | |
| condition | No | Return only reviews written about one condition of the item. Send the `value` from the Condition group of the `filters` block - given `{"name": "Restored: Like New", "value": "5"}` you send `5`. **Only one condition per request.** This group appears for items Walmart sells in several conditions, and only when the request already names one: reach the variant through the `url` parameter with its `conditionGroupCode`, as in `https://www.walmart.com/ip/1028936148?conditionGroupCode=2`, and the block then lists the condition that variant carries. An item sold in a single condition has no such group, and no reviews to separate by it. | |
| verifiedPurchasesOnly | No | Return only reviews left by customers whose purchase Walmart confirmed. Narrows the pool considerably, since most reviews are unverified or syndicated from the manufacturer. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it does so thoroughly. It discloses the ten-reviews-per-page behavior, pagination limits tied to written reviews, the need to pass filter-block values back as request parameters, single-topic and single-condition limits, language/storefront fallback behavior, and the narrowing effect of verifiedPurchasesOnly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with its purpose and then packs substantial response and filtering detail into the following sentences. It is long, but nearly every clause contributes useful information; the use-case sentence is somewhat discretionary, and a few overly long sentences could be split without losing content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description appropriately explains what the response contains: review fields, item rating, rating-versus-review counts, per-star breakdown, AI summary, aspect scores, and the filters block. Combined with the schema's detailed parameter documentation, an agent has enough context to invoke the tool and interpret its results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents all 10 parameters at 100% coverage, including concrete examples, enums, defaults, and filter-value mappings. The tool description mostly summarizes these capabilities at a high level rather than adding new parameter-level meaning, so the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Get Walmart Product Reviews' and immediately specifies the action: scraping the customer reviews of one Walmart product by item id or URL. It also enumerates the extracted review data and aggregate info, making it clearly distinguishable from the sibling product and search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases such as 'review mining and sentiment analysis', 'tracking what buyers praise or complain about per product', 'monitoring new reviews over time', and 'pulling only verified-purchase feedback'. It does not explicitly name the sibling tools or state when not to use this one, but the review-focused scope makes the intended context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_walmart_search_getSearchResultswalmart_search: GET /A
Get Walmart Search Results
Runs a keyword or category search on a chosen Walmart storefront with pagination, price range and fulfillment filters, facet narrowing, and sort order (best match, price low-to-high, price high-to-low, bestseller, highly rated, new arrivals). Returns the product list with item id, title, product URL, brand, price and strikethrough before-price, star rating, review count, seller, availability, sponsored flag, badges, SNAP EBT eligibility, Walmart+ savings, variants, other offers and fulfillment details (shipping, pickup, delivery messages), plus the facets block listing every filter the query supports with the exact value to send back in the facet parameter, pagination, and the store the prices belong to. Use for SERP monitoring, price and assortment tracking, share-of-shelf analysis, competitor discovery, and harvesting item ids to feed downstream product or reviews endpoints.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | The search term for which to get the search results. It can be omitted only when `catId` is provided, to browse a whole category instead of searching. | |
| url | No | A full Walmart search or category URL to scrape as is. When provided, it overrides `q`, `catId` and the other search parameters, and the storefront is taken from the URL itself. | |
| page | No | Page number for pagination (e.g., `1` for the first page, `2` for the second page, etc.). Walmart stops serving results after roughly page 10, returning an empty page beyond that. | |
| sort | No | The sorting option for the search results. | |
| catId | No | Walmart category id, taken from a category URL (for example `976759_1086446_1229651`). Combine it with `q` to search inside a category, or send it alone to browse the whole category. Required unless `q` is provided. | |
| facet | No | Walmart filter in the `name:value` form, for example `brand:Great Value`. Every value available for a query is listed in the facets block of the response, each one carrying the exact string to send back here, so a first unfiltered request tells you what can be filtered on. To combine filters, put each one on its own line. The double-pipe form Walmart's own urls use `brand:Great Value||retailer_type:Walmart` is also accepted. | |
| domain | No | Walmart storefront to search. Each storefront has its own catalog, prices and currency. Default is `walmart.com`. | |
| language | No | Language of the results. Availability depends on the storefront - `walmart.com` serves `en` and `es`, `walmart.ca` serves `en` and `fr`. A language the storefront does not support falls back to its default. | |
| maxPrice | No | Upper bound of the price range, in the storefront currency. | |
| minPrice | No | Lower bound of the price range, in the storefront currency. | |
| deliveryType | No | Keep only the products available with the selected fulfillment method. Default is `shipping`. Note that `pickup` is answered against one Walmart store, so an item in stock nationally can still be unavailable for `pickup` nearby - the response then reports that nothing matched the filters rather than that the query had no results. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden: it discloses that this is a read-only search operation and describes the full response shape, including product items, facets block, pagination, and store attribution. It doesn't mention rate limits or edge cases like the page-10 cutoff, but those are covered in the parameter descriptions and the search framing gives an accurate side-effect-free mental model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense paragraph but is front-loaded with the core action and packs all key capability and output information into one long sentence. It is appropriately sized for an 11-parameter tool with no output schema, though it could be broken into shorter sentences or bullets for easier scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with no output schema, the description thoroughly covers return value composition (items, facets, pagination, store) and practical use cases, while the schema covers all 11 parameters at 100% coverage. The combination is sufficient for an agent to select this tool over the product/reviews siblings and invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the description broadly mentions filters, facets, and sort options but adds little beyond the schema's parameter documentation. The only mild value-add is connecting the facets block to the facet parameter's exact-value contract, though even that is detailed in the schema's facet description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource statement, 'Get Walmart Search Results,' and expands on the exact capability: keyword/category search with filters, facets, and sort order on a chosen storefront. It lists the returned data and ends by framing the tool as upstream ID harvesting for product and reviews endpoints, which distinguishes it from the product and reviews siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit use cases: SERP monitoring, price/assortment tracking, share-of-shelf analysis, competitor discovery, and harvesting item ids for downstream product or reviews endpoints. It does not explicitly name the sibling tools or state when not to use it, but the downstream-product/reviews phrasing clearly implies the product and reviews tools are the alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v1.0.0- First observed
hasdata_walmart_product_getWalmartProduct - First observed
hasdata_walmart_reviews_getWalmartReviews - First observed
hasdata_walmart_search_getSearchResults
TDQS
Scored across 3 tools
Each tool targets a distinct data type: product details, customer reviews, and search results. There is no overlap in purpose, and the descriptions clearly delineate what each returns.
All tool names follow the same hasdata_walmart_get pattern, with a specific resource suffix (Product, Reviews, SearchResults). The naming is uniform and predictable, making it easy to infer what each tool does.
With only 3 tools, the server is tightly scoped to the core Walmart scraping workflows: search, product details, and reviews. This is an appropriate number for a focused integration, and no redundant endpoints exist.
The tool surface covers the full browse-and-research lifecycle on Walmart: discover items via search, get detailed product info, and retrieve reviews. Each tool feeds into the next (search returns item IDs for product/reviews), and no obvious critical operation is missing for the stated purpose.
Maintenance
Related MCP Connectors
Google Shopping products, prices, sellers, and deals as structured data via a hosted MCP server.
One MCP server for 180+ live web-data APIs returning clean JSON from sites that block scrapers.
Amazon product API & MCP server: search, prices, reviews, sellers, deals, and ASIN lookup by Canopy.
Amazon keyword search, product details, seller profiles and seller catalogues, as structured JSON.
1
Related MCP Servers
AlicenseAqualityDmaintenanceEnables AI agents to access Walmart product data including lookups, price history, offers, seller profiles, reviews, and sales stats via tools callable in MCP-compatible clients like Claude Desktop and Cursor.5171MIT- AlicenseBqualityDmaintenanceEnables scraping Walmart product data, including product details, top products by category, and monitoring scraping tasks.4MIT
- AlicenseNot gradedqualityCmaintenanceA MCP server for Walmart Marketplace and Affiliate APIs, enabling sellers to manage items, inventory, prices, and orders, and consumers to search, lookup products, reviews, and store locations.12MIT
- AlicenseAqualityCmaintenanceEnables querying and comparing prices, availability, ratings, reviews, and seller details from major Russian and Chinese marketplaces (Wildberries, Ozon, Yandex Market, and others) without requiring API keys, via a unified MCP interface.424MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/HasData/walmart-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server