# Walmart Scraper - Search Results & Product Details (`barefoot_grade/walmart-scraper`) Actor

Search Walmart.com by keyword or paste search, browse or product links. Each product becomes one row with price, was-price, seller, availability, rating, reviews and image; add full details for description, specs, images, variants and reviews. Failures are not charged.

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

## Pricing

from $0.50 / 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 - Search Results & Product Details

Turn search words, a Walmart results link or a list of product links into clean product rows. Search Walmart.com the way you would in the search box, sort by price, best sellers or rating, and narrow by price range, or paste any Walmart search, department (browse) or shop page. Every product becomes one row with its name, current price, was-price, price range for items with options, unit price, seller, availability, rating, review count, image, category, badges such as Rollback or Best seller, delivery line and its position in the results.

Turn on full product details to add the brand, description, specifications, highlights, all images, variants (colors, sizes), model, UPC, the marketplace seller's rating, the star-rating breakdown and up to 10 recent reviews. You can also paste product links or item ids directly to get those details for specific products. No Walmart account is needed.

### Quick Start

```json
{
  "searchQueries": [
    "air fryer"
  ],
  "maxItems": 100,
  "includeDetails": false
}
```

More examples:

- Cheapest first within a price range: `{"searchQueries": ["running shoes"], "sort": "priceLowToHigh", "minPrice": 20, "maxPrice": 60}`
- Best sellers with full details: `{"searchQueries": ["coffee maker"], "sort": "bestSelling", "includeDetails": true, "maxItems": 50}`
- Specific products: `{"productUrls": ["https://www.walmart.com/ip/Apple-AirPods-4/11381374703", "5125973778"]}`
- A department or deals page: `{"searchUrls": ["https://www.walmart.com/browse/electronics/tvs/3944_1060825", "https://www.walmart.com/shop/deals"]}`

### Input

| Input | Type | Default | Meaning |
| --- | --- | --- | --- |
| `searchQueries` | array | — | Search words as you would type them on Walmart: `air fryer`, `lego star wars`, `55 inch tv`. |
| `searchUrls` | array | — | Links copied from a Walmart results page: `walmart.com/search?q=...`, `walmart.com/browse/...` or `walmart.com/shop/...`. The link's own filters and sort are kept. |
| `productUrls` | array | — | Walmart product links (`walmart.com/ip/.../123456789`) or bare item ids. Each returns one row with full details. |
| `includeDetails` | boolean | `false` | Open each search result's product page to add the full details. Slower than search results alone. |
| `maxItems` | integer | `100` | Total cap on rows for the run, across every search, link and product (up to 5,000). |
| `sort` | string | `bestMatch` | `bestMatch`, `priceLowToHigh`, `priceHighToLow`, `bestSelling`, `highestRated` or `newest`, for the search words. |
| `minPrice`, `maxPrice` | integer | — | Price range in US dollars, for the search words. |

Give at least one search, results link or product link. Product links run first, then searches and links in the order given. A product that appears in more than one search is returned once. Category landing pages (`walmart.com/cp/...`) show no product list; open one of their "Shop all" links instead and paste that.

### What it returns

The dataset contains one row per product:

| Field | Meaning |
| --- | --- |
| `usItemId`, `url` | Walmart's item id (the number at the end of a product link) and the product page. |
| `source`, `searchInput` | `search` or `product`, and the search words or link you supplied. |
| `detailLevel` | `listing` for search-result fields only, `full` when the product page was added. |
| `name`, `brand` | Product name and brand. The brand is often missing on search results and filled with full details. |
| `price`, `wasPrice`, `currency` | Current price and the crossed-out earlier price when Walmart shows one, in US dollars. |
| `minPrice`, `maxPrice`, `unitPrice` | Price range for items with options (sizes, colors) and the price per unit as shown (`33.3 ¢/oz`). |
| `isSponsored` | `true` for sponsored placements in the search results; `null` for product links. |
| `sellerName`, `sellerId`, `sellerRating`, `sellerReviewCount` | Who sells the item (Walmart.com or a marketplace seller); the seller's rating with full details. |
| `availability`, `inStock` | `IN_STOCK`, `OUT_OF_STOCK`, … and a yes/no flag. |
| `rating`, `reviewCount` | Average customer rating (1 to 5) and number of reviews. |
| `imageUrl`, `images` | Main image and up to 30 image links (all images with full details). |
| `category` | Category path, for example `Home > Appliances > Kitchen Appliances`. |
| `badges`, `deliveryText` | Badges such as `Rollback`, `Best seller`, `Clearance`, and the delivery or pickup line from the results. |
| `position`, `searchPage` | Position in this search's results (1-based, duplicates removed) and the results page it was on. |
| `description` | Product description as plain text (full details). |
| `highlights`, `specifications` | Key facts and the full specification list as `name` / `value` pairs (full details). |
| `variants` | Option groups and their values, for example `Color`: `Black`, `Navy` (full details). |
| `model`, `upc` | Model number and UPC barcode (full details). |
| `ratingBreakdown`, `recommendedPercentage` | Number of reviews per star (`"5"` to `"1"`) and the share of reviewers who recommend the item (full details). |
| `reviews` | Up to 10 recent reviews: `rating`, `title`, `text`, `date`, `author`, `positiveFeedback`, `negativeFeedback` (full details). |
| `scrapedAt` | Collection time (UTC, ISO 8601). |
| `error` | Always `null` in the dataset. Failures are reported in the run summary instead. |

Fields the product page does not show are `null` (or an empty list), never guessed.

The run summary (`OUTPUT`) reports `results`, `detailedResults`, one entry per search in `searches` (Walmart's total result count, pages read and rows delivered), `errors` with the list at `sourceErrors`, `detailErrors` for search results whose product page could not be opened, and `detailsStoppedBy` when full details had to stop early in a run.

### Example queries

- **Price monitoring:** schedule a daily run over your product links and track `price`, `wasPrice` and `availability`.
- **Assortment research:** search a category term and compare brands, sellers, ratings and price ranges.
- **Marketplace sellers:** find which sellers carry a product type and how they are rated.
- **Rollbacks and clearance:** search with `sort` set to `priceLowToHigh` and filter rows by `badges`.
- **Review research:** collect ratings, the star breakdown and recent reviews with `includeDetails`.

### Output example

```json
{
  "usItemId": "12516374178",
  "url": "https://www.walmart.com/ip/Keurig-K-Express-Essentials-Black-Single-Serve-K-Cup-Pod-Coffee-Maker/12516374178",
  "source": "search",
  "searchInput": "coffee maker",
  "detailLevel": "listing",
  "name": "Keurig K-Express Essentials Black Single-Serve K-Cup Pod Coffee Maker",
  "brand": null,
  "price": 49.47,
  "wasPrice": 54.97,
  "minPrice": null,
  "maxPrice": null,
  "unitPrice": null,
  "currency": "USD",
  "isSponsored": false,
  "sellerName": "Walmart.com",
  "sellerId": "F55CDC31AB754BB68FE0B39041159D63",
  "sellerRating": null,
  "sellerReviewCount": null,
  "availability": "IN_STOCK",
  "inStock": true,
  "rating": 4.4,
  "reviewCount": 13975,
  "imageUrl": "https://i5.walmartimages.com/seo/Keurig-K-Express-Essentials-Black-Single-Serve-K-Cup-Pod-Coffee-Maker_70d03917-65f9-480f-8391-aade09ee61ca.c44d2b2f723cb1529a4c181faed76958.jpeg",
  "images": [
    "https://i5.walmartimages.com/seo/Keurig-K-Express-Essentials-Black-Single-Serve-K-Cup-Pod-Coffee-Maker_70d03917-65f9-480f-8391-aade09ee61ca.c44d2b2f723cb1529a4c181faed76958.jpeg"
  ],
  "category": "Home > Appliances > Kitchen Appliances > Coffee Shop > Keurig Coffee Makers",
  "badges": [
    "Rollback"
  ],
  "deliveryText": "Delivery as soon as 24 mins",
  "position": 3,
  "searchPage": 1,
  "description": null,
  "highlights": [],
  "specifications": [],
  "variants": [],
  "model": null,
  "upc": null,
  "ratingBreakdown": null,
  "recommendedPercentage": null,
  "reviews": [],
  "scrapedAt": "2026-10-20T18:58:40Z",
  "error": null
}
```

### Failed searches and products

A product link that no longer exists, a link that is not a results page or a search that could not be read is reported in the run summary at `OUTPUT.sourceErrors` with its input, `code` and `message`. When the full details of a search result cannot be opened, the search result is still delivered with `detailLevel` `listing` and the product is listed in `OUTPUT.detailErrors`. If Walmart keeps turning the run away, full details stop for the rest of the run: the remaining search results are delivered without details, the run's status message says so and `OUTPUT.detailsStoppedBy` is set. Failures are never dataset rows and are not charged. If no product at all could be collected, the run ends with an error instead of finishing green with an empty dataset.

### Limits and caveats

- Walmart shows at most 25 results pages for one search (usually 40 to 60 products per page). To collect more, split a search into narrower terms or price ranges; duplicates across searches are removed.
- Only what Walmart shows publicly on walmart.com (US) is returned. Prices and availability are the ones Walmart shows to a visitor without a chosen store, so in-store prices can differ.
- Search results include sponsored products, as on Walmart; use `isSponsored` to filter them.
- Full details take a few seconds per product; search results alone come back about 50 at a time.
- At busy times Walmart may turn some requests away; those products are listed in the run summary and are not charged. Run again later for the missing ones.
- Automated access is subject to Walmart's terms; use this actor only where you have the necessary permissions and a lawful basis, and handle any personal data (such as reviewer names) in line with the privacy laws that apply to you.

### FAQ

**Do I need a Walmart account?** No. Only public product information is collected.

**What is an item id?** Walmart's number for a product: the number at the end of a product link (`walmart.com/ip/.../11381374703`). You can paste it on its own in `productUrls`.

**Can I use my own Walmart search with filters?** Yes. Set it up on Walmart, copy the link from the address bar and put it in `searchUrls`.

**How fast is it?** Search results: a few seconds per 50 products. With full details: roughly 1,000 products in an hour or two. The default run timeout is 4 hours.

### Price

**$0.0005 per product**, **$0.0014 per detailed product** ($0.0005 product + $0.0009 detail add-on), plus **$0.005 per run start**. A detailed product is a row with full product details, from `productUrls` or from a search with `includeDetails`; a search result whose details could not be opened is charged as a product. The run-start event is charged per GB of memory; the default 512 MB run is one start event. The start is charged even if the run saves no results. Failed searches and products are not charged. When your maximum charge for the run is reached, the run stops and keeps the rows already saved. Platform usage is included in these prices.

# Actor input Schema

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

What you would type in the Walmart search box, for example "air fryer" or "lego star wars". Each search is run with the sort and price filters below.

## `searchUrls` (type: `array`):

Links copied from a Walmart results page (walmart.com/search?q=..., walmart.com/browse/..., walmart.com/shop/...). The link's own filters and sort are kept. Category landing pages (walmart.com/cp/...) have no product list and are refused.

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

Walmart product links (walmart.com/ip/.../123456789) or bare item ids. Each becomes one row with the full product details.

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

Open each search result's product page to add the description, specifications, highlights, all images, variants, model, UPC, seller rating, rating breakdown and up to 10 recent reviews. Slower than search results alone.

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

Total cap on rows for the run, across every search, link and product. Walmart shows at most 25 pages per search.

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

Order of the results for the search words above, as on Walmart. Links keep their own sort.

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

Lowest price in US dollars, for the search words above.

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

Highest price in US dollars, for the search words above.

## Actor input object example

```json
{
  "searchQueries": [
    "air fryer"
  ],
  "includeDetails": false,
  "maxItems": 100,
  "sort": "bestMatch"
}
```

# Actor output Schema

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

No description

## `summary` (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": [
        "air fryer"
    ],
    "includeDetails": false,
    "maxItems": 100,
    "sort": "bestMatch"
};

// Run the Actor and wait for it to finish
const run = await client.actor("barefoot_grade/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 = {
    "searchQueries": ["air fryer"],
    "includeDetails": False,
    "maxItems": 100,
    "sort": "bestMatch",
}

# Run the Actor and wait for it to finish
run = client.actor("barefoot_grade/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 '{
  "searchQueries": [
    "air fryer"
  ],
  "includeDetails": false,
  "maxItems": 100,
  "sort": "bestMatch"
}' |
apify call barefoot_grade/walmart-scraper --silent --output-dataset

```

## MCP server setup

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