# Walmart Search Scraper (`apt_marble/walmart-search-scraper`) Actor

Search Walmart by keyword or paste a search link and get every result as clean data: title, price in USD, rating and reviews, seller, image and link. Sponsored placements are flagged and organic rank shown apart. Optionally attach full product details.

- **URL**: https://apify.com/apt\_marble/walmart-search-scraper.md
- **Developed by:** [Hamza](https://apify.com/apt_marble) (community)
- **Categories:**
- **Stats:** 3 total users, 2 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 search results

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?

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 Search Scraper

Search Walmart the way a shopper would, and get every result back as clean, structured data. Type one or more keywords — or paste full Walmart search links — and receive a row for each product with its title, price in US dollars, rating and review count, seller, image and a clean link. Sponsored placements are flagged and the true organic position is reported separately, so you always know which results Walmart paid-promoted and which earned their spot. Switch on full product details and every result is enriched with its complete product record. Built for anyone who needs Walmart's search results as data: resellers tracking competitors and price bands, analysts sizing a market, sourcing teams building product lists, and brands watching where their items land in the results.

### What you can do with it

- **Turn a keyword into a dataset** — search "wireless headphones" and get back live products with price, rating, seller and rank, ready to filter and pivot.
- **See paid vs. organic placement** — every result carries a sponsored flag and its organic position, so you can measure how many top spots are ads and where the first earned result really sits.
- **Track price bands** — set a minimum and maximum price to map what a product actually sells for right now, and sort by price low-to-high or high-to-low.
- **Reuse a search you already built on Walmart** — paste the Walmart search link with all its filters and the actor reads it back; anything you set in the run overrides the link.
- **Monitor a niche on a schedule** — re-run a saved search hourly or daily and compare each fresh dataset against the last.
- **Enrich every result with the full product page** — turn the fast list into a deep dataset with full description, all images, availability, seller details and category for each result.

### What you get

One row per product. Abridged sample of a single result:

```json
{
  "query": "wireless headphones",
  "itemId": "12345678",
  "title": "Wireless Bluetooth Headphones Over Ear, 40H Playtime with Deep Bass",
  "price": { "amount": 29.99, "currency": "USD" },
  "listPrice": 49.99,
  "rating": 4.5,
  "reviewCount": 1834,
  "sellerName": "Walmart.com",
  "imageUrl": "https://i5.walmartimages.com/seo/image-abc123.jpeg",
  "productUrl": "https://www.walmart.com/ip/12345678",
  "sponsored": false,
  "rank": 1,
  "organicRank": 1,
  "page": 1,
  "fulfillmentBadge": "Free shipping",
  "detailsIncluded": false,
  "scrapedAt": "2026-08-28T12:00:00.000Z"
}
```

With **full product details** switched on, each row keeps everything above and adds the complete product record — `description`, `availability`, `category`, `brand`, all `images` and seller details — and `detailsIncluded` becomes `true`.

### Input reference

| Setting | Type | Default | What it does |
| --- | --- | --- | --- |
| Search terms or search links | list of text | `wireless headphones` | One or more keywords, or full Walmart search links, mixed in the same list. A pasted link's own filters (keyword, price range, sort) are read from it; anything you set below overrides them. **Required.** |
| Results per search | whole number | `40` | How many results to collect for each search. Walmart serves about 40 per page and the actor works through the pages automatically until this number is reached or the results run out. Maximum 2,000. |
| Sort results by | choice | `Best match` | Best match, Price low to high, Price high to low, Best sellers, Newest, or Highest rating. |
| Minimum price | number | — | Only return items priced at or above this amount in US dollars. Maximum 100,000. |
| Maximum price | number | — | Only return items priced at or below this amount in US dollars. Maximum 100,000. |
| Attach full product details | true/false | `false` | Open each result's own product page and attach the complete record. Slower, and billed separately. |
| Parallel work | whole number | `5` | How many products to work on at the same time when attaching full product details. Maximum 10. |

### Output fields

| Field | Type | Description |
| --- | --- | --- |
| `query` | text | The search term (or link) this row came from. |
| `itemId` | text | Walmart's item number for the product. |
| `title` | text | Product title as shown to shoppers. |
| `price` | object | The price as `{ amount, currency }`, always in USD. Empty amount on some items that show no fixed price. |
| `listPrice` | number | The struck-through was-price, when a discount is shown. |
| `rating` | number | Average customer rating out of 5. |
| `reviewCount` | number | Number of customer reviews. |
| `sellerName` | text | The seller's name as shown on the result (Walmart.com for items sold by Walmart). |
| `imageUrl` | text | The product's main image. |
| `productUrl` | text | Clean link to the product page. |
| `sponsored` | true/false | Whether Walmart promoted this result as an ad. |
| `rank` | number | Position in the results exactly as Walmart served them, ads included. |
| `organicRank` | number | Position counting only unpaid results; empty on sponsored rows. |
| `page` | number | Which result page the product was first found on. |
| `fulfillmentBadge` | text | Fulfillment label such as Free shipping when shown. |
| `detailsIncluded` | true/false | Whether the full product record was attached to this row. |
| `scrapedAt` | text | When the row was collected. |

### Pricing

You pay per result, with no monthly minimum.

| What you are charged for | Price |
| --- | --- |
| Search result — one result added to your dataset | **$0.70 per 1,000** |
| Full product details attached — the complete product record added to a result | **$1.50 per 1,000** |

The second charge applies only when you switch on full product details, and only for results whose own product page was successfully read; a result that can be listed but whose page cannot be opened still arrives as a row, and is not charged the second fee.

**Worked example.** A search that collects 1,000 results costs 1,000 × $0.0007 = **$0.70**. Turn on full product details and each result is enriched: add 1,000 × $0.0015 = $1.50, for **$2.20 per 1,000** all-in. A daily run collecting 500 results is about $0.35 per run, roughly $10 a month.

### Limits & what this actor cannot do

- Prices, stock and ranking are a snapshot at the moment of collection and keep changing afterwards; Walmart's ranking is not identical from one moment to the next.
- Walmart's own result count is an estimate that swings between reads, so it is never returned as a precise total. The actor returns what Walmart actually serves and reports distinct products only — the same item that Walmart repeats across nearby pages is returned once.
- There is a practical ceiling of roughly 2,000 results for any single search-and-filter combination in one run. To go deeper, split a broad search into narrower price bands and run each.
- Seller name is shown on most results but not all; where a result does not carry it, that field comes back empty rather than guessed.
- Prices come back in US dollars; Walmart is a single-currency marketplace and figures are never re-labelled into a different currency.
- Speed depends on the size of the job and on Walmart's own response times; no fixed throughput is promised.
- Walmart's terms govern automated access. You are responsible for using the data lawfully and in line with the source site's terms, and for handling any personal data in line with applicable privacy law.

### FAQ

**Do I need a Walmart account?**
No. The actor reads only what Walmart shows the public in its search results.

**Does it need my login or password?**
No. There is nothing to connect and nothing to configure — enter a search term and press start.

**Can I paste a search link I already built on Walmart?**
Yes. Paste the full Walmart search address (it contains `/search?q=`) and the actor reads its keyword, price band and sort back out. Anything you set in the run overrides the link, and a link left to its own settings is followed as-is.

**How many results can I get per search?**
Up to 2,000 per search in one run. Set a higher number to page further; the actor stops automatically when Walmart has no more fresh results.

**How is sponsored detection done?**
Sponsored status comes from Walmart's own placement data on the search page. Each row reports both its overall rank and its ad-free organic rank.

**What currency are prices in?**
Always US dollars (USD). Walmart is a single-marketplace site.

**Can I schedule it?**
Yes. Schedule it hourly, daily or weekly from the Apify console, and each run writes a fresh dataset you can compare against the last — ideal for tracking price and ranking over time.

**Is the data complete?**
It is complete for everything Walmart shows openly in its results. Where a result omits a field, such as review count on a brand-new item, the actor leaves it empty rather than guessing, and it reports distinct products rather than Walmart's shifting estimate of the total.

# Actor input Schema

## `queries` (type: `array`):

What to search for. Enter one or more keywords (for example "wireless headphones"), or paste full Walmart search links — both work, mixed in the same list. When you paste a Walmart search link, its own filters (keyword, price range, sort) are read from the link; anything you set below overrides them.

## `maxItemsPerQuery` (type: `integer`):

How many results to collect for each search. Walmart serves about 40 results per page and the actor pages through automatically until this number is reached or the results run out.

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

The order Walmart returns results in. Best match is Walmart's default relevance ranking.

## `priceMin` (type: `number`):

Only return items priced at or above this amount in US dollars. Leave empty for no lower bound.

## `priceMax` (type: `number`):

Only return items priced at or below this amount in US dollars. Leave empty for no upper bound.

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

Open each result's own product page and attach the complete record — full description, all images, availability, seller details and more. This reads one extra page per result, so it is slower and is charged separately; leave it off for a fast list of results.

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

How many products to work on at the same time when attaching full product details. Higher is faster. Leave at 5 unless you have a reason to change it.

## Actor input object example

```json
{
  "queries": [
    "wireless headphones"
  ],
  "maxItemsPerQuery": 40,
  "sort": "best_match",
  "includeDetails": false,
  "maxConcurrency": 5
}
```

# Actor output Schema

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

Every search result this run collected.

## `runSummary` (type: `string`):

What this run collected per search, and anything it could not read.

# 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 = {
    "queries": [
        "wireless headphones"
    ],
    "maxItemsPerQuery": 40,
    "sort": "best_match",
    "includeDetails": false,
    "maxConcurrency": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("apt_marble/walmart-search-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 = {
    "queries": ["wireless headphones"],
    "maxItemsPerQuery": 40,
    "sort": "best_match",
    "includeDetails": False,
    "maxConcurrency": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("apt_marble/walmart-search-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 '{
  "queries": [
    "wireless headphones"
  ],
  "maxItemsPerQuery": 40,
  "sort": "best_match",
  "includeDetails": false,
  "maxConcurrency": 5
}' |
apify call apt_marble/walmart-search-scraper --silent --output-dataset

```

## MCP server setup

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