# Walmart Scraper (`automly/walmart-scraper`) Actor

Scrape Walmart products by keyword, category, search link, product link or item ID: price, was price, unit price, stock, seller, fulfillment, variants, specs, images and reviews. No login. Export to CSV, JSON or Excel, schedule runs or use the API.

- **URL**: https://apify.com/automly/walmart-scraper.md
- **Developed by:** [Automly](https://apify.com/automly) (community)
- **Categories:** E-commerce
- **Features:** Limited permissions
- **Stats:** 21 total users, 7 monthly users, 93.6% 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?

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 Scraper - Products, Prices, Stock & Reviews

### What is Walmart Scraper?

**Walmart Scraper** is a tool that lets you **scrape products, prices, stock, sellers, variants and customer reviews from Walmart.com**. Add a keyword, a Walmart search or category link, product links or item IDs, narrow results with Walmart's own sort options, price range and filters such as brand or customer rating, click **Start**, and download the data as Excel, CSV or JSON.

- 🛒 **Keyword to full product data in one run:** search results, full product details and customer reviews together
- 🎨 **Every variant with its own price and stock:** each size, color or pack, at no extra charge
- 📍 **Store on every row:** each product records the Walmart store it was priced for, because prices and stock differ by store
- 🔓 **No login:** no Walmart account, cookies or API key needed
- 💸 **Free to try:** the $5 of free usage every Apify account gets each month covers up to about 1,000 products or reviews

Filters and output fields were last verified against live Walmart pages on 12 September 2026.

### What can Walmart Scraper do?

- 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
- Track Walmart price drops on a schedule, with a `scrapedAt` timestamp on every row
- Use it as a Walmart API alternative with no API key or daily call limit

### What data can you extract from Walmart?

| | | |
|---|---|---|
| 🔖 Item ID, name, brand, model, UPC | 💲 Price, was price, savings, unit price | 📦 In stock, units left, order limit |
| 🚚 Shipping, pickup and delivery dates | ↩️ Return policy | 🏪 Seller name, ID, rating, storefront |
| ⭐ Rating and review count | 📊 Rating breakdown (1 to 5 stars) | 🔥 Bought since yesterday, in carts, best seller |
| 🎨 Variants with price and stock | 📋 Specifications and description | 🖼️ Images |
| 🗂️ Category path | 🏷️ Badges (rollback, best seller) | 📢 Sponsored flag |
| 💬 Reviews: rating, title, text, date | ✅ Verified purchase, incentivized | 📍 Store ID, ZIP code and city |

### How to scrape Walmart products

1. [Create a free Apify account](https://console.apify.com/sign-up).
2. Open **Walmart Scraper**.
3. Enter keywords in **Search keywords**, such as `laptop` or `organic whole milk`, or paste Walmart links or item IDs.
4. Pick a **Sort by** order and any filters, set **Maximum products**, and turn on **Fetch full product details** and **Scrape customer reviews** if you want them, then click **Start**.
5. When the run finishes, download the data as Excel, CSV, JSON or XML, or fetch it from the API.

### How much does it cost to scrape Walmart products?

You pay per row in the dataset: a product row or a customer review row. The price gets lower on paid Apify plans:

| Apify plan | Products or reviews per 1,000 |
|---|---|
| Free | **$4.55** |
| Starter (Bronze) | **$4.00** |
| Scale (Silver) | **$3.00** |
| Business (Gold) and higher | **$0.99** |

Each run also has a tiny start fee. The Apify platform usage of the run is paid separately, on top of the row price. Failed rows and empty pages cost nothing.

- **1,000 products from a search** cost $4.55 on the Free plan and $0.99 on Business.
- **200 products with details and 10 reviews each** (2,200 rows) cost about $10.01 on the Free plan.

Every Apify account gets **$5 of free usage each month**, enough for up to about 1,000 products or reviews. **Maximum products** keeps a run's cost under control, and you can also set a maximum cost per run. See the **Pricing** tab for details.

### ⬇️ Input

![Walmart Scraper input form with the keyword "air fryer" and 10 products](https://api.apify.com/v2/key-value-stores/XkVmNeTHPecv3esXd/records/walmart-scraper-input.png)

| Setting | What it does |
|---|---|
| **Search keywords** | Keywords, one search each, like `laptop` or `air fryer` |
| **Walmart URLs** | Walmart search, category (`/browse/`, `/cp/`), product or reviews (`/reviews/product/`) links |
| **Walmart item IDs** | The number at the end of a product link, like `19295554951`. Each gives a product detail row |
| **Maximum products** | Unique product rows across all inputs (default 100, up to 10,000). Review rows do not count. Product links and item IDs come first, searches fill the rest |
| **Sort by** | Best match, price low to high, price high to low, best seller, highest rating or newest |
| **Minimum price ($)** / **Maximum price ($)** | Price range in dollars |
| **Facet filters** | Walmart filters as `type:value`, like `brand:HP` or `customer_rating:4 - 5 Stars`; the encoded form from a filtered Walmart link also works |
| **Maximum pages per search** | How many result pages to read per search (default 10, up to 25) |
| **Include sponsored products** | Keep sponsored products, flagged with `isSponsored` |
| **Fetch full product details** | Add brand, UPC, model, descriptions, specifications, images, seller rating, fulfillment options, return policy, rating breakdown and every variant |
| **Scrape customer reviews** | Add one review row per customer review |
| **Maximum reviews per product** / **Reviews sort** | Default 10 reviews, up to 1,000; sorted by relevance, most helpful, newest or highest rating |
| **Include raw Walmart data** | Add Walmart's original product and review data to each row. Rows become much larger |
| **Speed** | Higher is faster. The default works for most runs |

Connection settings - the default works for most runs.

Sort, price and facet filters also apply to pasted search or category links that do not already set them.

Example: the 200 cheapest HP laptops rated 4 stars and up, with full details.

```json
{
  "searchTerms": ["laptop"],
  "sortBy": "price_low",
  "facets": ["brand:HP", "customer_rating:4 - 5 Stars"],
  "maxResults": 200,
  "includeDetails": true
}
```

Example: details and 50 newest reviews for two item IDs.

```json
{
  "itemIds": ["18638703162", "19295554951"],
  "includeReviews": true,
  "maxReviewsPerProduct": 50,
  "reviewsSort": "submission-desc"
}
```

### ⬆️ Output

![Walmart Scraper results table: item ID, product, price, was price, savings, availability, rating, reviews, seller and fulfillment](https://api.apify.com/v2/key-value-stores/XkVmNeTHPecv3esXd/records/walmart-scraper-output.png)

You get one `product` row per item and, optionally, one `review` row per customer review, joined on `usItemId`. A real product row from a `laptop` search with details on, 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",
  "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 the product `url`, `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` is the "Only N left" badge Walmart shows in search results, so a detail row keeps it only when it was priced for 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"
}
```

Missing values come back as `null` or an empty array; nothing is made up. With details or reviews on, dataset order can differ from search order, so sort by `searchRank` and filter on `type`. The **Overview**, **Details** and **Reviews** tabs show the most useful columns as tables.

### How can I use Walmart data?

- **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 **Sort by** price low to high and a price range

### What are the limits?

- **You cannot choose a store or ZIP code.** Walmart assigns the store itself and ignores store settings in the link, so rows within one run can be priced for different stores; in one 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.
- **Walmart shows a limited number of results per search.** For a broad keyword such as `laptop`, results ran out after page 10, about 400 products. Category pages can go 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 links are named in the log and skipped.
- **Reviews** are the ones Walmart lists with text, with no star-rating filter.

### Scrape more Walmart and e-commerce data

| Actor | What it gets |
|---|---|
| [Walmart Reviews Scraper - Ratings, Text & Verified Buyers](https://apify.com/automly/walmart-reviews-scraper) | Walmart customer reviews by product link, item ID, keyword or category |
| [Amazon Scraper - Product Prices, BSR & Sales Estimates](https://apify.com/automly/amazon-products-scraper---fast-efficient-with-sales-data) | Amazon products with Best Sellers Rank and monthly sales estimates in 20 stores |
| [Target Scraper - Target.com Products, Prices & Stock](https://apify.com/automly/target-com-scraper) | Target.com products: prices, availability, ratings, specs and promotions |
| [eBay Scraper - Listings, Prices, Shipping & Sellers](https://apify.com/automly/ebay-scraper) | eBay listings and item details across 8 marketplaces |
| [Shopify Scraper - Products, Prices, Variants & Stock](https://apify.com/automly/shopify-products-scraper) | Any public Shopify store's product catalog |

### 🤖 Use with AI agents (MCP)

This actor works as a tool for AI agents. Connect any MCP-compatible AI assistant or agent to the Apify MCP server at [mcp.apify.com](https://mcp.apify.com) (sign in with your Apify account), and it can find this actor, fill in the input and read the results by itself. Ask in plain words, for example *"Get prices and ratings for the top laptops on Walmart"*, and the agent runs `automly/walmart-scraper` with an input like `{"searchTerms": ["laptop"], "maxResults": 40}`. Every input and output field has a plain description, so the agent knows what to type and what each column means. Agent runs cost the same as runs you start yourself.

### ❓FAQ

#### How much does it cost to scrape Walmart?

$4.55 per 1,000 products or reviews on the Free plan, down to $0.99 on Business, plus the run's platform usage. See [How much does it cost to scrape Walmart products?](#how-much-does-it-cost-to-scrape-walmart-products) above.

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

No. There is no login, cookie or API key, and no daily call limit. You only need a free Apify account.

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

Not in this version. Walmart picks the store itself and ignores store settings in the link. 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 has price, was price, rating, seller, fulfillment type and badges. With **Fetch full product details** on, a row 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 **Scrape customer reviews**, or paste a `/reviews/product/` link, and each review becomes its own row joined to the product on `usItemId`, sorted by relevance, helpfulness, newest or highest rating. For reviews only, with more filters, use [Walmart Reviews Scraper](https://apify.com/automly/walmart-reviews-scraper).

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

It depends on the query. For a broad keyword such as `laptop`, Walmart showed about 400 products, and category pages can go up to 25 pages. The run stops when results run out, so split large searches with facets or price ranges.

#### Are sponsored products included?

Not by default; sponsored products repeat organic results and are dropped. Turn on **Include sponsored products** to keep them, flagged with `isSponsored: true` and without duplicates of organic rows.

#### Does it estimate Walmart sales?

Not directly. Walmart publishes no sales rank and no sold count. You get 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.

#### Can I connect Walmart Scraper to other tools or AI agents?

Yes. Start runs and download results with the Apify API or the Python and JavaScript clients, send results to Make, Zapier, n8n, Google Sheets or Slack with Apify integrations and webhooks. AI assistants and agents can run it through the Apify MCP server, see the **Use with AI agents (MCP)** section above.

#### Is it legal to scrape Walmart?

Walmart Scraper only collects public product data that any shopper can see, and it never logs in. The Ninth Circuit held that accessing publicly available web data does not violate the Computer Fraud and Abuse Act (hiQ Labs v. LinkedIn, 2022). Reviews can still contain personal data, which may be protected by laws such as GDPR, so only scrape for a legitimate reason and ask a lawyer if you are unsure. You can read more in [Is web scraping legal?](https://blog.apify.com/is-web-scraping-legal/)

Walmart Scraper is an independent tool. It is not affiliated with, endorsed by or sponsored by Walmart.

#### Something isn't working?

Open the **Issues** tab with your input and what you expected, or tell us which field you need.

### ⭐ Your feedback

Have an idea or found a problem? Tell us in the **Issues** tab. If Walmart Scraper saved you time, a short review on the **Reviews** tab helps other people find it.

# 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`):

Higher is faster. The default works for most runs.

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

The default works for most runs. If results come back empty, try a different proxy option.

## 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/A0uYenw4Bros9EqXg/openapi.json
