Walmart product pages hold what a commerce team wants: the current price, the rollback price it dropped from, the star rating, and the marketplace sellers competing for the buy box. Pulling that out of walmart.com programmatically is the annoying part, because the official developer program serves people selling on Walmart, not people reading it. I'll show the DIY route, where it breaks, and the shortcut I actually use: the Walmart API on Apify, which turns a search term or an item id into structured JSON.
Disclosure: the Apify links in this post are affiliate links. If you run the Actor, I may earn a referral commission at no extra cost to you.
Does Walmart have an API?
Yes, with a catch: Walmart's official developer APIs are scoped to approved partners. The Marketplace API lets registered sellers manage their own listings and orders, and the affiliate feeds sit behind an application process. There is no open endpoint where you paste a key and read any product page, its reviews, or the full list of third-party offers on an item. That gap is what a scraper-as-API fills: send a query or an item id, get the public page data back as JSON, no seller account involved.
What the Walmart API returns
The Walmart API returns product, price, review, and seller data as structured JSON, selected by a single search_mode input: search, product, reviews, or sellers.
| Field | Example | Notes |
|---|---|---|
price |
49.88 |
Current listed price |
wasPrice |
69.00 |
The pre-rollback price, when Walmart shows one |
rating |
4.6 |
With reviewCount alongside |
sellerName |
Walmart.com |
Who holds the buy box on that row |
usItemId |
414822715 |
Walmart's item id, reusable as the item_id input |
availabilityStatus |
IN_STOCK |
On seller rows, next to deliveryDate
|
Search rows also carry productId, sponsored, and storeId. Switching to product mode adds upc, manufacturerNumber, the categories path, variantCount, and a ratingBreakdown of the star distribution, while reviews mode returns the review text with rating, reviewDate, and authorName per row.
Who this is for
Marketplace sellers who want to know who else is on their listings and at what price. Repricing and e-commerce analytics teams tracking rollbacks across a category. Developers wiring live product data into an AI agent that has to answer "who sells this and when does it arrive".
The manual way, and where it breaks
The DIY version starts well. Product data sits in a JSON blob embedded in the page, so you fetch the HTML, find the blob, and parse it. Then the problems arrive. Walmart's bot detection is among the most aggressive in retail, so plain requests hit challenge pages fast and you end up adding headless browsers and residential proxies. The blob's schema shifts without notice. And the piece people want most, the full list of marketplace offers on an item, sits behind its own compare-sellers view that many DIY scripts never reach. That last part is why so many Walmart scrapers look fine in a demo and fall over on seller data in production.
The faster way: run the Walmart API
One Actor, a documented input, documented JSON back. All four modes share the same shape.
Apify Console
- Open the Walmart API and click Try for free.
- Set
search_modetosearchand enter aquery, or pickproduct,reviews, orsellerswith anitem_id. - Run it and download the dataset as JSON, CSV, or Excel.
REST
curl -X POST "https://api.apify.com/v2/acts/johnvc~walmart-api/runs?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "search_mode": "search", "query": "coffee maker", "max_results": 5 }'
Endpoint details live in the Apify API docs.
Get Walmart product data in Python
The same run from Python with apify-client 3.x (it returns a typed run object):
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("johnvc/walmart-api").call(
run_input={
"search_mode": "search",
"query": "coffee maker",
"max_results": 5,
}
)
for item in client.dataset(run.default_dataset_id).iterate_items():
print(item["title"], item["price"], item["sellerName"])
Each row carries price, rating, and seller, plus both productId and usItemId for chaining into the other modes.
Scrape Walmart prices across a search
search mode is the price-tracking workhorse: one query returns a page of products, each with price, wasPrice, rating, reviewCount, and who is selling it. Pass a store_id and the results scope to one physical store, because Walmart prices the same item differently by location. The task Scrape Walmart prices runs a preconfigured version of exactly this.
Look up one product in full detail
Once you have an item id, product mode returns the whole listing: upc and manufacturerNumber for catalog matching, the categories path, variantCount, and the ratingBreakdown behind the star average. Flip search_mode to reviews on the same id and you get the review text itself, dated and attributed. Start from the task Walmart product lookup API, or its Chinese-language twin Walmart shangpin API.
Check every seller on a listing
This is the mode I built the Actor around; it is where competing tools fail most. sellers mode returns one row per offer on an item: sellerDisplayName, sellerType, price, availabilityStatus, deliveryDate, and returnPolicy. You see every third party's price against the buy box, whether they have stock, when they deliver, and their return terms. If you sell on Walmart Marketplace, this is how you spot a new competitor on your own listing as soon as they show up. The task Walmart seller lookup runs it end to end.
Build a Walmart price history
One run is a snapshot. History comes from repetition: save your search as a task, attach an Apify schedule, and each run appends fresh rows with that day's price and wasPrice, so you catch a rollback the day it starts. The worked example is Walmart price history tracking, and its Chinese-language counterpart is Walmart jiage jiankong.
Use it from Claude via MCP
Apify exposes the Actor over the Model Context Protocol, so Claude, Claude Code, and Cursor can call it mid-conversation and answer "list every seller on this item and their delivery dates" with live rows. The task Walmart data in Claude via MCP has the setup, and you can read more about Claude Code at claude.ai.
Working example on GitHub
The quick-start repo has a runnable Python client plus MCP install walkthroughs for Claude, Cursor and ChatGPT.
johnisanerd
/
Apify-Walmart-API
walmart api: Python + MCP quick-start for the Walmart API on Apify. Call it from Python (uv) or as an MCP tool in Claude and Cursor. Returns structured JSON for walmart api.
π Walmart API: products, prices, reviews and sellers as JSON
Actor: johnvc/walmart-api Β· Input schema
This repo shows two ways to use the Walmart API on Apify: a Python quick start and MCP installs for five AI clients. Search products by keyword, look up full detail with UPC and variants, export customer reviews, and list every marketplace seller offering an item. If you were planning to scrape Walmart prices yourself, this returns the same rows without the blocking fight.
Video Walkthrough
Text walkthrough
The walmart api has four modes behind one search_mode input. Search returns products with price, wasPrice, rating, reviewCount, sellerName, a sponsored flag and both product ids. Sellers is the differentiator: every company offering an item with its own price, availabilityStatus, deliveryDate and returnPolicy, including the registered legal name behind the storefront. Reviews takes the numeric usItemId (search hands it to you) and detail adds upc, manufacturerNumber andβ¦
FAQ about scraping Walmart
Is there a free Walmart API, and what does this scraper cost?
Walmart's free official APIs are for approved sellers and affiliates, not general product reads. The scraper bills pay per result: you pay for the rows a run delivers, and max_results caps it up front. New Apify accounts include free platform credit, so small test runs usually cost nothing out of pocket.
Do I need a Walmart API key to use this scraper?
No. There is no Walmart developer account, seller registration, or affiliate approval involved. You authenticate with your Apify token and send JSON.
Does the Walmart scraper work with Claude and other MCP clients?
Yes. Connect the Apify MCP server and the Actor appears as a callable tool in Claude, Claude Code, or Cursor, so an agent can run a seller check or a price lookup from a prompt.
How do I run the Walmart scraper on a schedule?
Save an input as a task, attach an Apify schedule with a cron expression like 0 7 * * *, and it runs unattended. Scheduling is the whole trick behind price tracking, and the place to start is the Walmart API.
Will the scraper show me a product's past prices?
No. Each run returns the current price, plus wasPrice when Walmart displays one; that is a snapshot of today. If you want history, schedule the scraper and build the record yourself. After a few weeks you own a price series nobody can sell you.
More from Truffle Pig Data
Walmart is one shelf. These Actors return the same kind of structured JSON for the rest of the aisle: the Google Shopping API for cross-retailer price comparison, the Google Immersive Product API for Google's own product pages, and the Google Shopping Lite API as the lighter-weight take on shopping results.
Wrapping up
Walmart's developer program will not hand you product, review, and seller data, but you can still consume it like an API. Run a search with the Walmart API, then flip search_mode to sellers and see everything competing on the listing.

Top comments (0)