Walmart Scraper avatar

Walmart Scraper

Pricing

from $3.50 / 1,000 overview products

Go to Apify Store
Walmart Scraper

Walmart Scraper

Scrape Walmart products by keyword, URL or item ID with required ZIP-local prices and stock. Export price, unit price, ratings, seller, fulfillment and images for price monitoring and catalog builds. HTTP Walmart scraper and API alternative — no browser.

Pricing

from $3.50 / 1,000 overview products

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Categories

Share

Walmart Scraper — ZIP-local prices, stock & SKUs

Disclaimer: Unofficial tool — not affiliated with, sponsored by, or endorsed by Walmart Inc. or its affiliates. Data is read from publicly accessible catalog pages only. No login. You are responsible for complying with applicable law and the site’s terms. No warranty on accuracy or availability. Provided for informational and research use.

US retail catalog — ZIP-local Walmart product prices and stock for price monitoring, MAP checks, and catalog fills. Pair with Amazon Search for marketplace comps.

Walmart catalogWeekly grocery adsAmazon searchTractor Supply catalog
Walmart Scraper ◄── you are hereAldi Weekly Ad Scraper · Lidl Weekly Offers ScraperAmazon Search ScraperTractor Supply Product Scraper
ZIP-local price, unit price, stockALDI US / Lidl EU flyer pricesKeyword SERP, ASIN, badgesRural-retail SKUs and specs

This Walmart scraper turns public search, category, and product pages into a structured Apify dataset. Every run requires a US ZIP, so rows carry local price, unit price, stock, pickup/delivery, seller, rating, and images. Use it as a Walmart API alternative from Python, Node.js, or an MCP assistant — HTTP scrape, no browser.


When to use this Actor

  • Walmart product scrape by keyword, product URL, search URL, category URL, or numeric item ID
  • ZIP-local price and stock for the store serving that ZIP (optional store ID pin)
  • Price monitoring and MAP checks on advertised prices, was-prices, and unit prices
  • Assortment research — ratings, review counts, sponsored flags, SNAP EBT, fulfillment
  • SKU / URL enrichment when you already have /ip/ links or usItemId values

When not to use this Actor

  • Checkout, cart, or Walmart account automation
  • Full review-text export — this Actor returns rating and review count, not review bodies
  • Store-locator crawls as a primary job (pass zip and optional storeId instead)
  • Canada / Mexico catalogs — US catalog only
  • Amazon search — use Amazon Search Scraper

Key Features

  • Required ZIP — every row is localized (price, stock, pickup/delivery, serving store)
  • Keyword search — the same terms shoppers type into Walmart search
  • URL / ID lookup/ip/ product pages, search URLs, /browse/ categories, numeric usItemId
  • Overview vs detail — fast listing cards, or enrich with UPC, description, images, variants
  • Unit price & SNAP — per-oz / per-count strings and EBT flag when the page exposes them
  • Fast HTTP — public __NEXT_DATA__ via Chrome TLS impersonation; no headless browser

Use Cases

Use caseWhat you getWhy it helps
ZIP price monitoringprice, originalPrice, unitPrice, storeIdTrack advertised Walmart prices for a local store
Stock / fulfillmentinStock, pickupAvailable, deliveryAvailableSee pickup vs shipping for that ZIP
Search harvestTitle, rating, seller, sponsored flagBuild shortlists from shopper queries
SKU / URL enrichmentUPC, description, images, variants (detail mode)Fill PIM / ERP from known item IDs
MAP / offer checksofferCount, seller, was-priceSpot extra marketplace offers on a product page

Quick Start

ZIP-local keyword search (overview):

{
"keywords": ["paper towels"],
"zip": "10001",
"scrapeMode": "overview",
"maxItems": 40,
"maxPages": 1
}

Product URL or item ID (detail):

{
"startUrls": ["https://www.walmart.com/ip/Bounty-Paper-Towels-Select-a-Size-6-Triple-Rolls/14580219389"],
"itemIds": ["14580219389"],
"zip": "75201",
"storeId": "3520",
"scrapeMode": "detail"
}

Input Parameters

ParameterTypeDefaultDescription
keywordsArraySearch terms, one per line
startUrlsArrayProduct /ip/, search, or /browse/ URLs
itemIdsArrayNumeric Walmart usItemId values
zipStringrequired5-digit US ZIP (prefill 10001)
storeIdStringemptyOptional store number to pin assortment
scrapeModeEnumoverviewoverview (listings) or detail (product-page enrich)
sortEnumbest_matchbest_match, price_low, price_high, best_seller, rating, newest
minPrice / maxPriceNumberOptional search price bounds
maxItemsInteger40Maximum dataset items per run
maxPagesInteger5Max search pages per keyword (~40 products/page)
requestDelaySecsNumber0.35Delay between HTTP requests
proxyConfigurationObjectUS residentialApify Proxy — US RESIDENTIAL required

Output

FieldDescription
usItemIdNumeric Walmart item id
titleProduct title
brandBrand / manufacturer
priceCurrent ZIP-local price
originalPriceWas-price when higher
unitPricePer-unit string when present
rating / reviewCountStars and review count
sellerNameBuy-box seller
availability / inStockStock status
pickupAvailable / deliveryAvailableFulfillment flags
snapEligibleSNAP EBT flag when exposed
isSponsoredSponsored search card
zip / storeIdRequested ZIP and serving store
urlCanonical product URL
upcUPC on detail rows
description / images / variantsProduct-page extras in detail mode
errorFetch/parse error (recordType=error, not billed)

Output example

{
"source": "walmart",
"recordType": "listing",
"usItemId": "14580219389",
"title": "Bounty Paper Towels Select-a-Size, 6 Triple Rolls",
"price": 16.94,
"unitPrice": "$2.30/100 ct",
"currency": "USD",
"rating": 4.7,
"reviewCount": 100895,
"sellerName": "Walmart.com",
"availability": "IN_STOCK",
"inStock": true,
"zip": "10001",
"storeId": "1171",
"url": "https://www.walmart.com/ip/Bounty-Paper-Towels-Select-a-Size-6-Triple-Rolls/14580219389"
}

Integration examples

Replace YOUR_TOKEN with an Apify API token. US residential proxy is required for ZIP-local assortment.

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/walmart-scraper').call({
keywords: ['paper towels'],
zip: '10001',
scrapeMode: 'overview',
maxItems: 25,
proxyConfiguration: {
useApifyProxy: true,
apifyProxyGroups: ['RESIDENTIAL'],
apifyProxyCountry: 'US',
},
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("crawloop/walmart-scraper").call(
run_input={
"keywords": ["paper towels"],
"zip": "10001",
"scrapeMode": "overview",
"maxItems": 25,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US",
},
}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL

curl "https://api.apify.com/v2/acts/crawloop~walmart-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"keywords":["paper towels"],"zip":"10001","scrapeMode":"overview","maxItems":25,"proxyConfiguration":{"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"],"apifyProxyCountry":"US"}}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/walmart-scraper.

Example prompts:

  • "Run Walmart Scraper for keyword paper towels in ZIP 10001 and return the top 20 rows as JSON"
  • "Look up Walmart item 14580219389 in detail mode for ZIP 75201 and summarize price, UPC, and stock"
  • "Scrape Walmart search milk in ZIP 10001, then chain Amazon Search Scraper for the same keyword comps"

Suite next step

After a Walmart ZIP-local pull, run Aldi Weekly Ad Scraper for US grocery circulars, Amazon Search Scraper for marketplace search comps, or Tractor Supply Product Scraper for rural-retail catalog rows.

FocusActor
Walmart ZIP-local catalogWalmart Scraper ◄── you are here
ALDI US weekly circularAldi Weekly Ad Scraper
Lidl EU weekly leafletsLidl Weekly Offers Scraper
Amazon keyword searchAmazon Search Scraper
Tractor Supply catalogTractor Supply Product Scraper
Wholesale / liquidation lots888lots Scraper
eBay sold compseBay Sold Listings Scraper

FAQ

How do I scrape Walmart with Python or Node.js?
Call crawloop/walmart-scraper with the Apify client examples above. Pass zip plus at least one of keywords, startUrls, or itemIds. Export the dataset as JSON or CSV from the run.

Why is ZIP required?
Walmart prices and stock are store-scoped. A national dump without ZIP is what generic product scrapers already sell. This Actor always localizes the run.

What is the difference between overview and detail?
Overview is one search request per page (price, ratings, stock, fulfillment). Detail fetches each product page and adds UPC, description, image gallery, variants, and return policy.

Does this include grocery aisles?
Grocery SKUs appear in search and product pages the same way as other catalog items. Pass a ZIP so unit price and pickup reflect that store. This is not a weekly-ad or store-locator Actor.

Does this include review text?
No. Each row includes star rating and review count only.

Are error rows billed?
No. error rows are not billed as listing or product results.

Why do I need residential proxy?
PerimeterX often blocks datacenter IPs. US RESIDENTIAL is the default so ZIP-local assortment can resolve.

Can I pin a specific store?
Yes — set storeId to a Walmart store number. storeId on output is the serving store used for the row.

Notes

  • Prefer US Apify RESIDENTIAL. Bare datacenter IPs often return a bot wall.
  • The digits at the end of a product URL are the canonical usItemId.
  • error rows are not billed as listing or product results.