Walmart Scraper avatar

Walmart Scraper

Pricing

$1.00 / 1,000 results

Go to Apify Store
Walmart Scraper

Walmart Scraper

Scrape Walmart product details from product, search, and category URLs. Export prices, variants, ratings, sellers, UPCs, returns, images, and specifications.

Pricing

$1.00 / 1,000 results

Rating

0.0

(0)

Developer

MLG Data

MLG Data

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

Scrape Walmart product details from product URLs, search results, and browse category pages. Export Walmart prices, seller offers, ratings, variants, images, UPCs, and return information to JSON, CSV, or a spreadsheet format. This actor provides a practical alternative to building a product catalog integration for publicly visible Walmart pages.

Give the actor a product URL for one item, or a search or browse URL to collect many products. A search result is used to discover product IDs; the actor then opens each product page and returns a full detail record. It does not turn a search card into a detail record. In a verified run for laundry detergent, 35 search products produced 35 detail records, and every record had a price, brand, seller, image, rating, review count, and UPC.

What data can you extract from Walmart?

Each dataset item describes one product page and its selected offer. Fields that Walmart does not provide for a particular item are null or an empty list. Prices are in the currency Walmart displayed for that page; the verified US sample used USD.

FieldDescriptionExample
itemTypeRecord typeDetailProduct
productIdInternal product identifier3UWETWA0X03C
usItemIdItem number used in the URL13460958790
nameProduct titleall Free Clear Liquid Laundry Detergent, 73 oz, 58 Loads
urlCanonical product pagehttps://www.walmart.com/ip/all-Liquid-FC-73oz/13460958790
brandProduct brandall
descriptionLong description with markup removed...free of perfumes and dyes...
shortDescriptionShort description with markup removedProduct summary
categoryPathOrdered category namesHousehold Essentials, Laundry, Laundry Detergents
averageRatingAverage customer rating4.7
numberOfReviewsCustomer review total23830
ratingCountsOne through five star counts{"5": 19402}
sellerNameSelected offer sellerWalmart.com
sellerIdSeller identifierF55CDC31AB754BB68FE0B39041159D63
sellerTypeSeller classificationINTERNAL
sellerAverageRatingSeller rating where available4.6 or null
sellerReviewCountSeller review total where available1200 or null
availabilityStock statusIN_STOCK
priceNumeric current price12.12
wasPriceNumeric previous price19.94 or null
unitPriceDisplayed amount per measure16.6 ¢/fl oz
currencyPrice currency codeUSD
priceInfoDisplay strings for current, previous, and unit prices{"price":"$12.12"}
fulfillmentTypeSelected offer fulfillment codeSTORE, FC, or MARKETPLACE
additionalOfferCountOther offers listed for the item10
upcProduct UPC, preserving leading zeroes072613474158
returnPolicyReturnability, window, and public policy text{"returnable":true}
shippingRestrictionShipping restriction indicator or detailfalse
imagesAll image URLs in the product recordList of image URLs
imageUrlFirst product image URLImage URL
variantListLinked variant IDs, attributes, price strings, and stockList of variant objects
specificationsProduct specification name and value pairs{"name":"Size","value":"73 oz"}
badgesPublic product flags and labelsBadge object
modelModel number when suppliedProduct model string
manufacturerProductIdManufacturer item number when suppliedProduct item string
offerIdSelected offer identifierOffer ID string

price and wasPrice are numbers suitable for comparisons. priceInfo retains the displayed strings, including a unit price such as cents per fluid ounce. ratingCounts uses keys 1 through 5; the values represent the number of ratings at each star level. variantList is inline even when separate variant collection is off. Each variant includes productId, usItemId, variants, availabilityStatus, and priceInfo. Turn on separate variant collection when you need the full product record for every linked size, scent, color, or pack count.

How to scrape Walmart

  1. Paste one or more public Walmart product, search, or browse category URLs into Start URLs. A product URL contains /ip/ and a numeric item ID; a search URL contains /search?q=.
  2. Set Max products per start URL. A direct product URL normally returns one record unless separate variant collection is enabled. Search and browse URLs can return many products.
  3. Turn on Collect variants separately if every linked variant needs its own product detail record. The per-URL limit includes these additional records.
  4. Run the actor. Open the dataset to inspect the results, then download JSON, CSV, or a spreadsheet file.

A search URL can include the filters already shown in your browser. The actor preserves those query parameters while it changes the page number. Product IDs are deduplicated across pages, sponsored placements, start URLs, and separately collected variants. The total product limit stops the run across all start URLs, including variant records.

Input

ParameterTypeDefaultDescription
startUrlsURL listRequiredWalmart product, search, or browse category pages.
maxProductsPerStartUrlInteger10Maximum full records for each start URL; includes separate variants.
enqueueProductVariantsBooleanfalseVisit linked variants and return each as a separate record.
maxItemsInteger100Overall record limit across the run; 0 removes the overall limit.
proxyConfigurationObjectEnabledConnection configuration used by the actor.

Example input for a product detail collection:

{
"startUrls": [
{"url": "https://www.walmart.com/search?q=laundry%20detergent"}
],
"maxProductsPerStartUrl": 35,
"enqueueProductVariants": false,
"maxItems": 35
}

The same input structure works for a single product: replace the search URL with https://www.walmart.com/ip/13460958790. Set enqueueProductVariants to true to add related variants, and raise maxProductsPerStartUrl if the product has more linked variants than the default limit. Each variant is fetched from its own product page before it is returned, so the record contains that variant's own price, UPC, seller, and availability where supplied.

Output example

This shortened item came from the verified 35-product run. The full record also contains the descriptions, images, specifications, badges, and all linked variants.

{
"itemType": "DetailProduct",
"productId": "3UWETWA0X03C",
"usItemId": "13460958790",
"name": "all Free Clear Liquid Laundry Detergent, 73 oz, 58 Loads",
"url": "https://www.walmart.com/ip/all-Liquid-FC-73oz/13460958790",
"brand": "all",
"categoryPath": ["Household Essentials", "Laundry", "Laundry Detergents", "Shop All Laundry Detergent"],
"averageRating": 4.7,
"numberOfReviews": 23830,
"ratingCounts": {"1": 457, "2": 226, "3": 759, "4": 2986, "5": 19402},
"sellerName": "Walmart.com",
"availability": "IN_STOCK",
"price": 12.12,
"wasPrice": null,
"unitPrice": "16.6 ¢/fl oz",
"currency": "USD",
"priceInfo": {"price": "$12.12", "priceDisplay": "$12.12", "wasPrice": null, "unitPrice": "16.6 ¢/fl oz"},
"fulfillmentType": "STORE",
"additionalOfferCount": 10,
"upc": "072613474158",
"returnPolicy": {"returnable": true, "returnWindow": {"value": 90, "unitType": "Day"}},
"variantList": [
{"productId": "3UWETWA0X03C", "usItemId": "13460958790", "variants": ["size-73", "scent-freeclear"], "availabilityStatus": "IN_STOCK", "priceInfo": {"price": "$12.12", "priceDisplay": "$12.12", "wasPrice": null, "unitPrice": "16.6 ¢/fl oz"}}
]
}

The example's previous price is null because that item did not display one. In the same verified run, five of 35 products showed a wasPrice, 33 showed a unit price, and 31 had a nonempty inline variant list. These differences reflect the product pages. A missing promotional price is not a failed extraction.

Use cases

  • Price monitoring: Collect the same item URLs on a schedule and compare numeric price and wasPrice over time. Keep usItemId as the stable join key when titles change.
  • Assortment research: Start from a relevant search or browse page, then compare brands, item numbers, categories, pack sizes, and availability across the products surfaced there.
  • Variant analysis: Inspect variantList for options on a parent product. Fetch variants separately to compare the full details for different sizes, scents, or quantities.
  • Marketplace offer review: Compare sellerName, sellerId, sellerType, fulfillmentType, and additionalOfferCount to identify the selected offer and whether other offers are listed.
  • Catalog matching: Use UPC, model, and manufacturer product ID to match the public listing with an internal catalog. Preserve UPC as text so leading zeroes survive export.
  • Merchandising checks: Track ratings, review counts, images, return policy, and specification coverage for products in a category. Empty values can identify listings that need closer review.

How much does it cost to scrape Walmart?

The configured result price is $1.00 per 1,000 product records, or $0.001 per record. The charge follows emitted records, including separately collected variants. The displayed result price includes the actor's platform usage; inspect the run and pricing display for your account's current charges before a large collection.

Records deliveredResult charge
35$0.035
500$0.50
5,000$5.00

The verified 35-record run took about one minute. Runtime varies with product page size, connection conditions, page count, and whether variant collection is enabled. A search with 35 products requires a listing page plus up to 35 product detail requests; a direct product URL needs only that product page unless variants are requested. Charges are based on records delivered, while the product limit also prevents an unexpectedly broad run.

Tips for best results

Start with a narrow search term or a specific browse category if you want a coherent product set. A broad term may return thousands of matches, but the actor stops at your chosen product limit. Search order comes from the public listing; it can change between runs, so a fixed list of product URLs is better for tracking the same items repeatedly.

Use direct /ip/ URLs when you already know the item IDs. The actor requests the current product detail for each URL, which avoids relying on listing position. A short list of product URLs also makes it easy to compare different sellers or brands in one run. Repeated item IDs are emitted only once in a run.

Leave separate variant collection off when the inline variantList is enough. Turning it on fetches the full detail page for each linked variant, which takes longer and consumes the per-URL and overall result limits. For a family with five linked variants, set maxProductsPerStartUrl to at least five if you want all five as separate records.

For larger search collections, the actor follows normal result pages first. When those pages reach their cap before the requested number of products is collected, it tries price ranges to discover more distinct IDs. The ranges are $0–25, $25–50, $50–100, $100–200, $200–500, $500–1,000, $1,000–10,000, and $10,000 and above. These are discovery ranges, not a guarantee that every product in a large search can be reached. If your start URL already contains min_price or max_price, the actor respects those filters and does not add its own ranges.

Limits

The public search used for verification reported a 12-page cap. A browse category reported a 25-page cap. Requests beyond those caps returned no products. Price range discovery can extend a search after the cap, but rankings, repeated placements, unavailable items, and the site's own limits can still prevent exhaustive collection. The actor stops when a page has no usable product IDs.

Product data depends on the public page and the selected offer at the time of collection. In the verified 35-product sample, every item had a price, brand, seller, image, rating, review count, and UPC. Only five showed a previous price. Seller rating and seller review count appeared on six. Four products had no linked variants. Values such as shipping restrictions and seller ratings should be treated as optional fields.

Availability and price can change by time, delivery area, or store context. The actor records what the page returned from its connection; it does not set a store location, sign in, enter a postal code, or inspect checkout. Search and category pages can be redirected or temporarily blocked. A blocked page may result in fewer records than the requested limit. Account-only information and private customer data are outside the actor's scope.

Automation examples

  • “Collect the public product details for these 20 Walmart item URLs. Return UPC, current price, previous price, seller, stock status, and the date of this run in a separate tracking table.”
  • “Search Walmart for laundry detergent, collect 35 detail records, and compare unit prices across brands. Flag items with missing unit prices rather than estimating them.”

These examples describe how to use the exported dataset. The actor itself returns product records; it does not calculate historical changes, estimate missing fields, or provide a complete market census.

FAQ

Yes. Put a public /ip/ URL in startUrls. The actor reads the numeric item ID, opens its product page, and returns one full product record. When separate variant collection is on, it also visits linked variants, up to the product limit.

Are search and category results full product records?

Yes. Search and browse pages supply product IDs for discovery. The actor visits each selected product page and extracts its detail data before writing a record. This is why a run over 35 products makes more requests than a listing-only extraction.

Does the actor return every variant?

The parent product contains the variants exposed on its public page in variantList. Enable enqueueProductVariants to get separate full records. The per-URL and overall limits still apply, and unavailable or missing variant pages may not produce a separate record.

Why is a field empty?

A product page may omit it. A wasPrice is commonly absent when no previous price is displayed. Seller ratings, restrictions, unit prices, variants, and specifications also vary by product. Check the public page, the selected offer, and whether the field appears there before treating a blank value as an extraction issue.

Do I need to configure a proxy?

The default connection configuration is ready for a normal run. The actor tries an ordinary connection first, can rotate its session after blocked responses, and can move to a residential connection when needed. Large or repeated runs may see different blocking behavior.

How fast is a run, and can I schedule it?

The verified 35-product collection completed in about one minute. Larger runs and separate variants take longer because each detail page is fetched. You can schedule repeat runs and compare exports by usItemId; prices and availability should be interpreted with the collection time.

Can I export to a spreadsheet?

Yes. Download the dataset in JSON, CSV, or spreadsheet format. For spreadsheet comparisons, keep usItemId and UPC as text. Numeric price and wasPrice are suitable for formulas; priceInfo preserves the exact display strings.

Is collecting this data allowed?

The actor is designed for publicly visible product information and does not access accounts or private customer records. Follow applicable law and the site's terms for your use, and avoid collecting or misusing personal information.

Integrations

The dataset can be retrieved through the platform API, exported to a spreadsheet, or sent to other systems through webhooks and scheduled runs. Use usItemId or the product URL to join records across runs. If you compare prices over time, store the run timestamp alongside each exported item, because the product record represents the page as observed during that run.

Support

Open an issue on the Issues tab; we reply within 24h and add fields on request. Include a public product or search URL, the run ID, and the field you expected. A reproducible example makes it easier to check whether the page omitted the value or the extraction needs an update.