# Walmart Scraper - Product Prices, Stock & Reviews (`wrenfield-data/walmart-product-scraper`) Actor

Scrape Walmart.com products by keyword, category URL, product URL or item ID: price, was-price, unit price, stock, pickup/delivery, seller (Walmart vs marketplace), UPC/GTIN, variants, specs, images, ratings and optional reviews. Fast HTTP, no browser, auto-retries blocked requests.

- **URL**: https://apify.com/wrenfield-data/walmart-product-scraper.md
- **Developed by:** [Wrenfield Data](https://apify.com/wrenfield-data) (community)
- **Categories:** E-commerce, Developer tools
- **Stats:** 3 total users, 3 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.45 / 1,000 product with full details

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Walmart Product Scraper & API - Prices, Stock, Sellers, Reviews

**Scrape Walmart.com products by keyword, category URL, product URL or item ID.** Get **price, was-price, unit price, rating, review count, seller (Walmart or marketplace), stock status, shipping / pickup / delivery dates, images, category breadcrumb, UPC / GTIN, variants, specifications and description**. You can also get **customer reviews** and **local prices and stock for any US ZIP code**.

It works as a Walmart API alternative for price monitoring, MAP and repricing, assortment and Buy Box tracking, product research, catalog enrichment and review analysis. It runs without a browser, so it is fast and cheap.

- ✅ **Reliable**: in our cloud stress tests, **292 of 292 products returned full details** (100%). It reads Walmart's own page data (`__NEXT_DATA__`) and does not use fragile HTML selectors.
- ✅ **Fast**: about **100 fully detailed products in under a minute** at the default settings.
- ✅ **Keywords, categories, products**: you can mix search keywords, `/search`, `/browse` and `/cp` URLs, `/ip/` product URLs and plain item IDs in one run. It handles pagination and removes duplicates automatically.
- ✅ **Local pricing and stock**: enter a ZIP code to get the price, stock, pickup store, aisle and delivery dates that a shopper in that area sees.
- ✅ **Reviews mode**: get up to hundreds of reviews per product, sorted by relevance, most helpful, newest, oldest, or highest/lowest rating.
- ✅ **Pay only for results**: blocked or failed requests are retried for free, and products that fail are never charged.

💸 **$3.50 per 1,000 products with full details**, or **$1.20 per 1,000** listing-only products and **$0.40 per 1,000** reviews. Try it on Apify's free plan ($5 of monthly credit, no credit card). ✅ 16 of 16 public runs succeeded in the last 30 days.

#### Sample output

| Product | Brand | Price | Rating | Reviews |
|---|---|---|---|---|
| Folgers Classic Roast Ground Coff… | Folgers | 12.96 | 4.70 | 78,867 |
| Dios Mio Coffee By Sofia Vergara,… | Dios Mio | 9.86 | 4.50 | 840 |
| Bulletproof Original Medium Roast… | Bulletproof | 17.99 | 4.70 | 3,875 |

<sub>Real rows from the prefilled example run (Oct 19, 2026), 5 of 57+ fields shown. Export as JSON, CSV, Excel or HTML, or read them through the API.</sub>

### What data can you get?

| Field group | Fields |
|---|---|
| Identity | `itemId` (US item ID), `productId`, `primaryItemId`, `title`, `brand`, `url`, `model`, `manufacturerProductId` |
| Price | `price`, `wasPrice`, `listPrice`, `savingsAmount`, `unitPrice` + `unitPriceString` (e.g. "50.0 ¢/oz"), `currency`, `priceRangeMin/Max`, `isRollback`, `isClearance` |
| Rating | `rating`, `reviewCount`, `ratingBreakdown` (1-5 stars) |
| Seller | `sellerName`, `sellerId`, `sellerType` (WALMART / EXTERNAL), `fulfilledByWalmart`, `offerCount` (other sellers) |
| Availability & fulfillment | `availability`, `inStock`, `orderLimit`, plus `shipping`, `pickup` and `delivery` objects with availability, date, label ("Today", "Tomorrow"), price, store / city, **aisle** and low-stock flag |
| Location | `location` - the ZIP, city, state and store the prices and stock refer to |
| Catalog | `categories` (breadcrumb), `categoryUrl`, `upc`, `gtin14`, `variants` (each with item ID, attributes, price, stock, URL, image), `variantAttributes` |
| Content | `image`, `images` (all), `specifications`, `highlights`, `shortDescription`, `description` (plain text), `badges`, `returnPolicy`, `snapEligible` |
| Reviews | `reviewId`, `rating`, `title`, `text`, `date`, `userNickname`, `verifiedPurchase`, `helpfulVotes`, `reviewedVariant`, `sellerName`, `clientResponses`, `media` |

### How to use

1. Add **search keywords** (e.g. `coffee`, `air fryer`), **Walmart URLs** (search, browse/category, `/cp/` department or `/ip/` product pages) and/or **item IDs** (the number at the end of a product URL).
2. Set **max items**. You can also choose a **sort order**, a **price range** and a **ZIP code**.
3. Leave **Include product details** on for the full product data. Turn it off for a cheaper listing-only scrape that returns the search grid fields (title, price, rating, seller, availability, badges).
4. If you need reviews, turn on **Include reviews**.
5. Click **Start**. You can download the results as JSON, CSV or Excel, or get them through the API.

### Input example

```json
{
    "searchKeywords": ["coffee", "air fryer"],
    "startUrls": [
        {"url": "https://www.walmart.com/browse/food/coffee/976759_1086446"},
        {"url": "https://www.walmart.com/ip/Folgers-Classic-Roast-Ground-Coffee-Medium-Roast-25-9-oz-Canister/578550306"}
    ],
    "productIds": ["36174409"],
    "maxItems": 200,
    "maxItemsPerQuery": 100,
    "sort": "best_seller",
    "minPrice": 5,
    "maxPrice": 50,
    "zipCode": "98101",
    "includeDetails": true,
    "includeReviews": false,
    "proxyConfiguration": {"useApifyProxy": true}
}
```

- **Sort options:** `best_match`, `price_low`, `price_high`, `best_seller`, `rating_high`, `new`.
- **Review sort options:** `relevancy`, `helpful`, `submission-desc` (newest), `submission-asc`, `rating-desc`, `rating-asc`.
- Walmart shows about 40 products per page and up to 25 pages (about 1,000 products) per search or category. To get more, split a large category into subcategories or use price ranges.

### Output example

One product row (shortened):

```json
{
    "type": "product",
    "itemId": "578550306",
    "title": "Folgers Classic Roast Ground Coffee, Medium Roast, 25.9 oz Canister",
    "brand": "Folgers",
    "url": "https://www.walmart.com/ip/Folgers-Classic-Roast-Ground-Coffee-Medium-Roast-25-9-oz-Canister/578550306",
    "price": 12.96, "wasPrice": 14.96, "unitPrice": 0.5, "unitPriceString": "50.0 ¢/oz", "currency": "USD", "isRollback": true,
    "rating": 4.7, "reviewCount": 76790,
    "sellerName": "Walmart.com", "sellerType": "WALMART", "fulfilledByWalmart": true, "offerCount": 8,
    "availability": "IN_STOCK", "inStock": true,
    "shipping": {"available": true, "label": "Today", "price": null, "location": "Washington, 20068"},
    "pickup": {"available": true, "label": "Today", "location": "Washington Georgia Ave NW Supercenter", "aisle": "A13"},
    "delivery": {"available": true, "label": "Today", "price": 7.95},
    "location": {"postalCode": "20068", "city": "Washington", "state": "DC", "storeId": "5968"},
    "categories": ["Food", "Coffee", "Folgers Coffee", "All Folgers Coffee"],
    "upc": "025500304076", "gtin14": "00025500304076",
    "variants": [{"itemId": "1198105826", "attributes": {"Size": "25.9 oz", "Pack Size": "6 Pack"}, "price": 75.38, "availability": "IN_STOCK"}],
    "specifications": {"Roast type": "Medium", "Coffee bean origin": "Brazil", "Food form": "Ground"},
    "description": "Contains one (1) 25.9-oz. canister of Folgers Classic Roast ground coffee...",
    "images": ["https://i5.walmartimages.com/seo/Folgers-Classic-Roast-....jpeg"],
    "detailsScraped": true,
    "source": {"type": "product", "input": "578550306"},
    "scrapedAt": "2026-10-08T09:40:12Z"
}
```

One review row:

```json
{"type": "review", "itemId": "10450114", "productTitle": "Great Value Whole Vitamin D Milk, Gallon", "reviewId": "443095987", "rating": 1, "title": null, "text": "one of the milk gallon is leaking", "date": "2026-10-05", "userNickname": "MehJabeen", "verifiedPurchase": true, "helpfulVotes": 0, "sellerName": "Walmart.com"}
```

Each row has a `type` (`product` or `review`). Use the dataset views **Overview**, **Product details** and **Reviews**, or filter on `type`. A run summary is saved to the key-value store as `SUMMARY`. It includes the success rate, the number of products that were not found or failed, proxy statistics and the store your ZIP code resolved to.

### Local prices and stock (ZIP code)

Walmart prices, stock and fulfillment options depend on the shopper's location. If you set `zipCode`, every session is localized the same way the walmart.com location picker does it. Walmart then assigns the **nearest store** to that ZIP, and every row's `location` shows which ZIP, city and store were used. Choosing a specific store ID is not supported. To check another store, use a ZIP code near it. Without a ZIP, Walmart picks a location from the proxy IP.

### Reliability - how it works

Walmart uses strong bot protection: PerimeterX "Robot or human?" challenges, Akamai and a rate-limit waiting room. This Actor:

1. **Uses real browser fingerprints without a browser.** Its HTTP client has the TLS and HTTP/2 fingerprints of current Chrome and Safari versions. It learns during each run which fingerprints Walmart accepts for each proxy type and page type, and uses those more.
2. **Starts on cheap datacenter proxies and falls back to residential.** Blocked requests are retried on US residential IPs with a fresh session. If datacenter IPs keep getting blocked for one page type, a circuit breaker sends that page type to residential for the rest of the run.
3. **Rotates sessions** and retries with exponential backoff and jitter. A blocked, rate-limited or empty response never ends up in your data.
4. **Isolates errors per item.** A product that fails never stops the run. If its product page can't be loaded, you still get the search-grid data (`detailsScraped: false`). Products that no longer exist are reported in the summary.

**Measured on the Apify platform (October 2026)** with the default proxy settings:

| Test | Result |
|---|---|
| 3 stress runs, ~100 products each (search keywords, category URLs, `/cp/` departments, item IDs) | **292/292 products with full details**, ~100 products in 40-60 s |
| ZIP 98101 + 25 newest reviews per product | 4/4 products localized to Seattle, 95 reviews, 24 s |
| Listing-only, 2 keywords, best sellers | 120 rows in 53 s |

### Pricing

This Actor uses **pay-per-event** pricing. You pay for each product with full details, each listing-only product, each review, and a small run-start fee.

| Event | Price |
|---|---|
| Product with full details (`product-result`) | **$3.50 per 1,000 products** ($0.0035 per product) |
| Listing-only product (`listing-result`) | **$1.20 per 1,000 products** ($0.0012 per product) |
| Review (`review-result`) | $0.0004 per review |
| Actor start (`actor-start`) | $0.002 per run |

Listing-only applies when product details are off, or for the rare product whose page could not be loaded (cheaper rate). Retries, blocked requests, failed products and products that don't exist are **free**. Platform usage (compute) is included. Set **Maximum cost per run** in the run options to cap your spend – the Actor stops cleanly at that limit and keeps everything scraped so far.

### Related tools

Retail price monitoring across Walmart, Google Shopping sellers, Home Depot, Lowe's and Shopify brands.

- [Google Shopping Price Comparison](https://apify.com/wrenfield-data/google-shopping-price-comparison): compare seller prices for any product or UPC
- [Home Depot & Lowe's Scraper](https://apify.com/wrenfield-data/home-depot-lowes-scraper): prices, store stock and aisle locations
- [Shopify Store Scraper & Price Monitor](https://apify.com/wrenfield-data/shopify-store-scraper): full catalogs and price/stock change alerts for any Shopify store

All of these are maintained by the same developer and export flat JSON, CSV or Excel, so you can feed one tool's dataset into the next.

### FAQ

**Is there an official Walmart API?**
Walmart offers APIs for its own sellers and affiliate partners, but not a public product data API for everyone. This Actor gives you the data shoppers see on walmart.com as structured JSON or CSV. You can use it through the Apify API, schedules, webhooks and integrations.

**Why does my Walmart scraper get "Robot or human?" or blocked pages?**
Walmart blocks plain HTTP clients by their TLS fingerprint, IP reputation and request patterns. This Actor uses browser-grade fingerprints, rotates sessions and IPs, and automatically retries blocked requests on residential IPs. Blocked pages are retried and never returned as data.

**How much does it cost to scrape 1,000 Walmart products?**
You pay the `product-result` event price per detailed product (see the Pricing tab). Proxy and compute costs are included. Listing-only mode is cheaper. Use it when you only need the price, rating and stock shown in the search results.

**Can I monitor Walmart prices daily?**
Yes. Save your item IDs or search URLs as a task, schedule it daily, and compare `price`, `wasPrice`, `inStock` and `sellerName` between runs. Add a ZIP code to track local prices.

**Can I get marketplace (third-party) seller info?**
Yes. `sellerName`, `sellerId` and `sellerType` show the seller that holds the Buy Box, and `offerCount` shows how many other offers exist.

**How do I find a Walmart item ID?**
It is the number at the end of a product URL. For example, `https://www.walmart.com/ip/.../578550306` has the item ID `578550306`. You can paste the full URL or just the ID.

**Does it work for Walmart Canada, Mexico or other countries?**
No. It supports walmart.com (US) only.

**Can I use it from Python, Make, Zapier, n8n or an AI agent?**
Yes. You can call the Actor through the Apify API, the Python or JavaScript client, the Apify MCP server or any Apify integration, then read the dataset items.

**Is scraping Walmart legal?**
This Actor only collects data that anyone can see on walmart.com without logging in. Review rows include the public nickname the reviewer chose. Walmart's Terms of Use restrict automated access, and laws differ by country and use case. Make sure your use complies with them, and handle any personal data according to GDPR, CCPA and similar laws. If you're unsure, ask a lawyer.

# Actor input Schema

## `searchKeywords` (type: `array`):

Keywords to search on Walmart.com, one per line (e.g. <code>coffee</code>, <code>air fryer</code>). Each keyword returns up to <i>Max products per search/category</i> products.

## `startUrls` (type: `array`):

Walmart URLs: category pages (<code>/browse/...</code>, <code>/cp/...</code>), search result pages with filters (<code>/search?q=...</code>), brand/shop pages, or product pages (<code>/ip/...</code>).

## `productIds` (type: `array`):

Walmart item IDs (the number at the end of a product URL, e.g. <code>578550306</code>) or full <code>/ip/</code> product URLs, one per line.

## `maxItems` (type: `integer`):

Maximum number of product rows for the whole run (reviews are not counted). Duplicate products across keywords/categories are skipped automatically.

## `maxItemsPerQuery` (type: `integer`):

How many products to take from each keyword or category URL. Walmart shows about 40 products per page and up to 25 pages (about 1,000 products) per search.

## `includeDetails` (type: `boolean`):

Open each product page for brand, UPC/GTIN, specifications, variants, description, all images, seller details and pickup/delivery options. Turn off for a faster, cheaper listing-only scrape (title, price, rating, seller, availability from the search grid).

## `sort` (type: `string`):

Sort order for keyword searches and category pages.

## `minPrice` (type: `integer`):

Only products at or above this price (search and category pages).

## `maxPrice` (type: `integer`):

Only products at or below this price (search and category pages).

## `zipCode` (type: `string`):

Optional 5-digit US ZIP code. Prices, stock, delivery dates and the pickup store (Walmart picks the nearest store) are returned for this ZIP. Every product row includes the <code>location</code> Walmart actually used, so you can verify it. Leave empty for Walmart's default location for the proxy IP.

## `includeReviews` (type: `boolean`):

Also scrape customer reviews for every product (output rows with <code>type = review</code>).

## `maxReviewsPerProduct` (type: `integer`):

Reviews are loaded 10 per page.

## `reviewsSort` (type: `string`):

Order of the reviews.

## `proxyConfiguration` (type: `object`):

Defaults to Apify datacenter proxy (cheapest) with automatic residential fallback when Walmart blocks it. Choose the RESIDENTIAL group to always use US residential IPs.

## `residentialFallback` (type: `boolean`):

Retry blocked requests on US residential IPs with a fresh browser session. Recommended - this is what keeps the success rate above 95%.

## `maxConcurrency` (type: `integer`):

Parallel requests.

## `maxRetries` (type: `integer`):

Each blocked page is retried with a new IP and browser fingerprint, with backoff.

## Actor input object example

```json
{
  "searchKeywords": [
    "coffee"
  ],
  "startUrls": [
    {
      "url": "https://www.walmart.com/browse/food/coffee/976759_1086446"
    }
  ],
  "productIds": [
    "578550306"
  ],
  "maxItems": 5,
  "maxItemsPerQuery": 40,
  "includeDetails": true,
  "sort": "best_match",
  "includeReviews": false,
  "maxReviewsPerProduct": 20,
  "reviewsSort": "relevancy",
  "proxyConfiguration": {
    "useApifyProxy": true
  },
  "residentialFallback": true,
  "maxConcurrency": 10,
  "maxRetries": 8
}
```

# Actor output Schema

## `products` (type: `string`):

No description

## `reviews` (type: `string`):

No description

## `allRows` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchKeywords": [
        "coffee"
    ],
    "startUrls": [
        {
            "url": "https://www.walmart.com/browse/food/coffee/976759_1086446"
        }
    ],
    "productIds": [
        "578550306"
    ],
    "maxItems": 5,
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("wrenfield-data/walmart-product-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "searchKeywords": ["coffee"],
    "startUrls": [{ "url": "https://www.walmart.com/browse/food/coffee/976759_1086446" }],
    "productIds": ["578550306"],
    "maxItems": 5,
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("wrenfield-data/walmart-product-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchKeywords": [
    "coffee"
  ],
  "startUrls": [
    {
      "url": "https://www.walmart.com/browse/food/coffee/976759_1086446"
    }
  ],
  "productIds": [
    "578550306"
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call wrenfield-data/walmart-product-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,wrenfield-data/walmart-product-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/ei2u5I7ctXORI4eq8/builds/WloCxXcMyb02D9xdM/openapi.json
