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

Scrape Walmart.com products by keyword or product URL: item ID, name, price, was-price, savings, rating, reviews, seller, deal badges, and image. Export as JSON, CSV, or Excel.

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

## Pricing

from $2.00 / 1,000 product scrapeds

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

Scrape [Walmart.com](https://www.walmart.com/) products by keyword or product URL and get clean, structured data — item IDs, prices, was-prices, savings, ratings, reviews, sellers, deal badges, and images — with no Walmart API key and no browser automation.

<table><tr>
<td style="border-left:4px solid #0071DC;padding:12px 16px;font-weight:600">
Search Walmart by keyword or paste product URLs, sort by best match, price, rating, best seller, or newest, page through results automatically, and get 16 structured fields per product — price, was-price, savings, on-sale flag, rating, review count, seller, fulfillment type, deal badge, image, and sponsored flag — ready for JSON, CSV, or Excel.
</td>
</tr></table>

##### Copy to your AI assistant

Copy this block into ChatGPT, Claude, Cursor, or any LLM to start using this actor.

```
Use the Apify actor "parsebird/walmart-product-scraper" via the ApifyClient. Example (Python): from apify_client import ApifyClient; client = ApifyClient("<APIFY_TOKEN>"); run = client.actor("parsebird/walmart-product-scraper").call(run_input={"searchQueries": ["laptop"], "productUrls": [], "maxProductsPerSearch": 100, "maxSearchPages": 5, "sort": "best_match", "maxRequestRetries": 5}); items = list(client.dataset(run["defaultDatasetId"]).iterate_items()). Key inputs: searchQueries (array of keywords; each runs a separate search; a Walmart search URL also works), productUrls (array of https://www.walmart.com/ip/... URLs for direct product details; normalized and de-duplicated by item ID), maxProductsPerSearch (integer, default 100), maxSearchPages (integer, default 5, ~40 products per page), sort (one of best_match, best_seller, price_low, price_high, rating_high, new), maxRequestRetries (integer, default 5), proxyConfiguration (defaults to Apify Proxy US residential, which is required). Output fields per product: usItemId, name, price, priceString, wasPrice, savings, onSale, rating, reviewCount, seller, fulfillmentType, flag, thumbnail, url, isSponsored, scrapedAt. Full API spec: https://apify.com/parsebird/walmart-product-scraper/api. Get an API token at https://console.apify.com/settings/integrations.
```

### What does Walmart Product Scraper do?

Walmart Product Scraper extracts product data from [Walmart.com](https://www.walmart.com/) the same way the Walmart website loads it — from Walmart's own embedded product data — so you get structured fields instead of text scraped off a rendered page. It is a lightweight **Walmart API alternative**: no reverse-engineering, no headless browser, no login.

🔎 **Two input modes** — add a list of search keywords (each keyword runs its own Walmart search), or paste Walmart product URLs (`https://www.walmart.com/ip/...`) for direct product details and price monitoring. You can mix both in one run.

↕️ **Sort control** — order search results by best match, best seller, price low-to-high, price high-to-low, rating, or newest, matching Walmart's own sort options.

📄 **Automatic pagination** — set a `maxProductsPerSearch` target and the Walmart scraper pages through results (about 40 products per page) on its own, de-duplicating listings and stopping at Walmart's search ceiling of roughly 1,000 products per keyword.

💲 **Price and deal data** — current price, "was" price, savings text, an `onSale` flag, and the deal badge Walmart shows on the card (`Rollback`, `Best seller`, `Clearance`, `100+ bought since yesterday`, and similar).

⭐ **Ratings and seller info** — average star rating, review count, seller name (`Walmart.com` or a marketplace seller), and fulfillment type.

📷 **Direct links** — a clean product URL and a product image URL for every item, plus a `usItemId` you can use as a stable key.

☁️ **Runs on Apify** — [schedule](https://docs.apify.com/platform/schedules) recurring runs, call it from the [API](https://docs.apify.com/api/v2), connect it to [integrations](https://apify.com/integrations) (Make, Zapier, n8n, Google Sheets, Slack), and export as JSON, CSV, Excel, or XML.

### What data can you extract from Walmart.com?

| Field | Description |
|-------|-------------|
| `usItemId` | Walmart item identifier — a stable key for the product |
| `name` | Product name as shown on the Walmart listing |
| `price` | Current price as a number, e.g. `23.78` |
| `priceString` | Formatted current price, e.g. `$23.78` |
| `wasPrice` | Original price before discount, when the item is on sale |
| `savings` | Savings text, e.g. `SAVE $5.60` |
| `onSale` | Whether the product is currently discounted |
| `rating` | Average star rating from `0` to `5` |
| `reviewCount` | Number of customer reviews |
| `seller` | Seller name, e.g. `Walmart.com` or a marketplace seller |
| `fulfillmentType` | Delivery / fulfillment method reported by Walmart |
| `flag` | Deal badge, e.g. `Rollback`, `Best seller`, `100+ bought since yesterday` |
| `thumbnail` | Product image URL |
| `url` | Direct link to the Walmart product page |
| `isSponsored` | Whether the listing is a sponsored (paid) placement |
| `scrapedAt` | ISO 8601 timestamp when the data was extracted |

See the [Output example](#output-example) below for the full record shape. Download results in JSON, CSV, Excel, or XML.

### How to scrape Walmart.com product data

1. Click **Try for free** / **Start** to open the Walmart Product Scraper.
2. Add one or more **Search keywords** (for example `laptop`), or paste **Product URLs** such as `https://www.walmart.com/ip/JLab-Go-Air-Pop-Bluetooth-Earbuds/17828556665`.
3. Pick a **Sort by** order and set **Max products per search** and **Max search pages**.
4. Keep the default **Proxy configuration** (Apify Proxy, US residential) — it is required to reach Walmart.
5. Press **Start**. Watch the run log; results stream into the dataset as they are collected.
6. Open the **Storage** tab and export as JSON, CSV, Excel, or XML, or pull them from the [API](https://docs.apify.com/api/v2).

### Input parameters

| Parameter | Type | Required | Default | Description |
|-----------|------|----------|---------|-------------|
| `searchQueries` | array | Yes\* | `["laptop"]` | Keywords to search on Walmart. Each keyword runs a separate search. A Walmart search URL also works. |
| `productUrls` | array | Yes\* | `[]` | Walmart.com product URLs for direct product details and price monitoring. URLs are normalized and duplicate item IDs are fetched once. |
| `maxProductsPerSearch` | integer | No | `100` | Maximum number of products to return for each keyword. |
| `maxSearchPages` | integer | No | `5` | Maximum number of search result pages per keyword. Each page has about 40 products. |
| `sort` | string | No | `best_match` | Sort order: `best_match`, `best_seller`, `price_low`, `price_high`, `rating_high`, `new`. |
| `maxRequestRetries` | integer | No | `5` | Retry attempts for failed or blocked requests. Higher values improve reliability. |
| `proxyConfiguration` | object | No | US residential | Apify Proxy settings. US residential proxies are the default and are required. |

\* Provide at least one entry in `searchQueries` or `productUrls`.

#### Input examples

**Basic keyword search** — collect up to 10 products for one Walmart search term:

```json
{
    "searchQueries": ["laptop"],
    "productUrls": [],
    "maxProductsPerSearch": 10,
    "maxSearchPages": 1,
    "sort": "best_match",
    "maxRequestRetries": 5
}
```

**Multiple keywords, cheapest first:**

```json
{
    "searchQueries": ["air fryer", "coffee maker", "robot vacuum"],
    "maxProductsPerSearch": 100,
    "maxSearchPages": 5,
    "sort": "price_low"
}
```

**Price monitoring for a fixed set of products:**

```json
{
    "productUrls": [
        "https://www.walmart.com/ip/JLab-Go-Air-Pop-Bluetooth-Earbuds/17828556665",
        "https://www.walmart.com/ip/13-inch-MacBook-Neo/19682700559"
    ]
}
```

### Output example

```json
{
    "usItemId": "17828556665",
    "name": "JLab Go Air Pop Bluetooth Earbuds, True Wireless with Charging Case",
    "price": 23.78,
    "priceString": "$23.78",
    "wasPrice": "$29.38",
    "savings": "SAVE $5.60",
    "onSale": true,
    "rating": 4.5,
    "reviewCount": 34286,
    "seller": "Walmart.com",
    "fulfillmentType": "FC",
    "flag": "500+ bought since yesterday",
    "thumbnail": "https://i5.walmartimages.com/seo/JLab-Go-Air-Pop-True-Wireless-Bluetooth-Earbuds.jpeg",
    "url": "https://www.walmart.com/ip/JLab-Go-Air-Pop-Bluetooth-Earbuds/17828556665",
    "isSponsored": false,
    "scrapedAt": "2026-03-03T01:40:32.821Z"
}
```

### Use cases

- 💰 **Price monitoring** — track Walmart prices, rollbacks, and "was" prices for a fixed list of product URLs on a schedule.
- 📊 **Competitor and market research** — pull a full category's assortment, sellers, and price bands from Walmart search.
- 🧭 **Assortment and rank tracking** — watch which products rank for a keyword and how sponsored placements shift over time.
- 🛍️ **Catalog and feed building** — collect names, images, item IDs, and product URLs to seed a product database.
- ⭐ **Review-signal analysis** — combine `rating` and `reviewCount` to find top-rated products in a niche.
- 🤖 **AI and RAG pipelines** — feed structured Walmart product data to agents and LLM workflows via the Apify API or [MCP](https://docs.apify.com/platform/integrations/mcp).

### How it works

1. The actor takes each keyword in `searchQueries` (or the search term from a pasted Walmart search URL) and queries Walmart.com's search results page by page.
2. Every Walmart product URL in `productUrls` is normalized to its item ID, de-duplicated, and fetched once for direct product details.
3. Requests are routed through Apify Proxy US residential IPs, which are required to reach Walmart.
4. Each product is normalized into a flat 16-field record, and sponsored duplicates of organic listings are removed by item ID.
5. Records stream into the dataset as they are collected, so partial results are always available.
6. Pagination stops when `maxProductsPerSearch` is reached, `maxSearchPages` is hit, or Walmart runs out of results (its search returns roughly 1,000 products per keyword).

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

This actor uses **pay-per-result** pricing through a single event, `product-scraped`, charged once per product saved to the dataset.

| Plan tier | Price per 1,000 products |
|-----------|--------------------------|
| Free | **$4.00** |
| Bronze | **$3.50** |
| Silver | **$3.00** |
| Gold | **$2.00** |

Collecting 1,000 Walmart products costs about **$2.00–$4.00** depending on your Apify plan, plus a small amount of Apify Proxy and compute usage. Your Apify plan's monthly usage credits apply. Example: `maxProductsPerSearch: 100` for two keywords costs roughly **$0.40–$0.80**.

### FAQ

**Do I need a Walmart API key or a Walmart account?**
No. The actor reads Walmart.com's public product data. There is nothing to authenticate.

**Why is a proxy required?**
Walmart.com blocks datacenter traffic and is US-only. Apify Proxy US residential IPs are set as the default `proxyConfiguration` and are required. Runs without a proxy will fail.

**How many products can I get per keyword?**
Walmart's search returns roughly 1,000 products (about 25 pages of 40) for a given keyword, regardless of the total it reports. Use narrower keywords or a different `sort` to reach different slices of a large category.

**Can I scrape a Walmart category page?**
Use a keyword that matches the category, or paste a Walmart search URL. Direct product URLs from any category go in `productUrls`.

**Are sponsored products included?**
Yes. Sponsored listings are kept and flagged with `isSponsored: true`. When the same item appears as both a sponsored and an organic result, it is saved once.

**How fresh is the data?**
Every record carries a `scrapedAt` timestamp and reflects Walmart's live listing at the moment of the request. Schedule the actor to keep a price history.

**Can I schedule recurring runs?**
Yes. Use Apify [Schedules](https://docs.apify.com/platform/schedules) to run the Walmart scraper hourly, daily, or weekly, and send results to [integrations](https://apify.com/integrations) like Google Sheets, Make, Zapier, or a webhook.

**How do I call it from code?**

Python:

```python
from apify_client import ApifyClient

client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("parsebird/walmart-product-scraper").call(run_input={
    "searchQueries": ["laptop"],
    "maxProductsPerSearch": 100,
    "maxSearchPages": 5,
    "sort": "best_match",
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item["name"], item.get("priceString"))
```

JavaScript:

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

const client = new ApifyClient({ token: '<APIFY_TOKEN>' });
const run = await client.actor('parsebird/walmart-product-scraper').call({
    searchQueries: ['laptop'],
    maxProductsPerSearch: 100,
    maxSearchPages: 5,
    sort: 'best_match',
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**Something looks wrong or missing.**
Open an issue on the **Issues** tab with the input you used. Feedback is welcome and helps keep the Walmart Product Scraper reliable.

### Is it legal to scrape Walmart.com?

Web scraping of publicly available data is legal in most jurisdictions, including the US and EU, when you do not collect personal data or bypass authentication. This actor only reads public Walmart.com product listings — no login, no personal data. You are responsible for how you use the collected data, including compliance with Walmart's Terms of Service, applicable laws (GDPR, CCPA), and copyright. See Apify's [guide to the legality of web scraping](https://blog.apify.com/is-web-scraping-legal/) for background.

### Related Apify actors

- [Target Product Scraper](https://apify.com/parsebird/target-product-scraper) — product listings from Target.com search
- [Trendyol Product Scraper](https://apify.com/parsebird/trendyol-product-scraper) — products, reviews, and Q\&A from Trendyol
- [AliExpress Scraper](https://apify.com/parsebird/aliexpress-scraper) — AliExpress product and pricing data
- [Shopify Products Scraper](https://apify.com/parsebird/shopify-products-scraper) — full product catalogs from any Shopify store
- [Hepsiburada Scraper](https://apify.com/parsebird/hepsiburada-scraper) — Hepsiburada products, reviews, and Q\&A

Browse the full [ParseBird actor collection](https://apify.com/parsebird) for more e-commerce and marketplace scrapers.

# Actor input Schema

## `searchQueries` (type: `array`):

Add keywords to search on Walmart. Each keyword runs a separate search. A full Walmart search URL also works.

## `productUrls` (type: `array`):

Add Walmart.com product URLs (https://www.walmart.com/ip/...) for direct product details and price monitoring. URLs are normalized and duplicate item IDs are fetched once.

## `maxProductsPerSearch` (type: `integer`):

Maximum number of products to return for each keyword.

## `maxSearchPages` (type: `integer`):

Maximum number of search result pages per keyword. Each page holds about 40 products.

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

Result order applied on Walmart's own search.

## `maxRequestRetries` (type: `integer`):

Retry attempts for failed or blocked requests. Higher values improve reliability on hard runs.

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

Walmart.com blocks datacenter traffic and is US-only. US residential proxies are used by default and are required for the actor to collect data.

## Actor input object example

```json
{
  "searchQueries": [
    "laptop"
  ],
  "productUrls": [],
  "maxProductsPerSearch": 100,
  "maxSearchPages": 5,
  "sort": "best_match",
  "maxRequestRetries": 5,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "US"
  }
}
```

# Actor output Schema

## `dataset` (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 = {
    "searchQueries": [
        "laptop"
    ],
    "productUrls": [],
    "maxProductsPerSearch": 100,
    "maxSearchPages": 5,
    "maxRequestRetries": 5,
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ],
        "apifyProxyCountry": "US"
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("parsebird/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 = {
    "searchQueries": ["laptop"],
    "productUrls": [],
    "maxProductsPerSearch": 100,
    "maxSearchPages": 5,
    "maxRequestRetries": 5,
    "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
        "apifyProxyCountry": "US",
    },
}

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

```

## MCP server setup

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