Walmart Product Reviews Scraper
Pricing
from $1.80 / 1,000 reviews
Walmart Product Reviews Scraper
Scrape Walmart.com reviews & product data: star rating, title, text, date, reviewer name, verified-purchase & Walmart badges, helpful votes, variant reviewed, plus price, seller, category, availability, star breakdown, Walmart's AI summary & sub-scores. Sort or filter by rating.
Pricing
from $1.80 / 1,000 reviews
Rating
0.0
(0)
Developer
Reviewly
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Walmart Product Reviews Scraper — Export Every Walmart Review to Excel, CSV or JSON
Turn any Walmart.com product page into a clean spreadsheet of every customer review — full text, star rating, date, reviewer, verified-purchase flag and the brand's own replies — in seconds.
Paste a Walmart link. Get structured review data. No browser automation, no login, no API key, no code.
- ⚡ Fast — a 179-review product finishes in under 7 seconds
- 🎯 Complete — pages through the entire review history, not just page one
- 💬 Brand replies included — the manufacturer's public response to each complaint, which most scrapers drop entirely
- 🧠 Walmart's own AI analysis — the review summary and per-topic sub-scores like "Ease of setup: 4.1"
- 🔒 Bot-wall handled — Walmart runs PerimeterX and Akamai; this Actor gets through without a browser
- 📊 One-click export — Excel, CSV, JSON, XML or Google Sheets
👉 Try it now — paste one URL and hit Start.
📌 What this Actor does
This Apify Actor is a Walmart reviews scraper: give it one or more Walmart product URLs and it returns one clean record per product, with every review nested inside, ready to export.
It solves a problem Walmart creates on purpose. The site shows ten reviews at a time behind a paginator, offers no export button, has no public reviews API, and sits behind a bot wall that blocks most web scraping tools outright. Reading 500 reviews by hand is a wasted afternoon; reading 10,000 is impossible.
Who it's for
| You are… | You use it to… |
|---|---|
| Brand or marketplace seller | Monitor your own reviews and your competitors', and catch quality complaints in days instead of quarters |
| Product researcher / sourcing team | Validate a product with real buyer feedback before committing to inventory |
| Market researcher or analyst | Mine thousands of genuine customer opinions across a whole category |
| Customer-experience team | Find unanswered complaints, and see how rivals reply to theirs |
| Agency or consultant | Deliver review-based competitive audits without manual copy-paste |
| Developer or data team | Feed a clean, de-duplicated, dated review feed into dashboards, BI tools or LLM pipelines |
Real-world examples
- Pull all 1-star reviews of your top three competitors and rank their most common complaints.
- Track a product's rating weekly and alert when new negative reviews appear.
- Export 2,000 reviews of a category leader as training or evaluation data for a sentiment model.
- Harvest 5-star reviews with buyer names for social proof on a landing page.
✨ Key features
- Every reachable review, not a sample. Pages through the full history automatically — up to 10,000 per product, which is Walmart's own limit (see FAQ).
- Brand and seller replies. Walmart lets manufacturers answer reviews publicly, and those replies are real competitive intelligence. On the router used to build this Actor, 21 of 179 reviews carried one.
- Walmart's own review analysis, included free. The AI-written summary shown above the review list, the "customers mention" topics with a count each, and the per-topic sub-scores out of 5.
- Filter to one star rating. Pull only 1-star reviews to find product problems, or only 5-star for testimonials — and it's also how you scrape past the 10,000 ceiling.
- Five sort orders. Most relevant, newest, oldest, highest rated, lowest rated.
- Full product context in the same record. Name, image, price, seller, category breadcrumb, availability, average rating and the complete 1–5 star breakdown with percentages.
- Syndicated reviews are labelled, not disguised. Walmart mixes in reviews syndicated from manufacturer sites;
syndicatedFromtells you exactly which came from where. - Honest coverage reporting. Every record carries
reviewsAvailable,reviewsCollectedand apartialflag, so you always know whether an export is complete. - Any link format works. Full product URLs, slug-less URLs, reviews-page URLs, or a bare item ID. Share links with tracking parameters paste in as-is.
- Batch friendly. Queue a whole competitor catalogue in one run.
- Scheduling ready. Run daily with newest-first sorting and a small cap to collect only what's new.
🧠 Why this Actor is different
Walmart is one of the harder retail sites to scrape. It runs PerimeterX and Akamai Bot Manager, and its internal review API is sealed shut. Most Walmart scrapers either drive a headless browser (slow and expensive) or quietly return partial data. Here's what this one does differently — all of it measured during development, not claimed.
1. No browser, so it's genuinely fast and cheap. Competing Actors launch Chrome to get past the bot wall, which burns memory and compute on every single page. This one is a plain HTTP client. A 179-review product completes in 6.7 seconds across 4 requests.
2. It doesn't depend on the API everyone else fails on. Walmart's own review endpoint is a GraphQL persisted query that returns 456 Forbidden to every request — with a complete browser header set, with warmed cookies, from residential IPs. It also depends on a hash that changes with every Walmart release, so scrapers built on it break repeatedly. This Actor reads the server-rendered reviews page instead: same data, no cookies, nothing to rot.
3. It doesn't fall into Walmart's pagination trap. Past page 200, Walmart serves page 1 again instead of stopping. Any scraper that follows the "next page" link loops forever re-collecting the same 50 reviews and reports success. This Actor bounds the sweep and de-duplicates by review ID.
4. It requests 50 reviews per page, not 10. Walmart's page defaults to 10 and silently ignores any request above 50 — ask for 100 and you get 10, meaning five times the requests for identical data. This Actor pins the real maximum.
5. It tells you when Walmart's ordering cost you reviews. Walmart's default "most relevant" order is not stable between requests. On a large product, a 200-page sweep received 10,000 rows of which only 8,503 were distinct — later pages re-served rows earlier ones had already given, and each duplicate displaced a review that was never shown. This Actor measures that, flags the record partial, and tells you to re-run with newest-first sorting, which paged the same product with zero overlap. Most tools report the truncated pull as complete.
6. The dates are correct. Walmart publishes 10/24/2025. Naive date parsing turns that into 2025-10-23 for anyone in a timezone west of UTC — a silent off-by-one-day bug across an entire dataset. This Actor parses it explicitly.
7. It's tested and transparent. 68 automated tests run against real captured Walmart payloads. Known limits are documented in the FAQ rather than hidden.
⚙️ Input configuration
Minimal example
One URL is all you need:
{"startUrls": [{ "url": "https://www.walmart.com/ip/ASUS-RT-AX1800S-Router/889126122" }]}
Full example
{"startUrls": [{ "url": "https://www.walmart.com/ip/ASUS-RT-AX1800S-Router/889126122" },{ "url": "https://www.walmart.com/reviews/product/1363183437" },{ "url": "10450114" }],"maxReviews": 500,"sortBy": "submission-desc","ratingFilter": "all","proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
Input fields
| Field | Type | Default | What it does |
|---|---|---|---|
startUrls | array | — | Required. The Walmart products to scrape. Accepts product URLs, reviews-page URLs and bare item IDs (see below). |
maxReviews | integer | 0 | Stop after this many reviews per product. 0 collects everything available. |
sortBy | string | relevancy | relevancy (site default), submission-desc (newest), submission-asc (oldest), rating-desc (highest), rating-asc (lowest). |
ratingFilter | string | all | all, or 5 / 4 / 3 / 2 / 1 to collect one star rating only. |
proxyConfiguration | object | Apify Residential, US | Strongly recommended. See Advanced tips. |
Accepted URL formats
All four of these point at the same product and all four work:
https://www.walmart.com/ip/ASUS-RT-AX1800S-Router/889126122https://www.walmart.com/ip/889126122https://www.walmart.com/reviews/product/889126122889126122
Query strings are ignored, so a copied share link such as
.../889126122?athAsset=eyJhdGhjcGlkIjoi...&athena=true can be pasted without cleaning it up.
💡 Tips for best results
- Keep the residential proxy on. This is the single biggest factor in whether a run succeeds. During development a bare IP was hard-blocked by PerimeterX after roughly 30 requests; a residential IP served 24 back-to-back requests with no trouble.
- Keep the proxy country set to US. walmart.com is the US storefront.
- For very popular products, set
sortBytosubmission-desc. It is a stable order;relevancyis not (see difference #5 above). - For scheduled monitoring, combine
submission-descwith a smallmaxReviews.maxReviews: 50costs one request per product and catches everything new since the last run. - A
partial: truerecord usually just needs a re-run. Fresh proxy IPs normally pick up the rest.
📤 Output format
One dataset record per product: the product's own fields at the top level, with every review nested under reviews. Export from the Dataset tab as Excel, CSV, JSON, XML or straight to Google Sheets.
Sample output
{"itemId": "889126122","productUrl": "https://www.walmart.com/ip/ASUS-RT-AX1800S-Router/889126122","reviewsUrl": "https://www.walmart.com/reviews/product/889126122","name": "ASUS RT-AX1800S Dual Band WiFi 6 (802.11ax) Router Supporting MU-MIMO and OFDMA Technology","productType": "Network Routers","imageUrl": "https://i5.walmartimages.com/seo/ASUS-RT-AX1800S-Router_7a94aa00.jpeg","categoryPath": [{ "name": "Electronics", "url": "https://www.walmart.com/cp/electronics/3944" },{ "name": "Networking", "url": "https://www.walmart.com/cp/networking/126297" },{ "name": "Routers", "url": "https://www.walmart.com/cp/routers/1073784" }],"category": "Routers","sellerName": "KAISER","sellerId": "F239A65F520D4E65AB9CB7AF12C323EE","offerId": "84C7E13ADA5233378A68707E35D3F0FA","price": 99.3,"currency": "USD","availabilityStatus": "IN_STOCK","rating": 4.2,"ratingRounded": 4.2,"reviewCount": 225,"reviewsWithTextCount": 179,"ratingBreakdown": { "1": 25, "2": 8, "3": 8, "4": 29, "5": 155 },"ratingPercentages": { "1": 11, "2": 4, "3": 4, "4": 13, "5": 69 },"recommendedPercentage": 85,"aiSummary": {"title": "Router offers impressive speed, range, and value for money","text": "Customers are highly satisfied with the router's exceptional speed, impressive range, and strong connection…"},"aspects": [{ "id": "81", "name": "Ease Of Setup", "snippetCount": 46 },{ "id": "13266", "name": "Connection Reliability", "snippetCount": 24 }],"reviewFeatures": [{ "id": "81", "name": "Ease of setup", "score": 4.1, "polarity": "Positive" },{ "id": "184", "name": "Internet speed", "score": 5, "polarity": "Positive" }],"topPositiveReviewId": "1203803250","topNegativeReviewId": "1196730135","sortBy": "relevancy","ratingFilter": "all","reviewsAvailable": 179,"reviewsCollected": 179,"partial": false,"scrapedAt": "2026-08-12T14:52:03.114Z","reviews": [{"reviewId": "1196730135","rating": 1,"title": "V2 GUI has a problem with aimesh mapping","text": "Very disappointed with the V2 RT-AX1800S. I was replacing a 1800S V1 that had performed well…","date": "2025-07-08","reviewerName": "Oldwizard","reviewerId": "a0yasg2ayec363btkmz90wriw","verifiedPurchase": true,"badges": ["Verified Purchase", "Seller Verified Purchase"],"helpfulVotes": 1,"unhelpfulVotes": 0,"recommended": null,"photos": [],"language": "English","externalSource": "bazaarvoice","syndicatedFrom": "https://www.asus.com","sellerResponse": [{"author": "CLM","text": "Dear Oldwizard, Thank you for your comment. We do understand your disappointment…","date": null,"logoUrl": null}],"variantName": "ASUS RT-AX1800S Router","variantImageUrl": "https://i5.walmartimages.com/seo/ASUS-RT-AX1800S-Router_7a94aa00.jpeg","aspects": [{ "id": "481", "name": "For Home Use", "polarity": "Negative" }],"status": "APPROVED"}]}
Product fields
| Field | Description |
|---|---|
itemId | Walmart's item ID. |
productUrl / reviewsUrl | Canonical product page and reviews page. |
name, productType, imageUrl | Product name, Walmart's product type, main image. |
categoryPath, category | Full breadcrumb from root to leaf, plus the leaf on its own. |
sellerName, sellerId, offerId | Whoever currently holds the buy box — Walmart itself or a marketplace seller. |
price, currency, availabilityStatus | Current price as a number, and stock status. |
rating, ratingRounded | Average rating out of 5. |
reviewCount | Every rating Walmart holds, including star-only ratings with no written text. |
reviewsWithTextCount | The subset that has written text — the only kind Walmart serves. |
ratingBreakdown, ratingPercentages | Counts and percentages per star. |
recommendedPercentage | Share of reviewers who would recommend the product. |
aiSummary | Walmart's own AI-written { title, text } digest of the reviews. |
aspects | The "customers mention" topics, each with a snippetCount. |
reviewFeatures | Per-topic sub-scores out of 5, with a sentiment polarity. |
topPositiveReviewId, topNegativeReviewId | The two reviews Walmart features. |
sortBy, ratingFilter | The query this record was pulled under — so a multi-run dataset is self-describing. |
reviewsAvailable / reviewsCollected | What this query could reach vs what was actually collected. |
partial | true when the run stopped short of everything available. |
scrapedAt | ISO timestamp of the pull. |
Review fields
| Field | Description |
|---|---|
reviewId | Walmart's review ID — stable, so use it to de-duplicate across runs. |
rating | 1–5. |
title, text | Review headline and body. |
date | YYYY-MM-DD. Walmart publishes the day only, with no time. |
reviewerName, reviewerId | Display name and Walmart's author ID. |
verifiedPurchase | true when Walmart confirms the reviewer bought the product. |
badges | The readable labels Walmart shows on the review. |
helpfulVotes, unhelpfulVotes | "Was this helpful?" counts. |
recommended | Whether the reviewer recommends the product, when asked. |
photos | Customer photo URLs. |
language | Language the review was written in. |
externalSource, syndicatedFrom | Set when the review was syndicated from a manufacturer's site rather than left on Walmart. |
sellerResponse | The brand's or seller's public reply, when there is one. |
variantName, variantImageUrl | The exact variant reviewed — reviews are shared across a product's variants. |
aspects | Walmart's own topic tags for this review, with names resolved. |
status | Walmart's moderation status, e.g. APPROVED. |
▶️ How to use
On the Apify platform (no code required)
- Click Try for free at the top of this page.
- Paste one or more Walmart product URLs into Start URLs.
- (Optional) Set Max reviews per product, choose a Sort order, or pick a single star rating.
- Leave Proxy configuration on Apify Residential / US.
- Click Start and watch the log.
- Open the Dataset tab and click Export — Excel, CSV, JSON, XML or Google Sheets.
Where to find a product URL
Open any product on walmart.com and copy your browser's address bar. That's it — no cleaning up required.
Run it on a schedule
Use Apify Schedules to run daily or weekly:
- Create a schedule and attach this Actor.
- Set
sortBytosubmission-descandmaxReviewsto something small, e.g.50. - Each run then costs one request per product and returns only recent reviews.
- De-duplicate against your own store on
reviewId.
Call it from code
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('YOUR_USERNAME/walmart-product-reviews-scraper').call({startUrls: [{ url: 'https://www.walmart.com/ip/ASUS-RT-AX1800S-Router/889126122' }],sortBy: 'submission-desc',maxReviews: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`${items[0].name}: ${items[0].reviews.length} reviews`);
Python, cURL and other language snippets are on the Actor's API tab.
📈 Use cases
1. Competitive review monitoring. Queue your rivals' bestsellers, run weekly, and track how their ratings and complaint themes move. Because reviewId is stable, you can diff runs to see exactly what's new.
2. Quality alerts on your own catalogue. Run daily with ratingFilter: "1" and route new 1-star reviews to your support queue. You find the defect from real buyers before it becomes a returns spike.
3. Reply-gap auditing. sellerResponse shows which complaints your competitors answer publicly and which they ignore — a direct read on their customer-experience operation, and an easy differentiator to pitch.
4. Pre-sourcing product validation. Before you buy inventory, export every review of the category leaders and read what buyers actually complain about. reviewFeatures gives you Walmart's own sub-scores per topic, so you can see whether the weakness is setup, durability or value.
5. Sentiment analysis and LLM pipelines. Thousands of real reviews, already de-duplicated, dated and labelled with verified-purchase status, is high-quality input for a sentiment model or a RAG index.
6. Marketing social proof. Pull ratingFilter: "5" for testimonials, complete with reviewer names and the specific variant purchased.
🛠️ Advanced tips
Scrape past Walmart's 10,000-review limit
Walmart paginates at most 200 pages of 50 reviews — 10,000 — for any one query. Some products have far more: Great Value Whole Milk has around 359,000 ratings, 25,372 of them with text.
The workaround is the star filter, because each star rating is paged separately and gets its own 10,000-review allowance. Run the Actor five times on the same product with ratingFilter set to 5, 4, 3, 2 and 1, and you reach up to 50,000 reviews. Use ratingBreakdown in the output to see how many exist per star before you commit.
Proxy configuration
- Residential, not datacenter. Walmart's PerimeterX wall is far more tolerant of residential exit IPs.
- Country: US. walmart.com is the US storefront.
- Blocks are an IP problem, not a settings problem. The Actor detects a block, rotates to a fresh proxy session automatically, and retries up to five times per page. If a whole run fails, re-running usually lands on cleaner IPs.
- Running without a proxy works for a handful of requests, then stops. Expect a hard block after a few dozen.
Performance and cost tuning
- Set
maxReviews. It's the most effective lever there is: a product's first 100 newest reviews cost 2 requests instead of 200. - Prefer
submission-descfor large products. Stable ordering means no wasted requests re-reading pages you already have. - Batch products into one run rather than one run each — the Actor reuses the same proxy session across products until one gets blocked.
- Memory: 512 MB–1 GB is plenty. There's no browser, so more memory buys nothing.
Incremental scraping
Because reviewId is stable and date is a plain YYYY-MM-DD, incremental collection is simple: run with submission-desc, and stop merging once you hit a reviewId you already have.
❓ FAQ and troubleshooting
Why did I get fewer reviews than the product page shows?
Almost always because Walmart only serves reviews that have written text. A product showing "225 reviews" may have only 179 with text — the other 46 are star-only ratings that no tool can retrieve, because Walmart never sends them. Both numbers are in every record: compare your count against reviewsWithTextCount, not reviewCount.
What does partial: true mean?
The run stopped short of everything available. Three possible reasons, all named in the run log:
- A page failed on every retry — usually proxy blocks. Re-run.
- The product is past Walmart's 10,000-review ceiling. Use the star-filter workaround above.
- Walmart's
relevancyordering re-served rows and displaced others. Re-run withsortBy: "submission-desc".
Can it scrape more than 10,000 reviews from one product?
Not in a single run — that's Walmart's limit, not the Actor's. Use the star-filter workaround to reach up to 50,000.
"No reviews were collected" — what now?
PerimeterX blocked every proxy IP the run was given. Enable the Apify Residential proxy if it's off, then re-run to get fresh IPs. The run log will say whether it received the block page.
"Walmart served no product for item …"
That item ID doesn't exist or has been delisted. Walmart answers a bogus ID with an empty-but-valid page rather than an error, so the Actor checks explicitly instead of writing a record full of nulls. Confirm the URL opens in a browser.
"Could not find an item id in …"
The URL isn't a product or reviews page. Search, category and browse URLs aren't supported — open the individual product and copy that URL instead.
Does it need a login or an API key?
No. It uses no cookies, no session and no Walmart credentials.
How much does a run cost?
The Actor is priced per result — one event per product plus one per review — so cost scales with the data you actually receive, and a failed product bills nothing. Set maxReviews to cap spend, and use Apify's per-run maximum charge if you want a hard ceiling. The Actor stops cleanly when it hits that ceiling instead of scraping data it can't charge for.
How fast is it?
A 179-review product finishes in about 7 seconds (4 requests). A 433-review product takes 9 requests. A full 10,000-review sweep is 200 requests and runs for a few minutes.
Are review photos included?
The field is there (photos), but Walmart's reviews page returned empty photo arrays for every product sampled. Don't build a workflow that depends on it.
Are the reviews really from Walmart?
Some are syndicated from manufacturer websites — Walmart mixes them in, and on the router example 157 of 179 came from asus.com via Bazaarvoice. Rather than hiding that, the Actor labels every such review with externalSource and syndicatedFrom so you can filter them out if you only want Walmart-native reviews.
Can I get reviews from Walmart Canada or Mexico?
Not currently. This Actor targets walmart.com, the US storefront.
Is scraping Walmart reviews legal?
This Actor collects only publicly visible data, with no login and no access to personal accounts. Reviewer display names are published by Walmart itself. You are responsible for how you use the data — if you process personal data of people in the EU or California, review your GDPR/CCPA obligations. See Apify's guide on ethical web scraping.
Something else is broken
Run it again with the Log tab open and send us the run ID — see Support below. The log names the exact failure for every product.
📞 Support
- Questions, bug reports and feature requests: open a ticket on the Actor's Issues tab, and include the run ID plus the input you used. That's the fastest route to a fix.
- Direct contact: me@ahmedhrid.com
- Custom scraping work: if you need a different Walmart dataset — search results, product catalogues, price tracking, or another retailer — email the address above.
Engineering notes, including how the bot wall was diagnosed and every measured limit, are in docs/how-it-works.md.
Related searches
walmart scraper · walmart reviews scraper · walmart product reviews api · export walmart reviews to excel · walmart review data · scrape walmart product data · walmart web scraping · apify actor walmart · e-commerce review scraper · product review scraping tool · walmart competitor analysis · retail sentiment analysis · customer review dataset · walmart marketplace research