Tony Wang6 min readHow to Scrape Walmart in 2026 (API & Python)
Scrape Walmart in 2026 — search, product detail, and reviews — DIY, no-code, or a structured API, with the legal reality (no self-serve API) up front.
The fastest way to scrape Walmart in 2026 is to call a structured API that returns normalized JSON — search results, product detail, and reviews — instead of reverse-engineering the internal endpoints behind walmart.com. Walmart has no self-serve public API for outside developers: its old Open API is closed to new signups and its current Marketplace API only exists for approved sellers managing their own listings. This guide covers all three approaches, what each returns, where DIY breaks, and the legal reality up front.
Why scrape Walmart data?
- Price monitoring — track how
priceandprice_textmove on specific items over time. - Competitor tracking — compare assortment, brand mix, and
seller_name(Walmart.com vs. third-party marketplace sellers) across a category. - Market research — see how search ranks products for a query and how
availabilityshifts. - Review and sentiment research — analyze
rating,review_count, and per-star breakdowns to gauge how a product is actually received. - AI pipelines — feed normalized product and review JSON into an agent or RAG pipeline without a page-parsing layer.
Is it legal to scrape Walmart?
Option 1: DIY in Python (and why it breaks)
Walmart's storefront renders from internal APIs rather than static HTML, so a DIY scraper has to reverse-engineer the same calls the site's own frontend makes:
import requests
# Walmart's storefront calls internal, undocumented endpoints —
# not a licensed public API, and robots.txt disallows /api/ and /search
resp = requests.get(
"https://www.walmart.com/ip/Apple-AirPods-Pro-2/5689919121",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
It demos and then breaks:
- The Terms of Use are explicit. Walmart names "robot, spider... scrape, data mine" tools directly and requires prior written consent for any automated gathering of site content.
- robots.txt disallows the paths a scraper needs.
/api/,/search, and/typeahead/are all off-limits to crawlers by Walmart's own directive. - Real, PerimeterX-class anti-bot at the edge. Walmart runs bot-detection and challenge pages in front of its storefront; naive
requestscalls get blocked or served CAPTCHA-style interstitials fast. - No official, documented product API. The data behind every page comes from internal endpoints not published or licensed for outside use, and their shape shifts with redesigns without notice.
- Everything fans out per item. Full detail and reviews each live behind a separate call keyed by
item_id— one page load never gets you a complete product record.
Option 2: No-code / ready-made tools
Marketplace scraper actors exist for one-off Walmart pulls, but they inherit the same Terms-of-Use exposure and anti-bot fragility as DIY, and still leave you stitching together search, detail, and review calls yourself to assemble a full product record.
Option 3: A structured Walmart API
For a repeatable, structured workflow, a Walmart scraping API returns normalized JSON with no page parsing or edge-defense upkeep. Search the catalog:
curl "https://api.crawlora.net/api/v1/walmart/search?q=wireless+earbuds" \
-H "x-api-key: $CRAWLORA_API_KEY"
Then resolve an item_id and pull detail and reviews in Python:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/walmart"
hits = requests.get(f"{base}/search", headers=h, params={"q": "wireless earbuds", "page": 1}).json()["data"]["items"]
item_id = hits[0]["item_id"]
product = requests.get(f"{base}/product/{item_id}", headers=h).json()["data"]
reviews = requests.get(f"{base}/product/{item_id}/reviews", headers=h).json()["data"]
A search response is normalized JSON (real fields — check the docs):
{
"code": 200,
"msg": "OK",
"data": {
"query": "wireless earbuds",
"page": 1,
"total_results": 1200,
"items": [
{
"item_id": "6543706564",
"title": "Bose QuietComfort Earbuds, White Smoke",
"brand": "Bose",
"canonical_url": "https://www.walmart.com/ip/6543706564",
"price": 179,
"price_text": "$179.00",
"currency": "USD",
"availability": "IN_STOCK",
"seller_name": "Walmart.com",
"rating": 4.4,
"review_count": 1203
}
]
}
}
page and sort are optional query params for /walmart/search, so you can paginate a full result set and re-sort by price or rating without changing the query. Product detail nests price, availability, and attributes by item_id:
{
"data": {
"item_id": "5689919121",
"title": "Apple AirPods Pro 2",
"brand": "Apple",
"price": 169,
"price_text": "$169.00",
"availability": "IN_STOCK",
"seller_name": "Walmart.com",
"rating": 4.6,
"review_count": 17823,
"attributes": { "Brand": "Apple" }
}
}
And reviews return an aggregate breakdown plus individual entries:
{
"data": {
"average_rating": 4.3,
"total_review_count": 2452,
"recommended_percent": 87,
"rating_counts": { "five_star": 1698, "four_star": 273, "three_star": 150, "two_star": 116, "one_star": 215 },
"reviews": [
{ "rating": 5, "text": "Love these earbuds.", "author": "MusicFan", "submission_date": "11/30/2025", "review_id": "406499690" }
]
}
}
Store one row per item_id and re-run on a schedule to track price and availability changes.
What you can collect
Public catalog data per endpoint: paginated, sortable search results (items, total_results, page); product detail (title, brand, price, price_text, availability, seller_name, rating, review_count, description, attributes); and review data (average_rating, total_review_count, recommended_percent, per-star rating_counts, and individual reviews with rating, text, author, submission_date). Public catalog data only.
Limitations
- No self-serve public API. The Walmart Open API is closed to new registrations and the Marketplace API is gated to approved sellers and solution providers — nothing here is a licensed path to bulk catalog access.
- Real anti-bot at the edge. Walmart runs PerimeterX-class bot detection and challenge pages in front of the storefront; naive requests get blocked fast.
- The Terms of Use are explicit. Walmart names robots, spiders, and scraping/data-mining tools directly, and separately restricts using site content for AI/ML training.
- Per-
item_idfan-out. Full detail and reviews each need a separate call keyed byitem_id— there's no single call that returns a complete product record. - No store- or zip-level pricing. Search and product responses return one national price and availability state, not per-store variance.
- Public data only. This is catalog data Walmart already shows publicly — never a way to reach account, order, or post-login information, or to bulk-download the catalog wholesale.
Where this gets used
- Price and deal tracking — watch
priceandprice_textmove on tracked items and flag markdowns. - Competitive benchmarking — compare assortment and brand mix against other big-box and marketplace retailers.
- Review research — track
rating,review_count, and star-distribution trends by product. - Sourcing and market research — spot which sellers (
seller_name) are winning placement on high-volume search terms.
Sources
Start collecting
Try it first, free: run any public URL through the Free Web Scraper, or check whether a site blocks bots with the Anti-Bot Checker — no signup.
Test the search and product endpoints in the Playground, check the schema in the API docs, and review pricing. For the same "no self-serve API, gated developer program" pattern on another retail giant, see how to scrape Amazon product data; for the big-box-retail version of this same problem, see how to scrape Target or how to scrape Costco. See also is web scraping legal.
Part of our how-to-scrape guide series — every platform we cover, in one index.
Frequently asked questions
Does Walmart have an official public API for product or search data?
Not for outside developers. The old Walmart Open API (WalmartLabs) is closed to new registrations and its affiliate endpoints have been retired. The current Walmart Marketplace API at developer.walmart.com is gated to approved sellers and solution providers for managing their own items, inventory, pricing, and orders — it does not offer third-party access to catalog search or product-detail data.
Is it legal to scrape Walmart?
Public product facts like title, brand, and price aren't copyrightable, and hiQ Labs v. LinkedIn held that accessing public data isn't a CFAA violation. But Walmart's Terms of Use explicitly prohibit using any robot, spider, or automated tool to scrape or data-mine site content, and separately bar using that content to train AI or machine-learning models, all without Walmart's express prior written consent. This isn't legal advice — read the actual Terms of Use and consult a lawyer for your specific use case.
What Walmart data can I actually collect?
Public catalog data: search results (item_id, title, brand, price, availability, seller_name, rating), full product detail (price, availability, description, attributes), and review data (average rating, star-distribution counts, individual review text and ratings). It does not include account, order, or any post-login information.
How hard is it to scrape Walmart without getting blocked?
Walmart runs PerimeterX-class anti-bot detection and challenge pages in front of its storefront, and its robots.txt disallows crawling /api/, /search, and /typeahead/ paths outright. A naive requests-based scraper gets blocked or challenged quickly, and the internal endpoints it would need to reverse-engineer aren't documented or stable across redesigns.
Can I filter or paginate Walmart search results through an API?
Yes — the /walmart/search endpoint accepts page and sort query parameters alongside the required search query, so you can page through a full result set and re-sort by relevance, price, or rating without changing the query itself.
How often should I re-scrape Walmart product data?
It depends on the use case: price-tracking workflows typically re-check daily or a few times a day since retail pricing changes frequently, while review and catalog-taxonomy pulls can run weekly. Always respect rate limits and avoid hammering the same item_id in a tight loop.
Does Walmart show per-store or per-zip pricing in these endpoints?
No — search and product-detail responses return one national price and availability state per item, not store-specific or zip-code-specific variance. If you need localized pricing you'd have to build that on top separately, and it isn't something these endpoints expose.