Scrape Product Reviews from Walmart, Target and Amazon
Scrape product reviews from Walmart, Target, Amazon and Shopify stores: inputs, sort order, real review fields, site limits and a Python complaint summary.
Published · Updated · By Omar Eldeeb
To scrape product reviews, collect them from the product's own review source with a fixed sort and a cap: one row per review with its rating, text, date, verified flag and the variant bought. Walmart and Target expose every review page; Amazon shows only its top reviews (8–13) to signed-out visitors. Sort by "Lowest rated" to get complaints first.
This guide covers what each site lets you reach, the inputs of an Apify actor that does it, a real review row, and a short Python script that turns the lowest-rated reviews into complaint counts without a paid AI model. Everything below was run on 2026-10-20 unless a date says otherwise.
What you can reach on each site
The table is from the actor's supported-sites list and our October 2026 cloud tests:
| Source | Reviews you get | Sort honored in our tests |
|---|---|---|
Walmart (walmart.com) |
All pages | Lowest rated, Most recent |
Target (target.com) |
All pages | Lowest rated, Most recent |
| Amazon (24 storefronts) | Only the top reviews on the product page, about 8 to 13 per product | No: Amazon's own order (sortApplied = "Most relevant") |
| Shopify stores with Yotpo, Judge.me, Okendo or Stamped | Reviews from the review widget | All five sorts on a Yotpo store; "Most recent" seen on Judge.me and Okendo stores |
| WooCommerce stores | From the store's own Store API | not tested |
| AliExpress (best-effort site) | All pages; some reviews are a rating with no text | No: fell back to "Most relevant" |
| Flipkart (best-effort site) | All pages | not tested |
| Mercado Libre (best-effort site) | Catalog URLs (/p/MLM…) only |
not tested |
Amazon's full review pages ask visitors to sign in. A scraper that respects that limit only gets the reviews printed on the product page. When Amazon shows "Sign in to see customer reviews" instead, the actor reports the product as restricted rather than as an empty success.
Not reachable with this actor: Google Shopping reviews, Loox and Reviews.io widgets (the page's structured reviews are used instead), and sites the actor marks unsupported, such as eBay, Best Buy, Home Depot and Etsy.
The inputs
The E-commerce Product Scraper Pro actor has a review section with these fields:
| Field | What it does |
|---|---|
reviewDetailsUrls |
Product pages to read reviews from |
reviewListingUrls |
Category or search pages: reviews for the products listed on the first page |
keywordReviews + marketplacesReviews |
A keyword searched on the chosen marketplaces; reviews for the products found on the first results page |
sortReview |
Most recent, Most relevant, Most helpful, Highest rated or Lowest rated |
maxReviewResults |
Cap for the whole run |
maxItemsPerStartUrl |
Cap per input, so one product can't use up the run's cap |
additionalReviewProperties |
Adds extra per-site fields |
If a site doesn't support the sort you asked for, its default order is used. The row's sortApplied says which order the reviews really follow, and the input's status row says so too.
A keyword review search, as run today:
{
"keywordReviews": "usb c cable",
"marketplacesReviews": ["www.target.com", "www.walmart.com"],
"sortReview": "Lowest rated",
"maxItemsPerStartUrl": 2,
"maxReviewResults": 4
}The status row for each marketplace explained what happened:
Keyword "usb c cable" on www.target.com: 24 product(s) found on the first page; reviews read for 1, 1 had reviews; 2 review(s) delivered. Sort applied per source — Target: Lowest rated. Stopped at maxItemsPerStartUrl (2) for this input. Only the first listing page is read for reviews.
Keyword "usb c cable" on www.walmart.com: 60 product(s) found on the first page (first 60 used); reviews read for 1, 1 had reviews; 2 review(s) delivered. Sort applied per source — Walmart: Lowest rated. Stopped at maxReviewResults (4). Only the first listing page is read for reviews.What a review row contains
A real Walmart row from today, with the reviewer's name removed:
{
"recordType": "review",
"productUrl": "https://www.walmart.com/ip/18928659757",
"inputUrl": "https://www.walmart.com/ip/ONN-10-C-C-BRD-WHT/18928659757",
"datePublished": "2026-10-09",
"reviewBody": "melted sparked barely got fire out but it melted the place on my phone where c plugs in",
"reviewRating": { "ratingValue": 1, "bestRating": 5 },
"additionalProperties": { "verified": true, "helpfulVotes": 0, "unhelpfulVotes": 0, "variant": "Multipack quantity: 1", "syndicatedFrom": "bazaarvoice" },
"reviewId": "443517198",
"rating": 1,
"title": null,
"verified": true,
"helpfulVotes": 0,
"images": [],
"variant": "Multipack quantity: 1",
"productId": "18928659757",
"productName": "Onn 10ft USB-C to USB-C Braided Charging Cable, USB-IF Certified, White - Compatible with iPhone, Samsung, Pixel, iPad Pro",
"position": 1,
"sortApplied": "Lowest rated",
"site": "walmart-us",
"source": "walmart",
"scrapedAt": "2026-10-20T09:30:03.526Z"
}Fields worth knowing:
ratingis on the scale inbestRating(5 on these sites).variantis the size, color or pack the reviewer bought, when the site says. It's how you tell whether complaints cluster on one variant. See scraping product variants for the variant data itself.datePublishedkeeps the precision the site gives. Walmart gives a day, Target a full timestamp, and relative dates like "3 months ago" become a month (2026-07), never an invented day.additionalPropertiescarries site extras: Target'sincentivizedandrecommendedflags, and Walmart'ssyndicatedFrom(reviews shown on Walmart but collected elsewhere).authorholds the reviewer's display name. You rarely need it; drop it before you store reviews.
Python: summarize complaints from the lowest-rated reviews
This script collects the lowest-rated reviews of a Walmart product and a Target product, then counts complaint themes with keyword lists. There's no AI model involved, so it costs nothing beyond the run and gives the same answer every time.
import os
import re
from collections import Counter
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("constructive_calm/ecommerce-product-scraper-pro").call(run_input={
"reviewDetailsUrls": [
{"url": "https://www.walmart.com/ip/ONN-10-C-C-BRD-WHT/18928659757"},
{"url": "https://www.target.com/p/3-39-usb-c-to-usb-c-charging-cable-dealworthy-8482-white/-/A-89698753"},
],
"sortReview": "Lowest rated",
"maxItemsPerStartUrl": 3, # per product, so one product can't use up the run cap
"maxReviewResults": 5, # run-wide cap; raise both for real analysis
})
reviews = [r for r in client.dataset(run["defaultDatasetId"]).iterate_items()
if r.get("recordType") == "review"]
# Complaint themes: a keyword list per theme. Edit these for your category.
THEMES = {
"stopped working": r"stopp?ed working|no longer works?|didn.t work|doesn.t work|not working|died|dead",
"physical damage": r"crack|fray|broke|wires? (?:visible|showing|exposed)|fell apart",
"short lifespan": r"lasted|weeks?|months? ago|already",
"fit / length": r"\bfit\b|loose|too? short|length",
"overheating / safety": r"\bhot\b|overheat|melt|spark|smoke|fire",
"wrong item": r"wrong item|received a|not as described|different (?:item|product)|ordered .{0,40}received",
"general quality": r"cheap|flimsy|crap|junk|poor quality",
}
low = [r for r in reviews if (r.get("rating") or 5) <= 2]
counts = Counter()
for r in low:
text = f"{r.get('title') or ''} {r.get('reviewBody') or ''}".lower()
for theme, pattern in THEMES.items():
if re.search(pattern, text):
counts[theme] += 1
print(f"{len(reviews)} reviews, {len(low)} rated 1-2 stars")
for r in reviews:
print(f" {r['site']:<11}{r['rating']}* sort={r['sortApplied']:<13}{(r.get('reviewBody') or '')[:70]!r}")
print("Complaint themes in 1-2 star reviews:")
for theme, n in counts.most_common():
print(f" {theme:<26}{n}/{len(low)}")Output on 2026-10-20 (pip install apify-client, APIFY_TOKEN set):
5 reviews, 5 rated 1-2 stars
target 1* sort=Lowest rated 'Bought 3 months ago and it’s already cracked with wires visible in mul'
target 1* sort=Lowest rated "piece of crap. don't buy!!"
target 1* sort=Lowest rated 'to short of a cord'
walmart-us 1* sort=Lowest rated 'melted sparked barely got fire out but it melted the place on my phone'
walmart-us 1* sort=Lowest rated 'Ordered Braided USB-C to USB Cable. Received Braided USB-C Cable'
Complaint themes in 1-2 star reviews:
physical damage 1/5
short lifespan 1/5
general quality 1/5
fit / length 1/5
overheating / safety 1/5
wrong item 1/5Five reviews is a demonstration, not a finding. For a real read, raise maxItemsPerStartUrl to 100–200 per product. The Target product had 95 reviews and the Walmart one 38, so a few hundred covers them all. Then read a handful of reviews behind each count before you trust it. Keyword themes miss misspellings ("minths") and sarcasm, and one review can hit several themes.
Two ways to make the counts more useful:
- Split by
variant. If most "too short" complaints are on the 3 ft version, that's a sizing problem, not a quality one. - Compare against "Most recent". Run the same products sorted by
Most recentevery week. A theme that grows in recent reviews points to a new batch or a supplier change, while the lowest-rated sort mostly shows the worst reviews of all time.
Holiday season: check the 1-star reviews before the deal
Black Friday is Friday, November 27, 2026, and Cyber Monday is November 30. Before you feature a product in a promotion, or buy a heavily discounted one, pull its lowest-rated reviews and look for safety or failure themes. A deep discount on an item with a cluster of "melted" or "stopped working" reviews isn't a deal. If you sell, a weekly Most recent run through November and December catches new complaints while there's still time to act, for example by fixing a listing or pausing a promotion. The holiday sales calendar has the 2026–2027 sale dates. To check the discount itself, see how to spot fake Black Friday discounts.
Cost
Pay per event, from the actor's pricing table: one review row is $0.0016 on Apify's FREE plan tier and $0.00056 on GOLD, plus $0.005 per run start. The README's example of 500 Target reviews is 500 × $0.00056 + $0.005 = $0.285 on GOLD; on FREE it's 500 × $0.0016 + $0.005 = $0.805. Review pages that need a residential proxy add a per-MB traffic fee. Apify's free plan includes $5 of usage every month, with no credit card required. There's no free trial inside the actor.
Related guides
- Walmart and Target price scraper: the product rows for the same retailers.
- Amazon price scraper by ASIN.
Do it without code
The free e-commerce price tracker builder creates a ready-to-run input for the actor's product section and shows a fixed example of the output. For reviews, use the review fields above in the actor's input form on Apify.
Disclosure: I built the actor and this site.
Sources: actor runs on 2026-10-20 (review sort and status text), our cloud test runs between 2026-10-17 and 2026-10-20 (per-site sort behavior and Amazon review counts), and the actor's README (supported-sites table, limitations, pricing).
Quick answers
Can you scrape all Amazon reviews of a product?
Not without signing in. Amazon shows only a set of top reviews on the product page (8 to 13 per product in our October 2026 tests) and asks visitors to sign in for the full review pages. A scraper that doesn't log in gets those top reviews, in Amazon's own order.
How do I get only the negative reviews of a product?
Sort by lowest rating at the source, so the 1- and 2-star reviews come first, then cap the number you collect. With the E-commerce Product Scraper Pro actor that's "sortReview": "Lowest rated" plus maxReviewResults. Walmart, Target and Yotpo-based Shopify stores honored that sort in our tests; Amazon and AliExpress fell back to their default order.
Is it legal to scrape product reviews?
Reviews are publicly visible, but they're written by people and often carry a name, so they can be personal data. Read each site's terms, collect only what you need, and drop reviewer names you don't need. This isn't legal advice; ask a lawyer if you're unsure.
How do I analyze product reviews without an LLM?
Group the 1- and 2-star reviews into themes with keyword lists (for example 'stopped working', 'cracked', 'too short') and count how many reviews mention each theme. It's free, repeatable and easy to check by reading the matching reviews.