Walmart Scraper — Products, Prices & Reviews
Pricing
from $2.00 / 1,000 product scrapeds
Walmart Scraper — Products, Prices & Reviews
Scrape Walmart.com search results, category pages, product pages and reviews: price, was-price, rating, seller, availability, fulfillment, images and specifications. Any keyword or URL.
Pricing
from $2.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Trevor Ortega
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
10 days ago
Last modified
Categories
Share
Walmart Scraper
Scrape Walmart.com search results, browse and category pages, product pages and customer reviews into a clean dataset: price, was-price, savings, unit price, rating, review count, seller, availability, shipping / pickup / delivery, badges (Best seller, Rollback, Clearance, Overall pick), rank on the page and sponsored flag. Turn on details for the description, specifications, every image, every variant with its own price and stock, UPC, seller profile and return policy, and turn on reviews for the review texts.
No headless browser and no login: the Actor reads the JSON Walmart embeds in its own pages, so one request returns 40+ products. Download the results as JSON, CSV or Excel, or pull them through the API into your own app, Google Sheets or an LLM pipeline. You pay per item you get.
What data does Walmart Scraper extract?
Every product from a search, browse or category page (the result event):
| Field | Description |
|---|---|
type | "product" |
usItemId, productId | Walmart item id (the number in /ip/.../18901811909) and internal product id |
name, url, imageUrl | Product title, canonical product URL, full-size main image |
brand | Brand, when the result tile carries it (always filled with details on) |
price, wasPrice, savingsAmount, currency | Current price, strike-through price, the difference, USD |
priceText | Price as displayed ($99.00, or See price in cart; the number is still in price) |
unitPrice | Unit price text, e.g. $84.97/count, 2.9 ¢/fl oz |
variantPriceMin, variantPriceMax | "Options from $x" / "$x - $y" across variants and conditions |
shippingPrice, subscriptionPrice | Shipping fee shown on the tile; subscribe-and-save price |
rating, reviewCount | Average rating (0-5) and number of ratings |
sellerName, sellerId | Seller (Walmart.com or the marketplace seller) |
isSponsored | true for sponsored tiles (ads). A product shown as an ad and as an organic result is saved once, as organic |
availability, inStock | IN_STOCK / OUT_OF_STOCK / UNKNOWN and a boolean (null when Walmart shows no offer) |
fulfillment | {type, shipping, pickup, delivery, freeShipping, shippingText, pickupText, deliveryText}, e.g. "Free shipping, arrives today" |
badges | Best seller, Rollback, Clearance, Reduced price, Overall pick, Deal, Low stock, Only 4 left, 100+ bought since yesterday, ... |
category, categoryPath, productType | Walmart's primary shelf for the product (leaf and full path) and its product type. For some items the primary shelf is a merchandising shelf such as "View in 3D"; productType (Headphones, Air Fryers) is the stable classification |
variantCount, additionalOfferCount | Variants shown on the tile; other offers for the same product |
shortDescription | Short description when the tile has one |
position, page | Rank among the product tiles of the page (ads included, in display order) and page number |
location | Store context Walmart priced the page for: {zipCode, city, state, storeId} |
searchTerm, sourceUrl, scrapedAt | Provenance |
changeType, previousValues | Only with Only new or changed items on: new or changed, and for changed products the old values of the fields that changed (review items get changeType: "new") |
With Include product details on, or for product URLs (the extra detail event), each product also gets:
| Field | Description |
|---|---|
description, shortDescription | Full description and summary as plain text |
specifications | Specification table as a dict ({"Battery life": "50 h", ...}) |
images | All product images, full size |
variantOptions, variants | Option dimensions ([{name: "Color", values: [...]}]) and every variant: {usItemId, productId, options: {Color: "Black", "Clothing Size": "M"}, price, wasPrice, availability, inStock, url} |
upc, gtin, model, manufacturer, manufacturerPartNumber | Identifiers (each null when Walmart does not publish it) |
seller | {id, catalogSellerId, name, legalName, type, rating, reviewCount, url, logoUrl, isProSeller, fulfilledByWalmart} |
returnPolicy | {returnable, freeReturns, windowDays, text} |
warranty, warrantyUrl | Warranty text and link when present |
ratingCounts, reviewsWithText, recommendedPercentage | 1-5 star breakdown, number of written reviews, "would recommend" share |
reviewAspects | What reviewers talk about: [{name: "Sound Quality", mentions: 125}, ...] |
condition, conditionOffers | New / Open Box / ... and the price of each condition on offer |
offerType, secondaryOfferPrice | ONLINE_AND_STORE / ONLINE_ONLY / STORE_ONLY; price of the next seller's offer when there is one |
ingredients, directions, warnings | Grocery, health and safety texts when present |
fulfillment | Adds shippingPrice, deliveryPrice, arrivesBy, shippingRestricted and full sentences such as "Free pickup, today at Sacramento Supercenter" |
primaryUsItemId, orderLimit | Parent item of the variant group; maximum order quantity |
With Include reviews on, or for review-page URLs (the review event), one item per review:
| Field | Description |
|---|---|
type | "review" |
usItemId, productName, productUrl | Product the review belongs to |
reviewId, rating, title, text, submittedAt | Review id, stars (1-5), title, text, ISO date |
positiveFeedback, negativeFeedback | Helpful / not helpful votes |
verifiedPurchase, recommended, badges | Verified purchase flag, "would recommend", badge texts |
photosCount, photos | Customer photos |
sellerResponse, sellerResponseDate | Seller reply when present |
soldBy, fulfilledBy, variant, reviewedItemId | Which seller and variant the reviewer bought |
language, syndicatedFrom, scrapedAt | Review language, original source for syndicated reviews |
reviewerName | Reviewer's nickname as Walmart shows it ("Richard"; reviewers who chose to stay anonymous show as "anonymous"); null when the review has no nickname (Walmart then prints "Walmart customer") |
reviewerId | Always null: Walmart shows no reviewer id or public profile on review cards (kept for the same shape as the other review Actors) |
reviewerLocation | Reviewer location when Walmart publishes one; null otherwise (rare: none was set in our samples) |
Walmart shows no reviewer photos or avatars, so there is no image field for reviewers.
How to use Walmart Scraper
- Type one or more Search terms (one per line) and/or paste Start URLs: search pages,
/browse/pages,/cp/category pages, product pages (/ip/...) or review pages (/reviews/product/...). Filters you applied on walmart.com stay in the URL and are respected. - Pick Sort by and, if you want, a Min / Max price.
- Set Max items to cap the run (and the cost). Products and reviews both count.
- Turn on Include product details and/or Include reviews only if you need them: each costs extra requests and events (see below).
- Click Start. Results appear in the Dataset tab; export from there or use the API.
Input example
{"searchTerms": ["headphones"],"startUrls": [{ "url": "https://www.walmart.com/browse/electronics/over-ear-on-ear-headphones/3944_133251_1095191_1230614_1230477" },{ "url": "https://www.walmart.com/ip/18901811909" }],"maxItems": 200,"maxPagesPerSearch": 5,"sortBy": "best_seller","minPrice": 20,"maxPrice": 150,"includeSponsored": true,"includeDetails": false,"includeReviews": false,"maxReviewsPerProduct": 20,"reviewSort": "newest","proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["UNBLOCKER"] }}
Output example
A product from a search page:
{"type": "product","usItemId": "17705823295","productId": "2X5KX5MXYEUT","name": "Bluetooth Headphones Over Ear, 65Hrs Playtime Wireless Headphones,Bass Boosted by 90%,Lightweight Headset with Deep Bass, Clear Call with 4 Noise Cancelling Mics,Low Latency for Travel Work Cellphone","url": "https://www.walmart.com/ip/Bluetooth-Headphones-4-Mic-Noise-Cancelling-Calls-Wireless-Earbuds-2200mAh-Charging-Case-Support-Wireless-Charging-Compatible-iPhone-13-Pro-Max-XS-XR/17705823295","brand": null,"price": 19.89,"wasPrice": 169.97,"priceText": "$19.89","currency": "USD","unitPrice": null,"savingsAmount": 150.08,"shippingPrice": null,"variantPriceMin": 19.59,"variantPriceMax": null,"subscriptionPrice": null,"rating": 4.2,"reviewCount": 3922,"sellerName": "VEATOOL","sellerId": "4FBDDE46B58946639B681AE74E2E7F72","isSponsored": true,"availability": "IN_STOCK","inStock": true,"fulfillment": {"type": "FC","shipping": true,"pickup": false,"delivery": false,"freeShipping": false,"shippingText": "Shipping, arrives Sun, Oct 4","pickupText": null,"deliveryText": null},"badges": ["Best seller"],"imageUrl": "https://i5.walmartimages.com/seo/Bluetooth-Headphones-4-Mic-Noise-Cancelling-Calls-Wireless-Earbuds-2200mAh-Charging-Case-Support-Wireless-Charging-Compatible-iPhone-13-Pro-Max-XS-XR_51533b6e-c49e-4459-9787-3c45d26de3ec.6ad6cf413848b8ff85c27d97aca66841.jpeg","category": "Over-Ear and On-Ear Headphones","categoryPath": ["Electronics", "Audio", "Headphones", "Shop Headphones by Type", "Over-Ear and On-Ear Headphones"],"productType": "Headphones","variantCount": 0,"additionalOfferCount": null,"shortDescription": null,"position": 2,"page": 1,"location": { "zipCode": "95829", "city": null, "state": "CA", "storeId": "3081" },"searchTerm": "headphones","sourceUrl": null,"scrapedAt": "2026-10-02T20:23:58+00:00"}
With includeDetails: true the same item additionally carries, for example:
{"brand": "VEAT00L","model": "BT1632","upc": null,"description": "【Bluetooth 5.4&Dual-Connections】Equipped with the latest Bluetooth 5.4 tech, ...","specifications": { "Headphone style": "Over-Ear", "Battery life": "65 h", "Wireless": "Y" },"images": ["https://i5.walmartimages.com/seo/...6ad6cf413848b8ff85c27d97aca66841.jpeg", "..."],"variantOptions": [{ "name": "Actual Color", "values": ["Blue", "Gold", "Orange", "Pink", "Purple", "Silver", "black gray"] }],"variants": [{ "usItemId": "2312754100", "productId": "6MLYJ0VM9OEE", "options": { "Actual Color": "Blue" }, "price": 21.59, "wasPrice": 179.97, "availability": "IN_STOCK", "inStock": true, "url": "https://www.walmart.com/ip/.../2312754100" }],"seller": {"id": "4FBDDE46B58946639B681AE74E2E7F72","catalogSellerId": "101133098","name": "VEATOOL","legalName": "Shenzhen Dexinyue Trading Co., Ltd.","type": "Marketplace seller","rating": 4.35,"reviewCount": 11092,"url": "https://www.walmart.com/global/seller/101133098","isProSeller": true,"fulfilledByWalmart": true},"returnPolicy": { "returnable": true, "freeReturns": true, "windowDays": 30, "text": "Free Holiday returns until Jan 31" },"ratingCounts": { "1": 464, "2": 168, "3": 230, "4": 383, "5": 2677 },"reviewsWithText": 700}
A review:
{"type": "review","usItemId": "18901811909","reviewId": "437018039","rating": 5,"title": "very happy with the headphones","text": "These headphones are fantastic! The sound is just as good as headphones that cost twice as much. Definitely worth it!","submittedAt": "2026-08-15","positiveFeedback": 0,"negativeFeedback": 0,"verifiedPurchase": true,"recommended": null,"badges": ["Verified Purchase"],"photosCount": 1,"photos": ["https://i5.walmartimages.com/dfw/6e29e393-c66d/k2-_d5dbf8a8-fa57-4e29-aecc-a04e496c7aad.v1.jpg"],"sellerResponse": null,"sellerResponseDate": null,"soldBy": "COZZY SHOPPING INC","fulfilledBy": "Seller","variant": { "Color": "Black" },"reviewedItemId": "5530776824","language": "English","syndicatedFrom": null,"reviewerName": "anonymous","reviewerId": null,"reviewerLocation": null,"productName": "Skullcandy Crusher XT Wireless Foldable Over-Ear Headphones, Krazy Pink","productUrl": "https://www.walmart.com/ip/Skullcandy-Crusher-XT-Wireless-Over-Ear-Krazy-Pink/18901811909","scrapedAt": "2026-10-02T20:24:59+00:00"}
Proxy note
Walmart answers datacenter and most residential proxy traffic with a "Robot or human?" challenge, so this Actor uses Apify's Unblocker proxy (group UNBLOCKER) by default. Unblocker is billed to your Apify account per answered request: 10 Unblocker units, about $0.0015 on the free plan and less on paid plans. Requests the proxy cannot complete are free; a page that no longer exists (HTTP 404) still counts. One request returns either a search / browse page (40 products plus sponsored tiles), one product page, or 10 reviews.
The Actor is built around that price: it requests a further result page only when Max items still needs it, opens product and review pages only when you ask for them, and reuses the 10 reviews a product page already contains instead of fetching them again. The SUMMARY record in the run's key-value store reports successfulRequests, so you can check the proxy cost of every run. You can switch to another proxy group in the input; the Actor then retries challenge pages on fresh IPs and reports them as blockedPages.
How much does it cost?
Pay per event, no subscription: $0.002 per product, + $0.003 per product page opened (details), $0.0008 per review, plus the proxy requests above and a few cents of platform usage per thousand items. Worked example for 100 products from one search, on the free plan:
| Run | Requests (proxy cost) | Events | Total |
|---|---|---|---|
| 100 products, search data only | 2 search pages ($0.003) | 100 x $0.002 = $0.20 | about $0.20 |
| + product details | + 100 product pages ($0.15) | + 100 x $0.003 = $0.30 | about $0.65 |
| + 20 reviews per product, most relevant first (set Max items to 2,100) | + 100 review pages ($0.15; 200 pages for other sort orders) | + 2,000 x $0.0008 = $1.60 | about $2.40 |
Search data alone is by far the cheapest per product: one $0.0015 request brings 40-60 products. Turn details and reviews on only for the products you need them for, for example by running a second pass on product URLs you selected from the first dataset.
How to scrape Walmart search results by keyword
Put the keywords into Search terms. Each term is searched on Walmart.com and paginated automatically, 40 organic products per page plus the sponsored tiles Walmart mixes in (isSponsored; turn Include sponsored products off for organic results only). Walmart serves 11 to 25 pages per query, so one term yields roughly 500 to 1,200 products; use several terms, category (/browse/) URLs or price ranges to go deeper. position and page give the rank of every product, which makes the output usable for share-of-search and rank tracking. All six sort orders of the site are supported. One quirk of the site: "Price: low to high" together with a minimum price returns an empty list on Walmart itself, so that combination is collected in best-match order within the price range.
How to track Walmart prices and stock
Schedule the Actor (daily for fast-moving items) with the same search terms, browse URLs or product URLs and compare price, wasPrice, availability and badges (Rollback, Clearance, Reduced price) between runs, joining on usItemId, or let the Actor do the comparison with Only new or changed items (see "Monitor changes on a schedule" below). Product URLs can be passed in bulk in Start URLs; each returns one fully detailed item including every variant's own price and stock.
How to scrape Walmart product reviews
Either turn on Include reviews (reviews for every product found), or paste review-page URLs such as https://www.walmart.com/reviews/product/18901811909 to get reviews only. Max reviews per product caps each product; Sort reviews picks most relevant, newest, most helpful, highest or lowest rating. Walmart lists only reviews that have text, 10 per request; star-only ratings are included in reviewCount and ratingCounts but have nothing to scrape. To collect only fresh reviews, set Only reviews newer than (7 days, 24 hours or a date such as 2026-10-01): reviews are then read newest first and the Actor stops at the first review page that is entirely older, or turn on Only new or changed items to get only reviews that earlier runs have not returned.
Monitor changes on a schedule
Turn on Only new or changed items and the Actor remembers what earlier runs of the same input returned: each run outputs only products that are new in the results or whose price, was price, stock status, star rating or seller changed. Unchanged products are dropped before anything is saved and before any product or review page is requested, so they cost neither events nor Unblocker requests (a monitored search costs one proxy request per 40 products checked). Max items becomes the watched window: the first products of the listing are checked every run (for example 40 = one search page); turn Include sponsored products off so rotating ads do not show up as new products. Save the input as a task and add a Schedule to it in Apify Console (Schedules → Create new, daily). Every output item carries changeType (new or changed), and changed products carry previousValues, e.g. {"price": 24.99, "availability": "IN_STOCK"} for a product that dropped to $19.99 and sold out. With reviews on, only reviews not returned before are output (newest first); to watch the reviews of a product without paying for the product item, monitor its reviews URL (/reviews/product/<id>) or set Only reviews newer than to 1 day. Monitoring key keeps several schedules on the same search separate.
Which store and ZIP code do the prices come from?
Walmart prices and availability can differ by store. The Actor does not select a store: Walmart assigns one to each request, and through the Unblocker proxy that has consistently been its default store (Sacramento, CA, store 3081). Every item carries the store context it was priced for in location, so you can verify it. Choosing a ZIP code is not supported yet.
Does it work without login or a browser?
Yes. Everything comes from public pages as an anonymous visitor sees them, read with plain HTTP requests and Chrome TLS fingerprinting. No account, no cookies, no headless browser, which keeps runs fast (a page typically takes 1-5 seconds through the proxy) and cheap. Member-only prices (Walmart+) and "sign in to see price" offers are not available.
Integrations and API
Use the run in Zapier, Make, n8n, Google Sheets, or call it from Python/Node with the Apify client. See the API tab for ready-made snippets.
Is it legal to scrape Walmart?
This Actor collects only data that Walmart shows publicly to logged-out visitors: product listings, prices, seller business profiles, and customer reviews with their text, rating and the reviewer's nickname as shown (plus the reviewer location when Walmart publishes one). It does not log in and collects no photos, avatars, contact details or hidden reviewer ids; reviewers shown as "anonymous" get no location. Reviewer nicknames and locations, and review texts, can be personal data under GDPR and similar laws: make sure you have a lawful basis for processing them, and do not use them to contact or profile individuals. You are responsible for how you use the data and for complying with Walmart's terms and applicable law.
Support
Found a bug or need a field added? Open an issue in the Issues tab; it is usually answered within a day.