Skip to main content
Glama
HasData

Walmart MCP Server

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

Glama score tool contract MCP Tools npm PyPI License

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

https://mcp.hasdata.com/api/mcp?apis=walmart

Transport

HTTP, streamable

Auth header

x-api-key: HASDATA_API_KEY

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

q

string

see below

The search term

catId

string

see below

Category id from a category URL, such as 976759_1086446_1229651

url

string

A full Walmart search or category URL, scraped as is. Overrides the parameters above

domain

string

walmart.com or walmart.ca

language

string

en, es or fr, subject to the storefront

sort

string

bestMatch, priceLowToHigh, priceHighToLow, bestseller, highlyRated or newArrivals

page

number

Result page, starting at 1

minPrice / maxPrice

number

Price band in the storefront currency

deliveryType

string

shipping or pickup

facet

string

One filter in name:value form, such as brand:Great Value

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

itemId

string

see below

The Walmart item id

url

string

see below

A full product URL, scraped as is. Overrides itemId and sets the storefront

domain

string

walmart.com or walmart.ca, ignored when url is given

language

string

en, es or fr, subject to the storefront

otherOffers

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

itemId

string

see below

The Walmart item id

url

string

see below

A full product URL whose reviews to read. Overrides itemId

domain

string

walmart.com or walmart.ca, ignored when url is given

language

string

Language of the review page, not of the reviews themselves

page

number

Review page, ten a page

sort

string

mostRelevant, mostRecent, mostHelpful, highestRated, lowestRated or oldest

rating

number

Keep one star rating, 1 to 5

aspectId

string

Keep reviews mentioning one topic, by its id

condition

string

Keep reviews about one condition of the item

verifiedPurchasesOnly

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 otherOffers

Review text

Not returned

Reviews of your items

The feed, with filters

Buy box

Not returned

For your items

Whoever holds it

walmart.ca

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.

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 test

The 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 tools
hasdata_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoA 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.
domainNoWalmart 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`.
itemIdNoWalmart 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.
languageNoLanguage 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.
otherOffersNoAlso 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

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoA 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.
pageNoPage 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`.
sortNoOrder of the returned reviews, named as the Walmart review page names it. Default is `mostRelevant`.
domainNoWalmart 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`.
itemIdNoWalmart 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.
ratingNoReturn 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.
aspectIdNoReturn 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.
languageNoLanguage 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.
conditionNoReturn 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.
verifiedPurchasesOnlyNoReturn only reviews left by customers whose purchase Walmart confirmed. Narrows the pool considerably, since most reviews are unverified or syndicated from the manufacturer.

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoThe 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.
urlNoA 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.
pageNoPage 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.
sortNoThe sorting option for the search results.
catIdNoWalmart 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.
facetNoWalmart 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.
domainNoWalmart storefront to search. Each storefront has its own catalog, prices and currency. Default is `walmart.com`.
languageNoLanguage 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.
maxPriceNoUpper bound of the price range, in the storefront currency.
minPriceNoLower bound of the price range, in the storefront currency.
deliveryTypeNoKeep 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

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

  1. 3 tool updatesv1.0.0
    • First observedhasdata_walmart_product_getWalmartProduct
    • First observedhasdata_walmart_reviews_getWalmartReviews
    • First observedhasdata_walmart_search_getSearchResults

TDQS

A4.3/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    5
    17
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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.
    12
    MIT

Latest Blog Posts

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