# Walmart Scraper — Products, Prices, Sellers & Reviews (`memo23/walmart-scraper`) Actor

Scrape Walmart.com and Walmart.ca: products with price, was-price, every deal badge, rating, seller and stock; full records with UPC, specs and variants; customer reviews with star, verified and date filters; every seller offer with seller email and phone. Any URL, keyword or item id.

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

## Pricing

from $1.00 / 1,000 products

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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, Sellers & Reviews

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/logo-walmart.png" alt="Walmart Scraper logo" width="128" />
</p>

Turn any Walmart search, category, product or seller URL into clean rows: prices with was-price and discount, every deal badge, ratings, stock, sellers, customer reviews and every marketplace seller's offer. Works on walmart.com and walmart.ca. Pure HTTP, no browser.

| Result type | One row per | Typical use |
|---|---|---|
| Products | product (search tile, or the full product page) | price monitoring, catalog and assortment mapping |
| Customer reviews | review | voice of customer, sentiment, complaint mining |
| Seller offers | marketplace seller offer | buy-box and marketplace seller research |
| Seller profile | seller store URL | seller contact lists, marketplace lead generation |

### Why Use This Scraper?

- **Four result types in one actor.** Products, reviews, seller offers and seller profiles share one input form and one dataset shape per type.
- **Every badge, not just one.** Rollback, Clearance, Reduced price, Best seller, Overall pick, Flash Deal and the "100+ bought since yesterday" line all come back, as text and as stable keys.
- **Full product record on demand.** UPC, model, specifications, all images, variants, number of sellers, fulfillment options, return window, star breakdown and Walmart's AI review highlights.
- **Shows where the price applies.** Every full product row carries the ZIP, city, state and store id Walmart priced it for, so you know which store a price and stock reading belong to.
- **Review filters that matter.** Sort by newest, oldest, rating or helpfulness, keep several star ratings at once, verified purchases only, and a since-date that stops reading at the first older review.
- **Seller contacts.** Seller offers can carry each marketplace seller's public business email, phone, address, rating and review count.
- **Paste any URL.** Search, `/browse/`, `/cp/` department pages, filtered or brand searches, product, reviews and seller store URLs are all recognised.
- **Walmart.ca too.** Products and reviews on walmart.ca, with CAD prices and Canadian store locations.

### Overview

Built for price-tracking tools, e-commerce and marketplace teams, brand managers, review analysts and agencies who need public Walmart data without an official API.

The dataset has one row per result, and the `recordType` field says what the row is: `product`, `review`, `offer` or `seller`. Nested values (specifications, variants, star breakdown) stay as JSON objects; Apify's CSV and Excel exports flatten them into columns.

Walmart protects its site with a bot wall that refuses datacenter IP addresses, so every request goes out through a residential address in the marketplace's country, and every retry uses a new one.

### Supported Inputs

#### URL types

| URL type | Example | What you get |
|---|---|---|
| Search | `https://www.walmart.com/search?q=coffee+maker` | Products, paginated |
| Filtered or brand search | `https://www.walmart.com/search?q=blender&facet=brand%3ANinja` | Products, filters kept |
| Category (browse) | `https://www.walmart.com/browse/3944_1060825_447913` | Products, paginated |
| Department page (/cp/) | `https://www.walmart.com/cp/coffee-makers/5438660` | Resolved to the category, then paginated |
| Product | `https://www.walmart.com/ip/5162907971` | Full product record, its reviews, or its seller offers |
| Reviews page | `https://www.walmart.com/reviews/product/609040889` | Same as the product it belongs to |
| Seller store | `https://www.walmart.com/global/seller/101063684` | Seller profile row |
| Walmart.ca | `https://www.walmart.ca/en/search?q=kettle` | Products and reviews in CAD |

#### Copy-pasteable startUrls

```json
{
    "startUrls": [
        { "url": "https://www.walmart.com/search?q=air+fryer" },
        { "url": "https://www.walmart.com/cp/coffee-makers/5438660" },
        { "url": "https://www.walmart.com/ip/5162907971" }
    ]
}
```

#### Keywords, category ids and item ids

You do not need URLs. `searchQueries` runs one Walmart search per keyword, `categoryIds` takes ids such as `3944` or `3944_1060825`, and `productIds` takes item ids such as `609040889` or the 12-character id such as `4SZSM8SXAAJT`. The `domain` field picks walmart.com or walmart.ca for these.

#### Unsupported inputs

- A seller's item catalog. A seller store URL returns the seller's profile, not the list of products it sells.
- Seller offers on walmart.ca. Walmart.ca's site has no all-sellers view to read, so those products are skipped with a log message.
- Walmart Mexico, cart, checkout, account, order or anything behind a login.

### Use Cases

| Audience | What they do with it |
|---|---|
| Price-tracking tools | Scheduled snapshots of price, was-price, Rollback and stock per item id |
| E-commerce and category managers | Assortment and share-of-shelf mapping from category and search pages |
| Marketplace sellers and agencies | Buy-box research: every seller's price, condition, shipping, WFS status and rating |
| Brands | Review monitoring by star rating and date, AI review highlights, sentiment feeds |
| Lead generation | Marketplace seller contact lists from seller offers and store pages |
| Researchers | Price distribution, badge usage and sponsored placement across categories |

### How It Works

<p align="center">
  <img src="https://raw.githubusercontent.com/muhamed-didovic/muhamed-didovic.github.io/main/assets/how-it-works-walmart.png" alt="How Walmart Scraper works" width="900" />
</p>

1. You give it Walmart URLs, keywords, category ids or item ids, and choose the result type.
2. Search and category pages are read page by page (about 40 products each, up to Walmart's 25-page limit) and de-duplicated.
3. Depending on the result type, each product becomes a row, has its product page opened, has its review pages read with your filters, or has every seller offer collected.
4. Each request goes out through a new residential address in the marketplace's country, with automatic retries when Walmart refuses one.
5. Rows land in the dataset as soon as each product is done. Export as JSON, CSV, Excel or through the API.

### Input Configuration

#### Input fields

| Field | Type | Default | Description |
|---|---|---|---|
| `scrapeMode` | select | `products` | Result type: `products`, `reviews` or `sellerOffers`. Seller store URLs always return a seller profile row. |
| `startUrls` | array | empty | Any walmart.com or walmart.ca URL from the table above. |
| `searchQueries` | array | empty | Keywords, one search each. |
| `categoryIds` | array | empty | Category ids (`3944`, `3944_1060825`) or /cp/ and /browse/ URLs. |
| `productIds` | array | empty | Item ids, 12-character product ids or product URLs. |
| `domain` | select | `us` | `us` (walmart.com) or `ca` (walmart.ca) for keywords, category ids and bare item ids. |
| `includeProductDetails` | boolean | `false` | Products mode: open each product found by a search or category for the full record. |
| `sort` | select | `best_match` | `best_match`, `price_low`, `price_high`, `best_seller`, `rating_high`, `new`. |
| `minPrice` / `maxPrice` | integer | empty | Price range for searches and categories. |
| `maxPagesPerSearch` | integer | `5` | Result pages per search or category, 1–25. |
| `maxReviewsPerProduct` | integer | `100` | Reviews mode cap per product; `0` = every review with text. |
| `reviewsSort` | select | `relevancy` | `relevancy`, `newest`, `oldest`, `rating_high`, `rating_low`, `helpful`. |
| `reviewRatings` | array | empty | Star ratings to keep, e.g. `["1","2"]`. Empty = all. |
| `verifiedPurchasesOnly` | boolean | `false` | Only Verified Purchase reviews. |
| `reviewsNewerThan` | date | empty | Only reviews on or after this date; reading stops at the first older one. |
| `includeSellerDetails` | boolean | `false` | Seller offers mode: add each seller's email, phone, address, rating and review count. |
| `maxItems` | integer | `100` | Hard cap on rows across the run. |
| `maxConcurrency` | integer | `10` | Pages fetched at the same time, 1–30. |
| `maxRequestRetries` | integer | `8` | Attempts per page, each from a new IP address. |
| `proxy` | proxy | residential | Leave as is. Paste your own proxy URLs only to use your own residential provider. |

#### Common scenarios

Products from a search, with the full record:

```json
{
    "scrapeMode": "products",
    "searchQueries": ["air fryer"],
    "includeProductDetails": true,
    "maxPagesPerSearch": 2,
    "maxItems": 50
}
```

Recent one- and two-star verified reviews for a few products:

```json
{
    "scrapeMode": "reviews",
    "productIds": ["3406383181", "5162907971"],
    "reviewRatings": ["1", "2"],
    "verifiedPurchasesOnly": true,
    "reviewsNewerThan": "2026-09-01",
    "maxReviewsPerProduct": 0,
    "maxItems": 1000
}
```

Every seller on a product, with seller contact details:

```json
{
    "scrapeMode": "sellerOffers",
    "productIds": ["3406383181"],
    "includeSellerDetails": true,
    "maxItems": 100
}
```

Canadian products from a category:

```json
{
    "scrapeMode": "products",
    "domain": "ca",
    "searchQueries": ["kettle"],
    "sort": "price_low",
    "maxItems": 40
}
```

### Output Overview

Each row has a `recordType`:

- `product`: one per product. Search and category tiles give the listing fields (price, was-price, badges, rating, seller, stock, shipping and pickup lines, rank, sponsored flag). Full records (`detailScraped: true`) add identifiers, description, specifications, images, variants, fulfillment, returns, star breakdown, review highlights and the location Walmart priced the page for.
- `review`: one per customer review, with the product it belongs to.
- `offer`: one per marketplace seller offer on a product, ranked the way Walmart lists them, plus the lowest offer price on that product.
- `seller`: one per seller store URL, the seller's public business profile.

### Output Samples

#### Product from a search (listing fields)

```json
{
    "recordType": "product",
    "usItemId": "1082291497",
    "productId": "527TISE23F0Y",
    "name": "Chefman 1L Electric Glass Kettle w/ LED Indicator Light, Automatic Shutoff - Black",
    "url": "https://www.walmart.com/ip/Chefman-1L-Electric-Glass-Kettle-w-LED-Indicator-Light-Automatic-Shutoff-Black-New/1082291497",
    "price": 16.97,
    "wasPrice": 19,
    "savings": 2.03,
    "discountPercent": 11,
    "minPrice": 16.97,
    "maxPrice": 18,
    "currency": "USD",
    "isRollback": true,
    "isSponsored": true,
    "badges": ["Rollback"],
    "badgeKeys": ["ROLLBACK"],
    "rating": 4.7,
    "reviewCount": 14276,
    "sellerName": "Walmart.com",
    "soldByWalmart": true,
    "availability": "IN_STOCK",
    "shippingMessage": "Shipping, arrives tomorrow",
    "pickupMessage": "Pickup available",
    "deliveryMessage": "Delivery as soon as 20 mins",
    "condition": "New",
    "additionalOfferCount": 8,
    "productType": "Electric Kettles",
    "categoryPath": "Home > Appliances > Kitchen Appliances > Electric Kettles & Ice Tea Makers > Electric Kettles",
    "position": 1,
    "page": 1,
    "searchQuery": "kettle",
    "detailScraped": false,
    "domain": "us"
}
```

#### Full product record (shortened)

```json
{
    "recordType": "product",
    "usItemId": "997508948",
    "name": "Ninja 12-Cup Programmable Drip Coffee Maker, 2 Brew Styles, Adjustable Warming Plate, CE250, Black/Stainless Steel",
    "brand": "Ninja",
    "price": 64.97,
    "wasPrice": 74,
    "discountPercent": 12,
    "badges": ["Overall pick"],
    "socialProof": "100+ bought since yesterday",
    "rating": 4.6,
    "reviewCount": 8999,
    "upc": "622356592161",
    "model": "CE250",
    "offerCount": 2,
    "freeShipping": true,
    "shippingDeliveryDate": "2026-09-25T21:59:00.000Z",
    "returnWindowDays": 90,
    "ratingBreakdown": { "fiveStar": 7252, "fourStar": 735, "threeStar": 305, "twoStar": 180, "oneStar": 527 },
    "recommendedPercentage": 78,
    "specifications": { "Number of cups": "12", "Features": "Programmable", "Finish": "Stainless Steel", "Weight": "7 lb" },
    "variantOptions": { "Actual Color": ["12 Cups - Silver", "14 Cups - Silver"] },
    "reviewHighlights": [
        { "aspect": "coffee taste", "sentiment": "Positive", "summary": "Brews a cup with a deep flavor profile." }
    ],
    "locationZip": "07003",
    "locationCity": "Bloomfield",
    "locationState": "NJ",
    "locationStoreId": "5447",
    "detailScraped": true
}
```

#### Customer review

```json
{
    "recordType": "review",
    "usItemId": "5162907971",
    "productName": "Mainstays Black 12-Cup Drip Coffee Maker",
    "reviewId": "427996541",
    "rating": 5,
    "title": "Great Value for the Price",
    "text": "It does exactly what I want it to do, makes a decent amount of coffee and keeps it hot. The only drawback is that it does not have an auto shut off…",
    "submittedAt": "2026-06-08",
    "userNickname": "Alexandra",
    "isVerifiedPurchase": true,
    "helpfulVotes": 2,
    "recommended": true,
    "reviewerReviewCount": 25,
    "variant": { "Color": "Black", "Multipack quantity": "1" },
    "sellerName": "Walmart.com",
    "fulfilledBy": "Walmart",
    "photos": []
}
```

#### Seller offer with seller details

```json
{
    "recordType": "offer",
    "usItemId": "997508948",
    "position": 2,
    "offerCount": 2,
    "lowestOfferPrice": 64.97,
    "sellerDisplayName": "GFAP LLC",
    "sellerType": "EXTERNAL",
    "sellerUrl": "https://www.walmart.com/global/seller/102491870",
    "sellerRating": 3.83,
    "sellerReviewCount": 269,
    "price": 93.98,
    "condition": "New",
    "fulfilledByWalmart": false,
    "freeShipping": true,
    "shippingDeliveryDate": "2026-10-01T21:59:00.000Z",
    "returnWindowDays": 30,
    "sellerEmail": "goforaprofit@gmail.com",
    "sellerPhone": "+1 9046808320",
    "sellerCity": "Jacksonville",
    "sellerState": "FL"
}
```

#### Seller profile

```json
{
    "recordType": "seller",
    "sellerId": "101063684",
    "sellerDisplayName": "Paul Revere Hardware",
    "email": "sales@plantmytank.com",
    "phone": "+1 7817243740",
    "address": "5 Cordwood Cir",
    "city": "Carver",
    "state": "MA",
    "postalCode": "02330",
    "rating": 4.75,
    "reviewCount": 164,
    "status": "ACTIVE",
    "storefrontUrl": "https://www.walmart.com/global/seller/101063684"
}
```

### Key Output Fields

#### Product identity

`usItemId`, `productId`, `name`, `brand` (full record), `url`, `imageUrl`, `images`, `upc`, `model`, `manufacturerProductId`, `productType`, `categoryPath`, `categories`

#### Price

`price`, `wasPrice`, `savings`, `discountPercent`, `minPrice`, `maxPrice`, `unitPrice`, `currency`, `isRollback`, `isClearance`, `isReducedPrice`

#### Badges and placement

`badges`, `badgeKeys`, `socialProof`, `isBestSeller`, `isSponsored`, `position`, `page`, `searchQuery`, `categoryId`

#### Stock and fulfillment

`availability`, `stockMessage`, `shippingMessage`, `pickupMessage`, `deliveryMessage`, `fulfillmentOptions`, `shippingDeliveryDate`, `freeShipping`, `orderLimit`, `isPreOrder`, `locationZip`, `locationCity`, `locationState`, `locationStoreId`

#### Sellers

`sellerName`, `sellerId`, `soldByWalmart`, `sellerDisplayName`, `sellerType`, `sellerRating`, `sellerReviewCount`, `sellerUrl`, `fulfilledByWalmart`, `offerCount`, `additionalOfferCount`; on offers also `offerId`, `lowestOfferPrice`, `condition`, `shipsTo` and, with seller details, `sellerEmail`, `sellerPhone`, `sellerAddress`, `sellerCity`, `sellerState`, `sellerPostalCode`, `sellerCountry`

#### Ratings and reviews

`rating`, `reviewCount`, `ratingBreakdown`, `recommendedPercentage`, `reviewsWithTextCount`, `reviewHighlights`; on review rows `reviewId`, `title`, `text`, `submittedAt`, `userNickname`, `isVerifiedPurchase`, `isSyndicated`, `helpfulVotes`, `unhelpfulVotes`, `recommended`, `variant`, `photos`, `responses`

#### Content and returns

`shortDescription`, `description`, `highlights`, `specifications`, `warranty`, `videos`, `variantOptions`, `variants`, `returnable`, `freeReturns`, `returnWindowDays`, `returnPolicy`

### FAQ

#### Which Walmart URLs are supported?

Search (including filtered and brand searches), `/browse/` categories, `/cp/` department pages, product (`/ip/`), reviews and seller store pages, on walmart.com and walmart.ca. See the Supported Inputs table.

#### Why is `brand` empty on search results?

Walmart's search tiles do not carry the brand. Turn on `includeProductDetails` (or pass item ids) to get the full record, which has it.

#### Can I set a ZIP code or store?

Not yet. Walmart decides the store and ZIP from the visitor's location, and every full product row tells you which one it used (`locationZip`, `locationCity`, `locationState`, `locationStoreId`). Prices and stock can differ between stores.

#### How many products can one search return?

Walmart shows at most 25 pages (roughly 1,000 products) for any search or category. To go deeper, split the query by price range (`minPrice`, `maxPrice`), sub-category or sort order.

#### Why do reviews stop before the total number of ratings?

Walmart lists only reviews with text. Star-only ratings appear in the counts (`reviewCount`, `ratingBreakdown`) but never as review rows.

#### Are sponsored products included?

Yes. They are real listings shown on the page and are flagged with `isSponsored: true`, so you can drop them if you only want organic ranks.

#### Why is `productName` empty on some seller offers?

Walmart's seller-offer data does not include the product name. Offers for products found through a search or category carry the name; offers for bare item ids carry the item id and URL.

#### Does it work on walmart.ca?

Yes for products and reviews, with prices in CAD. Seller offers are available for walmart.com only.

#### Why does a run sometimes pause?

When Walmart refuses most requests for a moment, the actor waits about 20 seconds before continuing instead of wasting retries. A run where Walmart refused every attempt ends as failed with that reason, rather than as an empty success.

#### What does the actor not scrape?

Anything behind a login, carts and checkout, a seller's item catalog, and Walmart Mexico.

### Support

Open an issue on the actor's [Issues tab](https://apify.com/memo23/walmart-scraper/issues) or email <muhamed.didovic@gmail.com>.

### Additional Services

Need a custom export shape, a scheduled price monitor, or a Walmart page type this actor does not read yet? Email <muhamed.didovic@gmail.com>.

### Explore More Scrapers

- [**Amazon Product Scraper**](https://apify.com/memo23/amazon-search): products from URLs, search and detail pages
- [**Amazon Reviews Scraper**](https://apify.com/memo23/amazon-reviews-scraper): reviews with AI summary
- [**Amazon Seller Contact Scraper**](https://apify.com/memo23/amazon-sellers-scraper): seller emails, phones and ratings
- [**Wayfair Scraper**](https://apify.com/memo23/wayfair-scraper): products, prices, stock and ratings
- [**Home Depot Reviews Scraper**](https://apify.com/memo23/homedepot-reviews-scraper): ratings, text and photos

Full list at [apify.com/memo23](https://apify.com/memo23).

### 🤖 For AI Agents & LLM Apps

Compact reference for AI agents calling this actor via the [Apify MCP server](https://mcp.apify.com) or the Apify API (actor: `memo23/walmart-scraper`).

**Purpose:** Walmart.com and Walmart.ca products, customer reviews, marketplace seller offers and seller profiles from URLs, keywords, category ids or item ids.

**Minimal input:**

```json
{ "scrapeMode": "products", "searchQueries": ["coffee maker"], "maxPagesPerSearch": 1, "maxItems": 20 }
```

**Output:** one dataset row per result; `recordType` is `product`, `review`, `offer` or `seller`. Product: usItemId, name, url, price, wasPrice, discountPercent, currency, badges, rating, reviewCount, sellerName, availability, shippingMessage, position, isSponsored, plus with `includeProductDetails` brand, upc, model, specifications, images, variants, fulfillmentOptions, returnWindowDays, ratingBreakdown, reviewHighlights, locationZip. Review: usItemId, reviewId, rating, title, text, submittedAt, userNickname, isVerifiedPurchase, helpfulVotes, variant. Offer: usItemId, position, sellerDisplayName, price, condition, fulfilledByWalmart, freeShipping, sellerRating, and with `includeSellerDetails` sellerEmail, sellerPhone, sellerAddress. Seller: sellerDisplayName, email, phone, address, rating, reviewCount.

**Behaviors an agent should know:**

- Always set `maxItems`; it caps rows across the whole run. A search reads about 40 products per page, at most 25 pages.
- `scrapeMode` decides what each product becomes; seller store URLs always return a seller profile row.
- `reviewsNewerThan` switches reviews to newest-first and stops at the first older review, which keeps scheduled runs small.
- Billing is per row by type (product, full product record, review, seller offer, seller profile) plus the actor start; seller details add one seller-profile charge per seller per run. See the Pricing tab for amounts.
- No ZIP or store input: full product rows report the location Walmart used. Seller offers are walmart.com only. No login-gated data.

***

### ⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Walmart Inc., Walmart Canada Corp. or any of their subsidiaries. All trademarks mentioned are the property of their respective owners.

The scraper accesses only publicly available product, review and seller pages. It uses no authenticated endpoints, paid features, or content behind the walmart.com or walmart.ca login. Seller contact details are the business information sellers publish on their public store pages. Users are responsible for making sure their use complies with Walmart's Terms of Use, applicable data-protection law (GDPR, CCPA, CAN-SPAM, CASL and similar), and any contractual obligations of their own organization.

***

### SEO Keywords

walmart scraper, scrape walmart, walmart product scraper, walmart API, walmart.com scraper, walmart reviews scraper, walmart seller scraper, walmart price scraper, walmart.ca scraper, Apify walmart, walmart price tracker, walmart product data, walmart seller offers, walmart buy box data, walmart marketplace sellers, walmart seller contact data, walmart review analysis, walmart rollback deals, e-commerce price monitoring, retail product data, marketplace seller intelligence, product catalog enrichment

# Actor input Schema

## `scrapeMode` (type: `string`):

What each product turns into. Values: products, reviews, sellerOffers. Seller offers are available for walmart.com only. Seller store URLs always return a seller profile row. Example: products. Default: products.

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

Any walmart.com or walmart.ca URL: search (/search?q=...), category (/browse/..., /cp/...), brand or filtered search, product (/ip/...), reviews (/reviews/product/...) or seller store (/global/seller/...). Search and category URLs are paginated; filters already in a URL are kept. Example: https://www.walmart.com/search?q=coffee+maker. Default empty.

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

Keywords, one Walmart search each, on the marketplace chosen under Marketplace. Example: air fryer. Default empty.

## `categoryIds` (type: `array`):

Walmart category ids. Top-level departments are a single number (3944 = Electronics); sub-categories need the full path joined with underscores (3944_1060825). A /cp/ or /browse/ URL works here too, and a /cp/ page is resolved to its full path for you. Example: 3944_1060825. Default empty.

## `productIds` (type: `array`):

Walmart item ids (the number at the end of a product URL, e.g. 609040889), the 12-character product id (e.g. 4SZSM8SXAAJT), or product URLs. Example: 609040889. Default empty.

## `domain` (type: `string`):

Marketplace used for keywords, category ids and bare item ids. Pasted URLs keep their own site. Values: us, ca. Example: us. Default: us.

## `includeProductDetails` (type: `boolean`):

Products mode, for products found by a search or category: fetch every product page for the full record (UPC, model, description, specifications, all images, variants, all seller count, fulfillment options, return policy, star breakdown, review highlights, and the store and ZIP Walmart priced it for). One extra request per product, billed as a product detail. Product URLs and item ids always get the full record. Example: false. Default: false.

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

Sort order for keywords, category ids and pasted search or category URLs that do not set their own. Values: best_match, price_low, price_high, best_seller, rating_high, new. Example: best_seller. Default: best_match.

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

Only products at or above this price, in the marketplace currency. Applies to searches and categories. Example: 25. Default empty.

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

Only products at or below this price, in the marketplace currency. Applies to searches and categories. Example: 200. Default empty.

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

How many result pages to read per search or category, about 40 products each. Walmart shows at most 25 pages for any query. Range 1-25. Example: 3. Default: 5.

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

Reviews mode: stop after this many reviews per product. 0 = every review with text. Example: 50. Default: 100.

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

Order in which reviews are read, which decides which ones you get when a cap applies. Values: relevancy, newest, oldest, rating_high, rating_low, helpful. Example: newest. Default: relevancy.

## `reviewRatings` (type: `array`):

Only reviews with these star ratings; pick several to combine them. Leave empty for all ratings. Values: 1, 2, 3, 4, 5. Example: 1 and 2 for complaints. Default empty.

## `verifiedPurchasesOnly` (type: `boolean`):

Only reviews Walmart marks as Verified Purchase. Example: true. Default: false.

## `reviewsNewerThan` (type: `string`):

Only reviews submitted on or after this date (YYYY-MM-DD). Reviews are then read newest first and reading stops at the first older one, which makes scheduled runs cheap. Example: 2026-09-01. Default empty.

## `includeSellerDetails` (type: `boolean`):

Seller offers mode: open each marketplace seller's store page once and add its public business email, phone, address, rating and review count to that seller's offers. One request per seller, billed once per seller per run. Example: true. Default: false.

## `maxItems` (type: `integer`):

Hard cap on rows written to the dataset across the whole run: products, reviews, offers or seller profiles. Always set this. Example: 500. Default: 100.

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

How many pages are fetched at the same time. Higher is faster; lower is gentler when Walmart is refusing a lot of requests. Range 1-30. Example: 10. Default: 10.

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

How many times a page is tried, each time from a new IP address, before it is given up. Retries back off over about a minute. Range 1-10. Example: 8. Default: 8.

## `proxy` (type: `object`):

Walmart refuses datacenter IP addresses, so the actor always goes out through residential addresses in the marketplace's country. Leave this as it is; paste your own proxy URLs only if you want to use your own residential provider.

## Actor input object example

```json
{
  "scrapeMode": "products",
  "startUrls": [
    "https://www.walmart.com/search?q=coffee+maker"
  ],
  "domain": "us",
  "includeProductDetails": false,
  "sort": "best_match",
  "maxPagesPerSearch": 5,
  "maxReviewsPerProduct": 100,
  "reviewsSort": "relevancy",
  "verifiedPurchasesOnly": false,
  "includeSellerDetails": false,
  "maxItems": 20,
  "maxConcurrency": 10,
  "maxRequestRetries": 8,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# Actor output Schema

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

One row per product, review, seller offer or seller profile. The recordType field says which.

# 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 = {
    "startUrls": [
        "https://www.walmart.com/search?q=coffee+maker"
    ],
    "maxItems": 20,
    "proxy": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("memo23/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 = {
    "startUrls": ["https://www.walmart.com/search?q=coffee+maker"],
    "maxItems": 20,
    "proxy": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    },
}

# Run the Actor and wait for it to finish
run = client.actor("memo23/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 '{
  "startUrls": [
    "https://www.walmart.com/search?q=coffee+maker"
  ],
  "maxItems": 20,
  "proxy": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call memo23/walmart-scraper --silent --output-dataset

```

## MCP server setup

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