Walmart Scraper avatar

Walmart Scraper

Pricing

from $1.20 / 1,000 product scrapeds

Go to Apify Store
Walmart Scraper

Walmart Scraper

Scrape Walmart search, category, and product pages. Extract listing data with optional product details and nested reviews. Supports ZIP-based pickup/delivery context.

Pricing

from $1.20 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Farhan Ali

Farhan Ali

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

18 hours ago

Last modified

Categories

Share

Walmart Scraper creates a structured dataset of product records collected from Walmart.com. Each dataset item represents one product and can include the item identifier, title, brand, price, rating, review count, availability, seller, store context, and β€” when enabled β€” full product details and nested customer reviews. Query the source using search keywords or Walmart search, category, or product URLs, control the result limit with maxItems, and retrieve records through the Apify Dataset API or export them as JSON, CSV, Excel, or HTML.

Dataset at a glance

PropertyValue
Sourcewalmart.com
Record unitOne product listing
Input methodsSearch keywords, search/category/product URLs, optional US ZIP code
Main identifiersusItemId, url
DeliveryApify Dataset and API
Export formatsJSON, CSV, Excel, HTML
Update modelFresh records per Actor run
PricingPay per event, from $1.50 per 1,000 products

Coverage and available records

The Actor collects products from three source types:

  • Search results β€” products returned for one or more searchQueries.
  • Category/browse pages β€” products on /browse and /cp URLs.
  • Product pages β€” a single product given a /ip URL.

Supported behavior:

  • Optional US ZIP code (zipCode) sets store pickup/delivery context, and fulfillmentMethod filters listings to Pickup, Delivery, or Shipping.
  • Optional product details (scrapeProductDetails) enriches each product with description, images, and category path.
  • Optional product reviews (scrapeProductReviews) attaches a nested reviews array to each product row; reviews are never stored as separate dataset rows.
  • Pagination and result limits are controlled with maxPages and maxItems (0 = unlimited).

Fields such as description, categoryPath, storeName, and reviews are conditional and present only when the corresponding option is enabled or when Walmart returns the value.

Data dictionary

FieldTypeNullableDescriptionExample
sourceQuerystringNoSearch term or URL that produced the recordtomatoes
usItemIdstringNoWalmart item identifier930274152
namestringNoProduct titleFresh Roma Tomato, Each
brandstringYesProduct brandMarketside
urlstringNoProduct page URLhttps://www.walmart.com/ip/930274152
imageUrlstringYesPrimary product image URLhttps://i5.walmartimages.com/...
pricenumberYesCurrent price0.98
currencystringYesPrice currency codeUSD
unitPricestringYesPer-unit price label$0.98 each
averageRatingnumberYesAggregate star rating4.5
numberOfReviewsnumberYesTotal review count182
availabilityStatusstringYesStock statusIn stock
sellerNamestringYesSeller nameWalmart
zipCodestringYesZIP used for store context72076
storeNamestringYesStore name when ZIP is setSupercenter #5700
descriptionstringYesFull product description (details enabled)...
categoryPatharrayYesCategory breadcrumb (details enabled)["Food", "Produce"]
reviewsScrapednumberYesCount of attached reviews20
reviewsarrayYesNested review objects (reviews enabled)[{...}]

Use usItemId (fallback url) as the stable field for deduplication.

Example dataset record

{
"sourceQuery": "tomatoes",
"usItemId": "930274152",
"name": "Fresh Roma Tomato, Each",
"brand": "Marketside",
"url": "https://www.walmart.com/ip/930274152",
"imageUrl": "https://i5.walmartimages.com/asr/example.jpeg",
"price": 0.98,
"currency": "USD",
"unitPrice": "$0.98 each",
"averageRating": 4.5,
"numberOfReviews": 182,
"availabilityStatus": "In stock",
"sellerName": "Walmart",
"zipCode": "72076",
"storeName": "Supercenter #5700"
}

This record was produced by a search for tomatoes with zipCode set to 72076 and details/reviews disabled.

Query and input reference

InputTypeRequiredDefaultAccepted valuesDescription
searchQueriesarrayNo["tomatoes"]Any stringsKeywords to search on Walmart.com.
startUrlsarrayNoβ€”Search, /browse, /cp, /ip URLsWalmart URLs to start from.
zipCodestringNoβ€”US ZIPSets store pickup/delivery context.
fulfillmentMethodstringNoβ€”Pickup, Delivery, ShippingFulfillment filter after ZIP is set.
scrapeProductDetailsbooleanNofalsetrue / falseFetch full product details (billed as product-details).
scrapeProductReviewsbooleanNofalsetrue / falseAttach nested reviews (billed as product-reviews).
maxReviewsintegerNo200 = allMax reviews attached per product.
maxItemsintegerNo00 = unlimitedMax product records.
maxPagesintegerNo00 = unlimitedMax listing pages per query/URL.
maxConcurrencyintegerNo51–20Parallel workers for details/reviews.
proxyConfigurationobjectNoApify residentialProxy editorProxy settings.

Minimal request:

{ "searchQueries": ["tomatoes"], "maxItems": 20 }

Advanced request (store context plus details and reviews):

{
"searchQueries": ["tomatoes"],
"zipCode": "72076",
"fulfillmentMethod": "Pickup",
"scrapeProductDetails": true,
"scrapeProductReviews": true,
"maxReviews": 20,
"maxItems": 100,
"maxPages": 1,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

Retrieve the data through the API

  1. Start the Actor with a JSON input.
  2. Wait for the run to finish, or use the synchronous endpoint for small jobs.
  3. Retrieve items from the run's default dataset.
  4. Paginate or export the dataset.

Python example:

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("datascrapers/walmart-scraper").call(
run_input={"searchQueries": ["tomatoes"], "maxItems": 50}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["name"], item.get("price"))

For other languages, use the generated API tab on the Actor page.

Data quality and record handling

  • Completeness β€” listing fields (usItemId, name, url, price) are returned when Walmart exposes them; enrichment fields are conditional on the corresponding option.
  • Source changes β€” Walmart page structure changes can cause individual fields to come back empty; rows are still written with the fields that were found.
  • Deduplication β€” the Actor writes one row per product per run and does not persist dedup state across runs. Deduplicate on usItemId (fallback url) when merging runs.
  • Retry/error behavior β€” detail and review enrichment fail soft, so a failed detail call does not discard the listing row already collected.
  • Normalization β€” price is numeric with a separate currency code; unitPrice keeps Walmart's display string.
  • Raw vs derived β€” averageRating and numberOfReviews are read from the listing; reviewsScraped counts the reviews the Actor attached.

Export and pipeline examples

DestinationRecommended methodTypical use
PostgreSQL/SupabaseDataset API or webhook consumerStore product snapshots for dashboards
Google SheetsApify integrationShare price/availability tables
S3/cloud storageScheduled export or integrationArchive daily catalog snapshots

Pricing and cost examples

Billing is pay per event. You are not charged Apify platform usage on top of these events.

EventWhen chargedPrice
productEach product row written$1.50 per 1,000
product-detailsEach product with details fetched (when enabled)$1.50 per 1,000
product-reviewsEach individual review attached (when enabled)$1.50 per 1,000
RecordsEstimated base cost
1,000 products$1.50
10,000 products$15.00

Estimates assume listings only. Details and reviews add events at the same rate, and Apify plan discounts may reduce the per-event price.

Limitations and responsible data use

  • The Actor reads publicly accessible Walmart.com listing data.
  • Availability and source changes can produce empty or partial fields.
  • No guarantee of historical snapshots unless you store results yourself.
  • You are responsible for compliance with applicable terms, privacy, and legal requirements when using the data.

Dataset questions

What does one dataset item represent?

One Walmart product listing. Reviews and product details are nested on the same row rather than written as separate items.

Which field should I use as a unique identifier?

usItemId is the most stable Walmart item identifier; use url as a fallback.

Are fields nullable or conditional?

Many listing fields (brand, averageRating, sellerName) are null when Walmart does not return them. Enrichment fields (description, categoryPath, reviews) are present only when the matching option is enabled.

Can I retrieve the records as CSV or JSON?

Yes. Export from the Output tab as JSON, CSV, Excel, or HTML, or read the dataset through the Apify API.

How do I paginate large datasets?

Use maxPages to limit listing pages and maxItems to cap the number of product records. For API retrieval, paginate the default dataset items endpoint.

Does the Actor return historical data?

No. Each run captures the current state of the listings at run time.

What counts as a billable result?

Each product row is a product event. When enabled, each detail fetch is a product-details event and each attached review is a product-reviews event.

Data Scrapers support

Need an additional field, record type, or export workflow? Contact Data Scrapers at stardustspotlight@gmail.com. Include a sample source URL, required fields, expected record volume, and preferred delivery format.