# Walmart Reviews Scraper (`w3crawler/walmart-reviews-scraper`) Actor

Extract public Walmart product reviews with ratings, review text, authors, dates, feedback counts, and photos.

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

## Pricing

from $2.99 / 1,000 reviews

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

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

### What does Walmart Reviews Scraper do?

Walmart Reviews Scraper extracts source-backed public customer reviews from Walmart.com and Walmart.ca product pages. It captures star rating, review title and text, public reviewer nickname, submission date normalized to ISO 8601, helpful and not-helpful feedback counts, verified-purchase signals, and review photos. Each row links back to the product and includes transport and provenance so teams can analyze sentiment, compare products, and monitor customer feedback. Run it in the Apify Console, with the API, on a schedule, or through an integration.

### Why use Walmart Reviews Scraper?

Review research is more useful when it stays connected to the exact product and date. This Actor creates one review record at a time, checks JSON-LD and common public review-card markup, normalizes media URLs, and keeps optional fields explicit. It does not require a Walmart account or private review API.

### What data does Walmart Reviews Scraper provide?

| Group       | Fields                                                                                                        |
| ----------- | ------------------------------------------------------------------------------------------------------------- |
| Review      | `rating`, `title`, `text`, `userNickname`, `submittedAt`                                                      |
| Feedback    | `positiveFeedback`, `negativeFeedback`, `verifiedPurchase`                                                    |
| Media       | `photos` when public review media is available and enabled                                                    |
| Linkage     | `productId`, `productUrl`, `reviewId`, `rank`                                                                 |
| Provenance  | `source`, `sourceUrl`, `finalUrl`, `market`, `sourceTransport`, `extractionMethod`, `scrapedAt`, `httpStatus` |
| Diagnostics | `recordType`, `status`, `dataAvailable`, `sourceBlocked`, `diagnosticCode`, `diagnosticMessage`               |

Each emitted review is source-backed. Optional fields are `null` or empty arrays when the public page does not expose them; the Actor never invents reviewer identity, review text, dates, ratings, or verification status.

### How to scrape Walmart reviews

1. Add public Walmart.com or Walmart.ca product URLs in the **Input** tab.
2. Set the maximum number of reviews and choose whether to keep photo links.
3. Start the run and inspect the review table.
4. Export JSON, CSV, Excel, or connect the dataset to an analysis workflow.

### Input

The default input shape is:

```json
{
  "productUrls": [
    "https://www.walmart.ca/en/ip/Sealtest-Partly-Skimmed-2-Milk/6000199044832"
  ],
  "maxReviews": 5,
  "includePhotos": true,
  "timeoutMs": 45000,
  "proxyConfiguration": { "useApifyProxy": true }
}
```

`productUrls` accepts only official HTTPS Walmart.com or Walmart.ca `/ip/` product URLs. `maxReviews` bounds total output, and `includePhotos` controls public image links. `timeoutMs` bounds each public request from 5,000 to 120,000 milliseconds. `proxyConfiguration` is optional and uses the standard Apify Proxy editor; direct access is the default. `fixtureHtml` and `fixtureFile` are local testing hooks; `fixtureFile` is restricted to this Actor's `fixtures/` directory and both should remain unused for normal runs.

`productUrls` accepts one to 50 URL strings. `maxReviews` is an integer from 1 to 2,000, `includePhotos` is boolean, and `timeoutMs` is an integer from 5,000 to 120,000. The runtime validator rejects numeric strings, malformed URLs, unsupported hosts, URL credentials, invalid proxy shapes, and fixture paths outside `fixtures/`.

### Output

```json
{
  "recordType": "review",
  "status": "success",
  "dataAvailable": true,
  "source": "walmart_public_reviews",
  "sourceTransport": "got_scraping_direct",
  "extractionMethod": "embedded_customer_reviews_payload",
  "market": "US",
  "sourceBlocked": false,
  "id": "walmart-review:123456789:1",
  "productId": "123456789",
  "productUrl": "https://www.walmart.com/ip/USB-C-Charger/123456789",
  "rating": 5,
  "title": "Great value",
  "text": "Charges quickly and feels sturdy.",
  "userNickname": "shopper42",
  "submittedAt": "2026-07-01T00:00:00.000Z",
  "positiveFeedback": 12,
  "negativeFeedback": 1,
  "photos": ["https://i5.walmartimages.com/photo.jpg"],
  "sourceUrl": "https://www.walmart.com/ip/USB-C-Charger/123456789",
  "provenance": {
    "requestedUrl": "https://www.walmart.com/ip/USB-C-Charger/123456789",
    "responseUrl": "https://www.walmart.com/ip/USB-C-Charger/123456789",
    "market": "US",
    "rank": 1
  },
  "scrapedAt": "2026-08-20T00:00:00.000Z"
}
```

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

### How much does it cost?

How much does it cost to scrape Walmart reviews? Apify charges for compute and dataset storage used by each run. Keep product URLs and `maxReviews` focused while testing. Small runs may fit within the Apify free tier; check current account limits before scheduling large review collections.

### Tips and advanced options

Use product URLs for bounded batches. Walmart can vary markup by region and may render reviews dynamically, so some pages expose fewer optional fields. Access failures and empty public pages are emitted as structured diagnostic rows with `diagnosticCode`, `diagnosticMessage`, source transport, market, and provenance, and summarized in `OUTPUT_SUMMARY`.

### Access and reliability

Walmart can return PerimeterX or other human-verification pages. The Actor detects common HTTP and body-level challenge markers, fails closed, and emits an access-boundary diagnostic without attempting CAPTCHA or access-control bypass. If direct access is rejected, enable ordinary Apify Proxy in `proxyConfiguration`. The parser covers rating, title, review text, reviewer nickname, submission date, feedback counts, verification badges, and photos from JSON-LD, Walmart customer-review payloads, and review cards.

### Local verification

Run `npm test`, `npm run lint`, `npm run schema`, and a fixture-backed `apify run --purge`, then run `npm run validate`. Fixture output is deterministic; a real Cloud run is required to assess current Walmart source availability.

### FAQ, support, and responsible use

Collect only public pages and follow Walmart's terms, robots guidance, rate limits, and applicable privacy laws. This Actor does not bypass login, CAPTCHAs, paywalls, or access controls, and it does not infer private reviewer identities. Use the Issues tab for support and include the run ID, sanitized input shape, and diagnostic code; do not submit cookies, credentials, private headers, or personal data.

This Actor is an independent community tool and is not affiliated with, endorsed by, or sponsored by Walmart.

# Actor input Schema

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

Public HTTPS Walmart.com or Walmart.ca /ip/ product URLs.

## `maxReviews` (type: `integer`):

Hard limit on review records emitted across all product pages.

## `includePhotos` (type: `boolean`):

Keep public image links attached to each review when present.

## `fixtureHtml` (type: `string`):

Local testing hook; the first product URL is parsed without a network request.

## `fixtureFile` (type: `string`):

Optional deterministic fixture path; it must resolve inside this Actor's fixtures/ directory.

## `timeoutMs` (type: `integer`):

Maximum time for each public Walmart review-page request.

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

Optional standard Apify Proxy configuration. Direct access is used by default; enable ordinary proxy access when Walmart rejects the direct request.

## Actor input object example

```json
{
  "productUrls": [
    "https://www.walmart.ca/en/ip/DarkBeacon-Flux-68-HE-Magnetic-Switch-Gaming-Keyboard-Adjustable-Actuation-RT/1YTYV6ZNUNUR"
  ],
  "maxReviews": 100,
  "includePhotos": true,
  "fixtureHtml": "",
  "fixtureFile": "",
  "timeoutMs": 30000,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("w3crawler/walmart-reviews-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 = {}

# Run the Actor and wait for it to finish
run = client.actor("w3crawler/walmart-reviews-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 '{}' |
apify call w3crawler/walmart-reviews-scraper --silent --output-dataset

```

## MCP server setup

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