Walmart Product Scraper - Price Tracker & Stock Checker by ZIP avatar

Walmart Product Scraper - Price Tracker & Stock Checker by ZIP

Pricing

from $0.45 / 1,000 validated product Γ— zip checks

Go to Apify Store
Walmart Product Scraper - Price Tracker & Stock Checker by ZIP

Walmart Product Scraper - Price Tracker & Stock Checker by ZIP

Walmart product scraper, price tracker and stock checker for exact items across US ZIP codes: store-verified local prices, digital stock, sellers and fulfillment. Detects price drops, restocks and seller changes across scheduled runs. Bulk multi-ZIP Walmart price comparison, no account or API key.

Pricing

from $0.45 / 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

1

Monthly active users

16 hours ago

Last modified

Share

Walmart product scraper, price tracker, and stock checker by ZIP code: enter exact Walmart.com item IDs or product URLs, add up to five US ZIP codes, and get the verified selected store, local price, digital availability, seller, and fulfillment for every product x ZIP pair - plus what changed since your previous check.

Built for retail arbitrage teams, resellers, pricing analysts, brand teams, and operators monitoring known products. No Walmart account, cookies, or API key required; platform and proxy usage are included in the price.

This Actor monitors known products. It does not perform keyword search, category crawling, review collection, or full catalog discovery; for those jobs use a general Walmart scraper (see "Choosing this Actor" below).

What you can build with it

πŸ—ΊοΈ 1. A regional price matrix for arbitrage and buying decisions

Run the same products across up to five ZIP codes and read the local price per verified store. In a 100-check cloud run on July 22, 2026, one gallon of Great Value milk showed a $1.79 gap between markets (67.8% above the lowest verified local price); the full table is in "Real regional price proof" below.

{
"products": [
{ "itemId": "10450114", "reference": "milk-gallon" },
{ "itemId": "10534289", "reference": "hash-browns" }
],
"zipCodes": ["10001", "90210", "60601", "33101", "75201"],
"monitorName": "regional-survey",
"includeUnchanged": true
}

πŸ”” 2. Price-drop and restock alerts that only fire on change

Keep a stable monitorName, schedule the run daily, set includeUnchanged: false, and connect a webhook. Unchanged rows are hidden; only baselines, changes, and failures reach the dataset. This is a real change row from the daily production monitor on 2026-09-01 (half-gallon milk, requested ZIP 10001, verified store 3520):

{
"itemId": "10450118",
"zipCodeRequested": "10001",
"zipCodeResolved": "07094",
"storeId": "3520",
"status": "success",
"title": "Great Value Milk Whole Vitamin D, Half Gallon, , 64 fl oz",
"price": 2.45,
"availability": "IN_STOCK",
"sellerName": "Walmart.com",
"sellerType": "WALMART",
"fulfillment": { "shipping": "UNAVAILABLE", "pickup": "AVAILABLE", "delivery": "AVAILABLE" },
"previous": { "price": 2.54, "availability": "IN_STOCK", "fetchedAt": "2026-08-31T16:05:41.646Z" },
"changes": [ { "field": "price", "from": 2.54, "to": 2.45, "type": "PRICE_DROP" } ],
"fetchedAt": "2026-09-01T16:05:36.288Z"
}

Change types cover price drops and increases, restocks and stock-outs, seller changes, and fulfillment changes; every change carries the previous observation as evidence.

🏬 3. Local availability checks for exact products

Before sending a customer, a driver, or a buyer to a store, check the digital pickup, delivery, and shipping state of the exact item for that ZIP. Both the requested ZIP and the ZIP Walmart actually resolved to stay visible, with the store ID and distance, so a "wrong store" result can never hide.

🏷️ 4. Price and seller intelligence for your own SKUs

Brands and marketplace sellers watch their own items across markets: is the offer fulfilled by Walmart or a marketplace seller (sellerType), did the price move below MAP in one region, did the item go out of stock in a key market? One row per product x ZIP, exportable to JSON, CSV, or Excel.

Pricing and cost examples

You pay per successfully delivered validated check (one product in one ZIP, verified store applied). Failed and partial checks are free.

EventPriceNotes
βœ… Validated check$0.003 ($3 per 1,000)Effective 16 September 2026; until 15 September 2026 the live price is $0.0006
▢️ Actor start$0.005 per GBOnce per run; the default 2 GB run is $0.01

Worked examples at the 16 September prices:

  • One-off regional survey, full 100-check matrix (20 products x 5 ZIPs): β‰ˆ $0.31
  • Daily watchlist, 2 products x 3 ZIPs with change-only output: β‰ˆ $0.03 per run β†’ β‰ˆ $0.85 per month
  • Daily full matrix, 100 checks every day: β‰ˆ $0.31 per run β†’ β‰ˆ $9.30 per month

Plan discounts of up to 30% apply on paid Apify plans. Apify shows the exact estimated and final run price in Console before every run; the Actor's pricing tab always has the current values.

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 full row was produced by the production history engine replaying the run's real New York result (the $4.43 milk row above) with a later observation, because no tracked price had yet moved naturally between the documented runs. Every field is real engine output: the price dropped and shipping opened up, and each change carries its from, to, and classified type:

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.

A real failure row from a live run on 2026-07-28, requested against a product ID that does not exist. The row names the stage and reason instead of disappearing, and rows like this are not billed:

{
"combinationId": "82c3364403bf37294218f95f",
"inputRef": "unknown-item-demo",
"itemId": "999999999041",
"zipCodeRequested": "72712",
"zipCodeResolved": null,
"locationApplied": false,
"storeId": null,
"storeDistanceMiles": null,
"status": "blocked",
"reasonCode": "HTTP_ERROR",
"reasonCodes": [
"HTTP_ERROR"
],
"failureStage": "PRODUCT_FETCH",
"message": "Walmart product 999999999041 returned HTTP 590",
"title": null,
"price": null,
"currency": null,
"availability": "UNKNOWN",
"sellerName": null,
"sellerType": null,
"offerScope": null,
"fulfillment": {
"shipping": "UNKNOWN",
"pickup": "UNKNOWN",
"delivery": "UNKNOWN"
},
"isFirstObservation": false,
"fetchedAt": "2026-07-28T20:22:20.544Z",
"schemaVersion": "1.1.0"
}

Malformed input never gets that far: a ZIP like 00000 is rejected by input validation before any check runs or bills, and the run fails with the exact field named.

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 price is $0.003 per successfully delivered validated check, or $3 per 1,000, effective 16 September 2026 (until 15 September 2026 the live price is $0.0006 per check). One validated check is one product in one ZIP. Each run also bills an Actor start of $0.005 per GB of memory (default 2 GB = $0.01).

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.