# Walmart Product Scraper 2026 (`devcake/walmart-product-scraper`) Actor

Walmart product scraper to extract product data by keyword, item ID, URL, or category. Collect prices, stock, sellers, ratings, UPCs, images, variants, and specs in JSON, CSV, or Excel.

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

## Pricing

from $1.00 / 1,000 results

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?

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 Product Scraper for Prices and Stock Data

This Walmart data scraper collects prices, stock status, sellers, ratings, images, specifications, variants, and other product data from Walmart's public US storefront. Search by keyword or provide an item ID, product URL, search URL, or category URL.

For the quickest test, enter `wireless mouse`, keep the default settings, and click **Start**. Each matching product is saved as a structured row in the run's default dataset.

🔎 Search by keyword or look up an exact item ID or URL\
💰 Collect prices, savings, and stock status\
🏪 Compare sellers, ratings, and product details\
📊 Save one structured dataset row per product

### 🎯 What can you use this Walmart scraper for?

- **Price monitoring** — compare Walmart prices over time.
- **Stock monitoring** — track public product availability.
- **Competitor research** — compare prices, brands, sellers, ratings, and discounts.
- **Catalog enrichment** — collect item IDs, UPCs, models, descriptions, images, variants, and specifications.
- **Product discovery** — search by keyword or browse a category.

The Actor runs on Apify with automatic US residential proxy rotation and bounded retries. You can run it manually, call it through the API, save configurations as tasks, schedule recurring runs, and connect the resulting dataset to other tools.

### 🚀 How to scrape Walmart products

1. Open the Actor's **Input** tab and add at least one product name, Walmart item ID, product URL, search URL, browse URL, or category URL.
2. Choose the maximum number of products for each search or listing, select a product order, and decide whether search results should include full product details.
3. Click **Start**. The Actor searches Walmart, retries temporary request failures with fresh US residential proxy sessions, and saves each successful product separately.
4. Open **Output → Products** to view or export the dataset. Open **Output → Run summary** to inspect target totals, retry counts, detail statistics, and any errors.

### 📥 Walmart scraper input examples

Add up to 50 search terms, item IDs, or Walmart URLs in one run. You can use one type of input or mix several types together.

| Input | Description | Default and limits |
| --- | --- | --- |
| `targets` | Product names, item IDs, or Walmart product, search, browse, and category URLs | Required; 1–50 unique targets |
| `maxResults` | Maximum products saved for each search term or listing URL | Prefill: `30`; range: `30`–`500` |
| `sort` | Product order for search terms and listing URLs | Default: `best_match` |
| `includeDetails` | Adds descriptions, specifications, images, fulfillment, returns, and embedded reviews to search and listing results | Default: `false`; item IDs and product URLs always include details |

#### 🔀 Example input

Use a mixed input when you want search results and exact product details in the same dataset.

```json
{
  "targets": [
    "wireless mouse",
    "18315401919",
    "https://www.walmart.com/ip/example/18315401919",
    "https://www.walmart.com/browse/electronics/wireless-mouse/164214"
  ],
  "maxResults": 30,
  "sort": "rating_high",
  "includeDetails": true
}
```

This example combines a keyword, item ID, product URL, and category URL. You can submit any one supported type or mix them. Available product orders are best match, best sellers, lowest price, highest price, highest rated, and newest. The product limit applies separately to each search or listing target.

### 📤 Walmart product data output examples

Each product is saved as a separate dataset row. These shortened examples show the difference between a basic listing result and a result enriched from its product page.

#### Basic product result

Search and category targets return this type of result when `includeDetails` is `false`.

```json
{
  "target": "wireless mouse",
  "targetType": "SEARCH",
  "targetIndex": 0,
  "searchQuery": "wireless mouse",
  "status": "SUCCEEDED",
  "scrapeStatus": "SUCCEEDED",
  "dataCompleteness": "LISTING",
  "detailsIncluded": false,
  "scrapedAt": "2026-09-08T12:00:00Z",
  "attempts": 1,
  "position": 1,
  "page": 1,
  "productId": "123456789",
  "name": "Example Wireless Mouse",
  "productUrl": "https://www.walmart.com/ip/123456789",
  "brand": "Example",
  "price": 19.78,
  "currency": "USD",
  "priceDisplay": "$19.78",
  "availability": "IN_STOCK",
  "rating": 4.5,
  "reviewCount": 932,
  "sellerName": "Walmart.com",
  "isSoldByWalmart": true,
  "image": "https://i5.walmartimages.com/example.jpeg",
  "detailStatus": "NOT_REQUESTED",
  "requestedSort": "rating_high"
}
```

#### Product result with details

This result is produced when enrichment succeeds. Item IDs and product URLs always request product details.

```json
{
  "target": "wireless mouse",
  "targetType": "SEARCH",
  "targetIndex": 0,
  "status": "SUCCEEDED",
  "scrapeStatus": "SUCCEEDED",
  "dataCompleteness": "PRODUCT_DETAIL",
  "detailsIncluded": true,
  "scrapedAt": "2026-09-08T12:00:00Z",
  "attempts": 1,
  "productId": "123456789",
  "name": "Example Wireless Mouse",
  "productUrl": "https://www.walmart.com/ip/123456789",
  "brand": "Example",
  "price": 19.78,
  "currency": "USD",
  "availability": "IN_STOCK",
  "model": "WM-100",
  "upc": "012345678905",
  "condition": "New",
  "shortDescription": "A quiet wireless mouse.",
  "images": [
    "https://i5.walmartimages.com/example-front.jpeg",
    "https://i5.walmartimages.com/example-side.jpeg"
  ],
  "highlights": [
    {"name": "Color", "value": "Black"}
  ],
  "specifications": [
    {"name": "Connectivity", "value": "Wireless"}
  ],
  "fulfillment": [
    {"type": "SHIPPING", "availability": "IN_STOCK", "selected": true}
  ],
  "returns": {
    "returnable": true,
    "free_returns": true,
    "window_value": 30,
    "window_unit": "Day"
  },
  "reviews": {
    "average_rating": 4.5,
    "total_count": 932,
    "items": [
      {"rating": 5, "title": "Great", "text": "Very quiet"}
    ]
  },
  "detailStatus": "SUCCEEDED",
  "detailAttempts": 1
}
```

Other fields can include price ranges, offers, badges, variants, warnings, warranty, categories, rating distribution, and store location.

Prices, availability, fulfillment, and seller information reflect Walmart's public, logged-out US storefront at the time of the run. Walmart may show different results depending on location and inventory.

### 🔌 Automate and export Walmart data

Download the default dataset as JSON, CSV, Excel, XML, HTML, RSS, or JSONL, or read it through the dataset API.

- Use the Actor's **API** tab to generate REST API requests or client examples.
- Create an [Apify schedule](https://docs.apify.com/platform/actors/running/schedules) for recurring price and stock snapshots.
- Add webhooks or integrations to process completed runs.
- See [Apify dataset exports](https://docs.apify.com/platform/storage/dataset).

### 💳 How pricing works

This Actor uses Apify's pay-per-event pricing. Each saved product uses one dataset-item event; a successfully enriched product also uses one product-detail event. Failed or unsaved products are not charged. Search results without details use only the dataset-item event, while item IDs and product URLs normally use both.

Use this formula to estimate a run before starting it:

`estimated event cost = (saved products × dataset-item price) + (detailed products × product-detail price)`

Ten basic products use 10 dataset-item events. If all 10 are enriched, the run also uses 10 product-detail events. Check the **Pricing** tab for current prices, plan discounts, and included usage. Set a maximum charge per run to control spending.

### 🔗 Related e-commerce Actors

| Actor | Best for |
| --- | --- |
| [Amazon Listings Scraper 2026](https://apify.com/devcake/amazon-listings-scraper) | Amazon listings with ASINs, prices, ratings, Prime, and badges. |
| [eBay Listings Scraper](https://apify.com/devcake/ebay-listings-scraper) | eBay listings with prices, demand signals, and seller locations. |
| [Scraper by Image — Amazon & eBay](https://apify.com/devcake/amazon-ebay-scraper) | Visually similar Amazon and eBay products from a photo. |
| [Google Shopping Scraper](https://apify.com/devcake/google-shopping) | Google Shopping products, prices, sellers, and ratings across countries. |

### ❓ Walmart product scraper FAQ

#### Does this Walmart scraper collect reviews?

Product details can include the overall rating, review count, rating distribution, and up to five reviews embedded in the public product page. It is not intended to collect complete review histories.

#### Which Walmart storefront does it cover?

The scraper covers Walmart's public US storefront. It does not sign in to customer accounts, select a custom store, or complete purchases.

#### Why are some fields empty or different from the Walmart page I see?

Walmart varies prices, availability, fulfillment options, and sellers by location and inventory. The Actor uses Walmart's public, logged-out US storefront through US residential proxy sessions. A field can also be unavailable when Walmart omits it from the page or when detail enrichment only partially succeeds.

#### What should I do if a target fails or returns partial details?

Open **Output → Run summary** and check the target-level error and retry counts. Confirm that the URL is a public HTTPS `walmart.com` product, search, browse, or category page, then try the target again. If the problem continues, open the Actor's **Issues** tab and include a shareable run so the failure can be investigated.

#### Is scraping Walmart legal?

This Actor accesses pages available on Walmart's public, logged-out US storefront and does not sign in or complete purchases. You are responsible for ensuring that your use of the collected data complies with applicable laws, Walmart's terms and policies, and any contractual obligations relevant to your project.

#### How can I get support?

Open the Actor's **Issues** tab to ask a question, report a problem, request a feature, or provide feedback. For troubleshooting, include the input you used, the expected result, and a shareable failed run when possible. Never post account credentials, API tokens, cookies, or other secrets.

# Actor input Schema

## `targets` (type: `array`):

Enter one per line: a product name such as 'wireless mouse', an item ID such as '18315401919', or a Walmart product, search, browse, or category URL. You can mix these formats in one run.

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

Set the maximum number of products to save for each search term, search URL, browse URL, or category URL. Item IDs and product URLs always return one product. Keep 10 for a quick first run.

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

Choose how products from search terms, search URLs, browse URLs, and category URLs are ordered. Item IDs and product URLs are not affected.

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

Turn on to collect descriptions, specifications, extra images, fulfillment, returns, and reviews for products found through searches, browse pages, or category pages. Runs take longer when this is enabled. Item IDs and product URLs always include these details.

## Actor input object example

```json
{
  "targets": [
    "wireless mouse"
  ],
  "maxResults": 30,
  "sort": "best_match",
  "includeDetails": false
}
```

# Actor output Schema

## `results` (type: `string`):

Open the scraped Walmart products, prices, availability, sellers, ratings, images, and optional details.

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

Open run totals, retry counts, detail statistics, and target-level errors.

# 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 = {
    "targets": [
        "wireless mouse"
    ],
    "maxResults": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("devcake/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 = {
    "targets": ["wireless mouse"],
    "maxResults": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("devcake/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 '{
  "targets": [
    "wireless mouse"
  ],
  "maxResults": 30
}' |
apify call devcake/walmart-product-scraper --silent --output-dataset

```

## MCP server setup

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