Walmart Product Reviews Scraper avatar

Walmart Product Reviews Scraper

Pricing

from $1.80 / 1,000 reviews

Go to Apify Store
Walmart Product Reviews Scraper

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

Reviewly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

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 sellerMonitor your own reviews and your competitors', and catch quality complaints in days instead of quarters
Product researcher / sourcing teamValidate a product with real buyer feedback before committing to inventory
Market researcher or analystMine thousands of genuine customer opinions across a whole category
Customer-experience teamFind unanswered complaints, and see how rivals reply to theirs
Agency or consultantDeliver review-based competitive audits without manual copy-paste
Developer or data teamFeed 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; syndicatedFrom tells you exactly which came from where.
  • Honest coverage reporting. Every record carries reviewsAvailable, reviewsCollected and a partial flag, 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

FieldTypeDefaultWhat it does
startUrlsarrayRequired. The Walmart products to scrape. Accepts product URLs, reviews-page URLs and bare item IDs (see below).
maxReviewsinteger0Stop after this many reviews per product. 0 collects everything available.
sortBystringrelevancyrelevancy (site default), submission-desc (newest), submission-asc (oldest), rating-desc (highest), rating-asc (lowest).
ratingFilterstringallall, or 5 / 4 / 3 / 2 / 1 to collect one star rating only.
proxyConfigurationobjectApify Residential, USStrongly 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/889126122
https://www.walmart.com/ip/889126122
https://www.walmart.com/reviews/product/889126122
889126122

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 sortBy to submission-desc. It is a stable order; relevancy is not (see difference #5 above).
  • For scheduled monitoring, combine submission-desc with a small maxReviews. maxReviews: 50 costs one request per product and catches everything new since the last run.
  • A partial: true record 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

FieldDescription
itemIdWalmart's item ID.
productUrl / reviewsUrlCanonical product page and reviews page.
name, productType, imageUrlProduct name, Walmart's product type, main image.
categoryPath, categoryFull breadcrumb from root to leaf, plus the leaf on its own.
sellerName, sellerId, offerIdWhoever currently holds the buy box — Walmart itself or a marketplace seller.
price, currency, availabilityStatusCurrent price as a number, and stock status.
rating, ratingRoundedAverage rating out of 5.
reviewCountEvery rating Walmart holds, including star-only ratings with no written text.
reviewsWithTextCountThe subset that has written text — the only kind Walmart serves.
ratingBreakdown, ratingPercentagesCounts and percentages per star.
recommendedPercentageShare of reviewers who would recommend the product.
aiSummaryWalmart's own AI-written { title, text } digest of the reviews.
aspectsThe "customers mention" topics, each with a snippetCount.
reviewFeaturesPer-topic sub-scores out of 5, with a sentiment polarity.
topPositiveReviewId, topNegativeReviewIdThe two reviews Walmart features.
sortBy, ratingFilterThe query this record was pulled under — so a multi-run dataset is self-describing.
reviewsAvailable / reviewsCollectedWhat this query could reach vs what was actually collected.
partialtrue when the run stopped short of everything available.
scrapedAtISO timestamp of the pull.

Review fields

FieldDescription
reviewIdWalmart's review ID — stable, so use it to de-duplicate across runs.
rating1–5.
title, textReview headline and body.
dateYYYY-MM-DD. Walmart publishes the day only, with no time.
reviewerName, reviewerIdDisplay name and Walmart's author ID.
verifiedPurchasetrue when Walmart confirms the reviewer bought the product.
badgesThe readable labels Walmart shows on the review.
helpfulVotes, unhelpfulVotes"Was this helpful?" counts.
recommendedWhether the reviewer recommends the product, when asked.
photosCustomer photo URLs.
languageLanguage the review was written in.
externalSource, syndicatedFromSet when the review was syndicated from a manufacturer's site rather than left on Walmart.
sellerResponseThe brand's or seller's public reply, when there is one.
variantName, variantImageUrlThe exact variant reviewed — reviews are shared across a product's variants.
aspectsWalmart's own topic tags for this review, with names resolved.
statusWalmart's moderation status, e.g. APPROVED.

▶️ How to use

On the Apify platform (no code required)

  1. Click Try for free at the top of this page.
  2. Paste one or more Walmart product URLs into Start URLs.
  3. (Optional) Set Max reviews per product, choose a Sort order, or pick a single star rating.
  4. Leave Proxy configuration on Apify Residential / US.
  5. Click Start and watch the log.
  6. 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:

  1. Create a schedule and attach this Actor.
  2. Set sortBy to submission-desc and maxReviews to something small, e.g. 50.
  3. Each run then costs one request per product and returns only recent reviews.
  4. 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-desc for 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:

  1. A page failed on every retry — usually proxy blocks. Re-run.
  2. The product is past Walmart's 10,000-review ceiling. Use the star-filter workaround above.
  3. Walmart's relevancy ordering re-served rows and displaced others. Re-run with sortBy: "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.

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.


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