# Walmart Scraper - Products, Prices, Stock & Reviews (`automly/walmart-scraper`) Actor

Scrape Walmart products by keyword, category or search URL, product URL or item ID: price, was price, unit price, stock, seller, fulfillment, variants, specs, images and customer reviews. No Walmart API key or login.

- **URL**: https://apify.com/automly/walmart-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.99 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Walmart Scraper - Export Walmart Products, Prices, Stock & Reviews

**Walmart Scraper** extracts **products, prices, stock, sellers, variants and customer reviews** from Walmart.com as JSON, CSV, Excel, XML, or an API feed. Search by **keyword, Walmart search or category URL, product URL, item ID, or reviews URL**, then narrow results with Walmart's own **sort options, price range and facet filters** such as brand or customer rating. No Walmart account, cookies, or API key is needed.

This Actor is an independent tool, not affiliated with, endorsed by, or sponsored by Walmart. Its filters and output fields were last verified against live Walmart pages on 12 September 2026.

### What does Walmart Scraper do?

It turns Walmart search, category, product and review pages into flat rows: one `product` row per item and, optionally, one `review` row per customer review, joined on `usItemId`. Three things it does that most Walmart scrapers do not:

- **Keyword to full product data in one run.** Mix keywords, search or category URLs, product URLs, item IDs and review URLs in one input. With **Fetch full product details** on, every search hit is enriched from its product page; with **Scrape customer reviews** on, its reviews follow as separate rows.
- **Every variant with its own price and stock.** Each size, color or pack combination comes back inside the product row with its own `usItemId`, price and availability, at no extra charge.
- **Reviews as data.** Rating, title, text, ISO date, verified-purchase and incentivized flags, helpful votes, photos and seller response, one row per review.

Every product row also records the store it was priced for (`storeId`, `zipCode`), because Walmart prices and stock differ by store. On detail rows, price, stock and store all come from the product page, so they always belong together.

### Features

- Scrape Walmart products by keyword search
- Scrape Walmart search results with sort, price range and facet filters
- Scrape a Walmart category or browse page into a product list
- Get Walmart product details by product URL or item ID
- Get Walmart price, was price, rollback savings and unit price
- Check Walmart stock, pickup and delivery availability with delivery dates
- Get Walmart demand signals: units bought since yesterday, shoppers with the item in their cart, units left and best-seller status
- Get Walmart product variants with per-variant price and stock
- Scrape Walmart product specifications, descriptions and images
- Get Walmart seller name, seller ID, seller rating and Walmart vs. marketplace offers
- Scrape Walmart customer reviews with rating, text, date and verified purchase
- Get Walmart UPC, brand, model number and category breadcrumbs
- Keep or drop sponsored products, flagged with `isSponsored`
- Track Walmart price drops on a schedule with a `scrapedAt` timestamp per row
- Export Walmart product data to JSON, CSV or Excel
- Use it as a Walmart API alternative with no API key or daily call limit

### Use cases

- **Price monitoring and repricing:** daily `price`, `wasPrice` and `savings` per `usItemId`, with the store each price came from.
- **Stock and fulfillment checks:** `inStock`, shipping, pickup and delivery options with delivery dates and order limits.
- **Marketplace seller intelligence:** seller name, ID, rating and storefront, Walmart vs. third-party, sponsored placement.
- **Catalog enrichment:** UPC, brand, model, specifications, images, variants and category path by item ID.
- **Review mining:** review text, rating, date, verified-purchase flag and helpful votes across a whole search or category.
- **Deal research:** rollback, clearance and best-seller badges with `sortBy: price_low` and a price range.

### How to use the Walmart Scraper

1. Click **Try for free** to open the Actor in Apify Console.
2. Enter keywords in **Search keywords**, such as `laptop` or `organic whole milk`, or paste Walmart URLs or item IDs.
3. Pick a **Sort by** order and, if needed, a price range and facet filters such as `brand:HP`.
4. Set **Maximum products** and **Maximum pages per search**.
5. Turn on **Fetch full product details** and **Scrape customer reviews** if you want them.
6. Click **Start**, then download the data from the **Dataset** tab or fetch it from the API.

### Input parameters

| Parameter | Type | Description |
|---|---|---|
| `searchTerms` | string\[] | Keywords, one search each, e.g. `["laptop", "air fryer"]` |
| `startUrls` | array | Walmart search, category (`/browse/`, `/cp/`), product (`/ip/`) or reviews (`/reviews/product/`) URLs |
| `itemIds` | string\[] | Walmart item IDs, the number at the end of a product URL |
| `maxResults` | integer | Cap on unique product rows across all inputs (default 100); product URLs and item IDs come first, searches fill the rest |
| `sortBy` | string | `best_match`, `price_low`, `price_high`, `best_seller`, `rating_high`, `new` |
| `minPrice`, `maxPrice` | integer | Price range in dollars |
| `facets` | string\[] | Walmart facets as `type:value`, e.g. `brand:HP`, `customer_rating:4 - 5 Stars`; the encoded form from a Walmart URL also works |
| `maxPagesPerSearch` | integer | Pages of 40 products per search (default 10, max 25) |
| `includeSponsored` | boolean | Keep sponsored tiles, flagged with `isSponsored` |
| `includeDetails` | boolean | Fetch each product page for the full detail fields |
| `includeReviews` | boolean | Add one `review` row per customer review |
| `maxReviewsPerProduct`, `reviewsSort` | integer, string | Default 10 reviews; `relevancy`, `helpful`, `submission-desc`, `rating-desc` |
| `proxyConfiguration` | object | Apify proxy settings; keep the US residential default |

`includeRawData` and `maxConcurrency` round out the Input tab. Sort, price and facet filters also apply to pasted search or category URLs that do not already set them.

### Output example

A real product row from a `laptop` search with details enabled, trimmed to the common fields:

```json
{
  "type": "product",
  "usItemId": "18638703162",
  "name": "HP 15.6 inch HD Windows Laptop Intel Processor N250 4GB 128GB UFS Moonlight Blue",
  "url": "https://www.walmart.com/ip/HP-15-6-N250-4-128-Blue/18638703162",
  "brand": "HP",
  "model": "15-fd0092wm",
  "upc": "199764294609",
  "price": 229,
  "wasPrice": 299,
  "savings": 70,
  "inStock": true,
  "averageRating": 4.1,
  "numberOfReviews": 535,
  "ratingCounts": {"1": 78, "2": 24, "3": 32, "4": 48, "5": 353},
  "sellerName": "Walmart.com",
  "isWalmartSeller": true,
  "fulfillmentType": "FC",
  "fulfillmentOptions": [
    {"type": "SHIPPING", "availabilityStatus": "IN_STOCK", "deliveryDate": "2026-09-12T21:59:00.000Z", "badge": "Today", "free": true}
  ],
  "returnPolicy": {"returnable": true, "freeReturns": true, "returnWindowDays": 30},
  "badges": ["SOCIAL_PROOF_PURCHASES_FLAG", "ROLLBACK", "BESTSELLER"],
  "categoryPath": "Electronics/Computers, Laptops and Tablets/Laptops/Laptops by Operating System/Windows OS Laptops/Windows 11 Laptops",
  "variants": [
    {"usItemId": "18638703162", "attributes": {"Actual Color": "Moonlight blue"}, "price": 229, "availabilityStatus": "IN_STOCK"},
    {"usItemId": "18634262264", "attributes": {"Actual Color": "Natural silver"}, "price": 229, "availabilityStatus": "IN_STOCK"}
  ],
  "isSponsored": false,
  "storeId": "585",
  "zipCode": "29730",
  "storeCity": "Rock Hill",
  "sourceQuery": "laptop",
  "searchRank": 2,
  "scrapedAt": "2026-09-12T17:49:21.020032+00:00"
}
```

Rows also carry `productId`, `images`, `description`, `specifications`, `listPrice`, `unitPrice`, `orderLimit`, `topPositiveReview`, `topNegativeReview` and, for marketplace sellers, `sellerAverageRating` and `sellerStoreFrontUrl`.

Product rows also carry the demand badges Walmart shows, as numbers: `boughtSinceYesterday`, `inCartsCount`, `stockLeft` and `isBestSeller`. Walmart rounds the counts down into buckets such as 100+ or 10K+, so read them as lower bounds. The counts are empty when Walmart shows no badge, which is the case for most products. `stockLeft` comes from the "Only N left" badge on search results, so a detail row keeps it only when its product page was priced by the same store.

A review row for the same item:

```json
{
  "type": "review",
  "usItemId": "18638703162",
  "reviewId": "426909885",
  "rating": 5,
  "title": "Buy This Computer",
  "text": "This laptop is light to carry and has a streamlined display thanks to Windows 11. The battery power is plentiful. I cannot think of anything I don't like about this laptop, or the experience of purchasing from Walmart.",
  "date": "2026-05-28",
  "userNickname": "anonymous",
  "verifiedPurchase": true,
  "incentivized": false,
  "positiveFeedback": 11,
  "sellerResponse": null,
  "scrapedAt": "2026-09-12T17:49:23.017488+00:00"
}
```

### How much does it cost?

Pay per event, no subscription. Apify platform usage (compute, proxy, storage) is included in the event prices.

| Event | Charged for | Price |
|---|---|---|
| Actor start | Once per run | $0.001 |
| Search result row | A product row from a search or category page | $0.002 |
| Product detail row | A product row whose product page was fetched | $0.004 |
| Review row | One customer review | $0.0015 |

A product row is charged once: as a detail row when its product page was fetched (`includeDetails`, product URLs and item IDs), otherwise as a search row. A product page that fails after retries leaves the search row with a `detailError` field at the search price. Failed rows and empty pages cost nothing.

- **1,000 search rows** without details: 1,000 × $0.002 + $0.001 = **$2.00**.
- **200 products with details and 10 reviews each:** 200 × $0.004 + 2,000 × $0.0015 + $0.001 = **$3.80**.

A measured run on Apify with US residential proxies at 1 GB memory returned 6 products with full details plus 18 reviews in 42 seconds, about $0.05 at these prices.

### Limitations

- **You cannot choose a store or ZIP code.** Walmart assigns the store from the proxy exit's location and ignores store parameters in the URL. Because each concurrent session has its own exit, rows within one run can be priced against different stores; in the measured run, six detail rows came from four stores. Every product row records the store it was priced for (`storeId` and `zipCode`; detail rows add `storeCity` and `storeState`), so you can filter by store after the run.
- **Only Walmart's own result window per search.** Walmart serves 40 products per page. For a broad keyword such as `laptop` it returned empty pages after page 10, about 400 products. Category pages report up to 25 pages. Use more keywords, facets or price ranges to cover more.
- **Not supported:** seller storefront pages, brand pages, deals pages and walmart.ca. Such URLs are logged and skipped.
- Reviews are the ones Walmart lists with text, 10 per page, with no star-rating filter.
- Missing values come back as `null` or an empty array; the Actor does not invent data. With details or reviews on, dataset order can differ from search order, so sort by `searchRank` and filter on `type`.
- Scrape public information responsibly and make sure your use complies with applicable laws, contracts, privacy rules, and Walmart's terms.

### FAQ

#### Do I need a Walmart API key or account?

No. The Actor reads public Walmart pages, so there is no login, cookie, or API key, and no daily call limit.

#### Can I get prices and stock for a specific Walmart store or ZIP code?

Not in this version. Walmart picks the store from the proxy exit's location and ignores store parameters in the URL. Each product row carries the `storeId` and `zipCode` it was priced for, so you can filter on the store you got.

#### What is the difference between a search row and a product detail row?

A search row comes from a results page (40 per request) with price, was price, rating, seller, fulfillment type and badges. With `includeDetails`, the product page adds brand, UPC, model, descriptions, specifications, images, seller rating and storefront, fulfillment options with delivery dates, return policy, rating breakdown, top positive and negative review, and every variant with its own price and stock.

#### Does it return product variants?

Yes. Sizes, colors and pack counts come back under `variants`, each with its own `usItemId`, price, availability, URL and image, at no extra charge per variant.

#### Can I scrape Walmart reviews?

Yes. Turn on `includeReviews`, or paste a `/reviews/product/` URL, and each review becomes its own row joined to the product on `usItemId`, sorted by relevance, helpfulness, newest or highest rating.

#### How many products can I get from one keyword?

It depends on the query. Walmart shows 40 products per page. For a broad keyword such as `laptop` it returned empty pages after page 10, about 400 products, and category pages report up to 25 pages. The Actor stops at the first empty page, so split large searches with facets or price ranges.

#### Are sponsored products included?

Not by default; sponsored tiles duplicate organic results and are dropped. Set `includeSponsored` to keep them, flagged with `isSponsored: true` and deduplicated against organic rows.

#### Does it estimate Walmart sales?

Not directly. Walmart publishes no sales rank and no sold count. The Actor returns the demand badges Walmart does show, as numbers you can build estimates on: units bought since yesterday, shoppers with the item in their cart, units left and best-seller status. The counts are Walmart's rounded buckets, so treat them as lower bounds.

#### Is it legal to scrape Walmart?

The Ninth Circuit held that accessing publicly available web data does not violate the Computer Fraud and Abuse Act (hiQ Labs v. LinkedIn, 2022). This Actor only reads public pages and never logs in. That is not legal advice: review Walmart's terms and the rules that apply to your use, especially for personal data in reviews.

#### Which proxies should I use?

US residential, the default and the configuration the Actor is tested with. Walmart rejects requests that do not come from a warm, browser-like session. When that happens, the Actor retries the request on a fresh proxy session, up to three per page.

### Related actors

- [Zillow Scraper](https://apify.com/automly/zillow-scraper) - homes for sale, rentals, sold listings and agent data from Zillow
- [eBay Scraper](https://apify.com/automly/ebay-scraper) - eBay search listings and item details across eight marketplaces

# Actor input Schema

## `searchTerms` (type: `array`):

Keywords to search on Walmart, one search per keyword, for example laptop or organic whole milk.

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

Walmart search, category (/browse/ or /cp/), product (/ip/) or reviews (/reviews/product/) URLs, pasted one per line. Filters below are added to search and category URLs that do not set them.

## `itemIds` (type: `array`):

Walmart item IDs (the number at the end of a product URL, for example 19295554951). Each returns a product detail row.

## `maxResults` (type: `integer`):

Maximum number of unique product rows across all inputs. Review rows do not count. Product URLs and item IDs are scraped first; searches fill the rest.

## `sortBy` (type: `string`):

Order of search results, as on Walmart's sort menu.

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

Only return products priced at or above this amount.

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

Only return products priced at or below this amount.

## `facets` (type: `array`):

Walmart filter facets as type:value, for example brand:HP or customer\_rating:4 - 5 Stars. The encoded form from a filtered Walmart URL (brand%3AHP) also works.

## `maxPagesPerSearch` (type: `integer`):

Walmart shows 40 products per page and stops serving results after roughly 10 to 25 pages depending on the search.

## `includeSponsored` (type: `boolean`):

Keep sponsored (advertised) tiles from search pages. They are flagged with isSponsored and deduplicated against organic results.

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

Open each product page for brand, UPC, model, descriptions, specifications, images, seller rating, fulfillment options, return policy, rating breakdown and every variant with its own price and stock. Charged as a product detail row instead of a search row.

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

Add one review row per customer review (rating, title, text, date, verified purchase, helpful votes, photos) for every product, joined on usItemId.

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

Walmart serves 10 reviews per page; only reviews with text are listed.

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

Order in which Walmart lists reviews.

## `includeRawData` (type: `boolean`):

Add Walmart's raw search tile, product, and review objects to each row. Rows become much larger.

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

Number of product and review pages fetched at the same time.

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

Keep Apify residential proxies in the United States; that is the configuration this Actor is tested with. Walmart rejects requests without a warm browser-like session, and the Actor retries rejected requests on new proxy sessions.

## Actor input object example

```json
{
  "searchTerms": [
    "laptop"
  ],
  "maxResults": 100,
  "sortBy": "best_match",
  "maxPagesPerSearch": 10,
  "includeSponsored": false,
  "includeDetails": false,
  "includeReviews": false,
  "maxReviewsPerProduct": 10,
  "reviewsSort": "relevancy",
  "includeRawData": false,
  "maxConcurrency": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

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

No description

## `overview` (type: `string`):

No description

## `reviews` (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 = {
    "searchTerms": [
        "laptop"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("automly/walmart-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 = {
    "searchTerms": ["laptop"],
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

# Run the Actor and wait for it to finish
run = client.actor("automly/walmart-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 '{
  "searchTerms": [
    "laptop"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}' |
apify call automly/walmart-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,automly/walmart-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/xaJN2UihCqY353ZkE/builds/B2dbx7PGMqkg3sVlG/openapi.json
