Walmart Price Tracker by ZIP Code & Stock Monitor avatar

Walmart Price Tracker by ZIP Code & Stock Monitor

Pricing

from $5.10 / 1,000 validated product × zip checks

Go to Apify Store
Walmart Price Tracker by ZIP Code & Stock Monitor

Walmart Price Tracker by ZIP Code & Stock Monitor

Walmart price tracker for exact products across US ZIP codes. Compare verified local prices, digital stock, fulfillment, and automatic change detection.

Pricing

from $5.10 / 1,000 validated product × zip checks

Rating

0.0

(0)

Developer

Kamer Ozkan

Kamer Ozkan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

0

Monthly active users

an hour ago

Last modified

Categories

Share

Compare the same Walmart.com products across multiple US ZIP codes in one run. See the verified selected store, local price, digital availability, seller, fulfillment, and what changed since the previous check.

Built for retail arbitrage teams, resellers, pricing analysts, and operators monitoring known products. Enter Walmart item IDs or product URLs, add ZIP codes, and run.

What you get

  • Compare exact products across up to five ZIP codes per run.
  • Spot regional price gaps, restocks, stock changes, seller changes, and fulfillment changes.
  • Keep product-and-ZIP-specific history with a stable monitorName.
  • Return every result or hide unchanged rows and keep only baselines, changes, and failures.
  • Pay $0.006 per successful validated product × ZIP check. Failed and partial checks are free. Platform and proxy usage are included.

This Actor monitors known products. It does not perform keyword search, category crawling, review collection, or full catalog discovery.

Real regional price proof

This is real output from a 100-check cloud run completed on July 22, 2026. The run delivered 100 validated results with zero final failures. The same gallon of milk showed a $1.79 price gap, a 67.8% difference from the lowest verified local price.

Requested ZIPResolved store ZIPStore IDLocal priceDigital availability
10001070943520$4.43IN_STOCK
90210915025686$3.93IN_STOCK
60601606395402$2.72IN_STOCK
33101331474303$3.12IN_STOCK
75201752043341$2.64IN_STOCK

Product: 10450114, Great Value Whole Vitamin D Milk, Gallon. Prices and availability are point-in-time Walmart.com signals. The selected store was verified for every accepted result.

The same run also found a local availability difference for product 10534289, Great Value Seasoned Potato Hash Brown Patties. It was digitally in stock in four requested markets and out of stock for requested ZIP 60601, resolved to store 5402.

Quick start

Enter Walmart item IDs or product URLs, then add up to five ZIP codes:

{
"products": [
{ "itemId": "10450118", "reference": "milk-half-gallon" },
{ "itemId": "10315355", "reference": "bread-regional-watch" }
],
"zipCodes": ["10001", "60601", "90210"],
"monitorName": "daily-us-watchlist",
"includeUnchanged": true
}

Two products across three ZIP codes create six validated checks. The current production limit is 100 product × ZIP combinations per run.

Real output example

Each dataset item represents one product × ZIP result. This baseline row comes from the same 100-check cloud run:

{
"inputRef": "diverse-002",
"itemId": "10315355",
"zipCodeRequested": "60601",
"zipCodeResolved": "60639",
"locationApplied": true,
"storeId": "5402",
"storeDistanceMiles": 6.61,
"status": "success",
"reasonCode": null,
"title": "Great Value White Round Top Bread Loaf, 20 oz",
"price": 1.78,
"currency": "USD",
"availability": "IN_STOCK",
"sellerName": "Walmart.com",
"sellerType": "WALMART",
"offerScope": "LOCAL_FULFILLMENT",
"fulfillment": {
"shipping": "AVAILABLE",
"pickup": "AVAILABLE",
"delivery": "AVAILABLE"
},
"previous": null,
"changes": [],
"isFirstObservation": true,
"fetchedAt": "2026-07-22T11:17:29.318Z",
"schemaVersion": "1.1.0"
}

Export the default dataset as JSON, CSV, Excel, XML, or JSONL. The Actor also writes an OUTPUT summary with matrix accounting, reason counts, health status, circuit-breaker state, billing evidence, time to first row, and runtime statistics.

Automatic price and stock change detection

Set a stable monitorName to compare each successful observation with the prior successful observation for the same product and ZIP.

With includeUnchanged: true, the Actor returns every validated row and attaches previous plus changes when history exists.

With includeUnchanged: false, it returns only:

  • The first baseline for each product × ZIP.
  • Rows with a real price, availability, seller, store, offer-scope, or fulfillment change.
  • Explicit failure rows.

Successfully checked but unchanged rows are hidden from the dataset. The validated check is still charged because Walmart was queried and the store context was verified.

This example shows the format produced when a later observation contains a price drop:

{
"previous": { "price": 1.78, "availability": "IN_STOCK", "storeId": "5402" },
"changes": [
{ "field": "price", "from": 1.78, "to": 1.48, "type": "PRICE_DROP" }
]
}

Use Apify schedules to run checks automatically. Connect the dataset or run events to your own webhook, Discord workflow, Make, Zapier, or another destination when you want notifications. The Actor detects and structures changes; it does not send alerts until you connect an integration.

How location validation works

A Walmart product can show different prices, availability, sellers, and fulfillment options by location. A generic product row can quietly show the wrong market, especially when a ZIP parameter is accepted but never verified.

For every product × ZIP combination, the Actor:

  • Resolves the requested ZIP to Walmart's selectable store context.
  • Pins the product request to that store.
  • Verifies the returned store ID before accepting the row.
  • Keeps zipCodeRequested separate from the selected store's physical zipCodeResolved.
  • Compares history by monitorName + itemId + ZIP, so one market never contaminates another.
  • Emits typed changes such as PRICE_DROP, PRICE_RISE, RESTOCKED, OUT_OF_STOCK, and fulfillment changes.
  • Charges only successful validated checks.

Input reference

FieldRequiredDescription
productsYes1-100 objects containing a Walmart itemId or Walmart product url; optional reference is returned as inputRef.
zipCodesYes1-5 valid five-digit US ZIP codes.
monitorNameNoStable 3-64 character name for product-and-ZIP-specific history. Required when includeUnchanged is false.
includeUnchangedNoDefaults to true. Set false for baseline/change/failure-only output.

The complete matrix must not exceed 100 checks. For example, 20 products × 5 ZIP codes is valid; 5 products × 50 ZIP codes is not. Split larger watchlists into sequential Actor tasks with different monitor names.

Production request concurrency, US residential routing, retry bounds, and systemic-failure behavior use the validated release profile rather than unsafe user-controlled tuning knobs.

Status and failure accounting

Only rows that pass store-context and critical-field validation become success.

Other outcomes remain visible and structured:

  • partial: data was present but did not meet the paid-result contract.
  • not_found: the product repeatedly resolved as unavailable or removed on a fresh session.
  • no_store: Walmart returned no selectable store for the ZIP.
  • blocked: human verification, transport defense, or the ZIP circuit breaker stopped the request.
  • timeout or invalid: explicit request or input failure.

Failed and partial rows are free. If every check fails for a systemic reason and no validated row exists, the Actor writes diagnostic OUTPUT data and fails the run instead of presenting a false green success.

Pricing

The current price is $0.006 per successfully delivered validated check, or $6 per 1,000. One validated check is one product in one ZIP.

Successful checksPrice
25$0.15
100$0.60
1,000$6.00
  • Platform and proxy usage are included.
  • Failed and partial checks are free.
  • A successful unchanged check hidden by includeUnchanged: false is charged once.
  • A row rejected by the customer's maximum run charge is not delivered and is not charged as a validated check.

Apify shows the exact estimated and final run price in Console. Start with a small test before scheduling a full 100-check matrix.

API example

Run the Walmart price monitor from Node.js:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('kamerozkan/walmart-multi-zip-monitor').call({
products: [
{ itemId: '10450118', reference: 'milk-half-gallon' },
{ itemId: '10315355', reference: 'bread-regional-watch' },
],
zipCodes: ['10001', '60601', '90210'],
monitorName: 'daily-us-watchlist',
includeUnchanged: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

You can also call the Actor through HTTP, Python, CLI, webhooks, schedules, Make, Zapier, or Apify's MCP integrations. See the Apify API documentation and dataset documentation.

Choosing this Actor vs. a general Walmart scraper

Choose this Actor when your question is:

What is the validated local price, digital availability, seller, and fulfillment state of these exact products across these exact ZIP codes? What changed since my last run?

Choose a general-purpose Walmart scraper in Apify Store when you primarily need keyword discovery, category crawling, reviews, every marketplace offer, rich catalog content, or thousands of products in one run. Those are useful but different jobs. This Actor deliberately optimizes for a bounded, auditable multi-location monitoring matrix.

Limits and data meaning

  • Walmart.com US only.
  • Maximum 100 product × ZIP checks and five ZIP codes per run.
  • Known item IDs or product URLs only; no keyword or category discovery.
  • availability, pickup, delivery, and shipping are Walmart.com's digital signals for the verified selected-store context. They are not a guarantee that a unit is physically on the shelf when a person arrives.
  • A requested ZIP may legitimately resolve to a store whose physical ZIP differs. Both values and the Walmart-reported distance remain visible.
  • Website responses and anti-automation defenses can change. Bounded retries, fresh sessions, validation, explicit failures, circuit breakers, and critical health reporting reduce silent bad data; they cannot promise uninterrupted access.

FAQ

Does this scrape every Walmart seller offer?

No. It returns the selected offer and tells you whether that offer is locally fulfillable or shipping-only. Use a seller-offer scraper if you need every marketplace offer.

Can it guarantee shelf inventory?

No online scraper can observe the physical shelf directly. This Actor verifies that Walmart's response belongs to the intended selected store; it does not convert a website signal into a shelf guarantee.

Can I monitor more than 100 checks?

Yes. Split the workload into sequential tasks of at most 100 combinations. Keep each task's monitor name stable and unique.

Why did my first change-only run return rows?

The first successful observation is the baseline. Later unchanged observations are suppressed; later real changes are emitted.

Are failures billed?

No. Failed and partial checks are free. A successful validated check is billed even when an unchanged row is hidden by change-only output.

Support

Open an issue from the Actor page if a result looks wrong or a run fails. Include the Apify run ID, requested ZIP codes, Walmart item IDs, and the expected versus actual behavior. Do not post API tokens, login details, customer information, or other personal data.

Release notes

Current release

  • Verified selected-store context for every accepted result.
  • Product-and-ZIP-specific history and typed change detection.
  • Explicit full-matrix status accounting.
  • Pay-per-result billing for successful validated checks only.
  • Dataset and OUTPUT schemas for API and AI-agent discovery.

Responsible use

This independent Actor is not affiliated with, endorsed by, or sponsored by Walmart. It processes publicly accessible product data without customer login, checkout, user-supplied cookies, or personal data. Users are responsible for complying with applicable laws and website terms in their jurisdiction.