Walmart Scraper icon

Walmart Scraper

Scrape Walmart.com by keyword, URL, or item ID. Extract prices, was-prices, sellers, marketplace offers, stock, ratings, specs, images, and reviews.…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Walmart Scraper at a glance

Walmart Scraper is a ready-to-run Apify actor from abotapi for collecting web data. Its documented output includes item id, change type (incremental mode), title, brand and price, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $1.20 per 1,000 results on the Apify Free plan and from $0.90 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Web data
Pricing
$1.20 per 1,000 results (Free plan), from $0.90 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
31 options

Scrape Walmart.com by keyword, URL, or item ID. Extract prices, was-prices, sellers, marketplace offers, stock, ratings, specs, images, and reviews. Track NEW, UPDATED, REAPPEARED, and EXPIRED items with resume and MCP export.

What Walmart Scraper can do

  • Reviews and offers ride the same request as the product page. Every walmart.com product page ships its reviews and its seller offers in the same document as the product itself, so this actor returns them from one detail read instead of a separate call per review or per offer.
  • A listing page returns full product rows for free. A search or browse page carries its whole result grid as structured data, so a listing-level pull returns price, was-price, rating, review count, seller and stock for every card with no per-product request at all.
  • Filters that are actually true. The storefront's own sort and filter parameters are sent with the request, so filtering narrows results before they count against your item cap. Sponsored tiles are injected into the grid regardless of the active filters, and this actor re-checks every row so "hide sponsored" and "sold by Walmart" mean what they say.
  • Search keywords and pasted links in one run. Mix keyword searches with pasted search, browse, shop or category links; each is walked on its own, page by page, with the storefront's own pagination bound.
  • Monitoring built in. Label every record NEW, UPDATED, REAPPEARED or EXPIRED across scheduled runs, resume an interrupted crawl, and export results through MCP connectors.
  • Structured failures. A run the storefront refuses fails loudly with a clear message instead of returning an empty dataset that looks like a search with no matches.

Choose what to collect

These inputs let you configure Walmart Scraper - Products, Prices, Sellers & Reviews. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · requiredChoose 'search' to run keyword searches and walk pasted search, browse or category links. Choose 'products' to look up specific products by their walmart.com link or item id.

Choices: search, products

queriesarrayOne or more keywords to search on walmart.com, for example 'laptop' or 'coffee maker'. Each keyword is searched separately and walked page by page.
searchUrlsarrayPaste walmart.com listing links to walk, for example https://www.walmart.com/browse/electronics/3944 or a search link you copied from your browser. Filters you had already selected in that link are kept, and this run's own filters are added on top. Product links do not belong here; use Product mode for those.
productInputsarrayOnly used when mode = products. Mix freely: full product links such as https://www.walmart.com/ip/Apple-MacBook-Air/19699754154 or bare item ids such as 19699754154.
startUrlsarrayPaste walmart.com links in one list. Product links are read as products; search, browse, shop, category and seller links are walked as listings. Works in either mode, in addition to anything entered above, except that the untouched prefilled keyword 'laptop' is not searched when Start URLs is filled and no Storefront links are given. Each entry can be a plain link or a {"url": ...} object. Each product link is read from its product page and carries the detail-enrichment unit.
maxProductsPerStartUrlintegerStop each listing link in Start URLs after this many returned products. 0 means no per-link cap (the overall Max products still applies).
enqueueProductVariantsbooleanWhen on, every size or colour variant that a product lists is read as its own record too (one extra product page each, counted in Max products; each variant record carries the detail-enrichment unit). Off by default.
Show 24 more inputs
More input fields
InputWhat it controls
sortBystringThe storefront's own sort order for search results.

Choices: best_match, price_low, price_high, best_seller, rating_high, new

brandsarrayOptional. Keep only products from these brands, exactly as the storefront spells them (for example 'Apple', 'HP', 'Lenovo'). Several brands are combined as 'any of these'.
retailerTypestringOptional. Narrow to who sells the item: Walmart itself, Pro Sellers, or marketplace sellers whose orders Walmart fulfills.

Choices: any, walmart, pro_sellers, marketplace_wfs

conditionstringOptional. Narrow to new, restored or pre-owned items.

Choices: any, new, restored, pre_owned

specialOfferstringOptional. Narrow to items currently carrying a deal flag.

Choices: any, reduced_price, clearance, rollback

minRatingstringOptional. The storefront publishes two rating buckets and this filter uses them; each returned row is also checked against the number, so a row below the bucket never reaches the dataset.

Choices: any, 4, 3

inStockOnlybooleanOptional. Hide items the storefront currently cannot sell or deliver.
excludeSponsoredbooleanOptional. Drop advertising tiles from the results. The storefront injects sponsored products into the grid regardless of the filters above, so turn this on when you want a clean, filter-true assortment view.
minPriceintegerOptional. Only keep products priced at or above this amount.
maxPriceintegerOptional. Only keep products priced at or below this amount.
fetchDetailsbooleanRead each product's own page to add brand, model, UPC, full description, specifications, all images, every seller offer, the return policy and the rating breakdown. Charged once per record enriched. Leave off for a fast, cheap listing-level pull.
includeReviewsbooleanAdd the customer reviews the product page itself publishes, each with the reviewer's public display name, rating, title, text, date and verified-purchase marker. This reads the same product page as Fetch product details, so it costs no extra request and no extra charge; it does turn detail enrichment on. Reviews take part in change detection, so leave this off for price-only monitoring.
maxReviewsintegerHow many of the product page's own reviews to keep per product, newest-first as the storefront orders them. The product page publishes up to 10, which is the ceiling here; the full rating breakdown and review counts are returned regardless.
maxItemsintegerMaximum number of records to return across the whole run. Use 0 for unlimited.
maxPagesintegerMaximum result pages walked per keyword or pasted link. 0 = walk every page the storefront offers for that search; the run then stops at Max products, at the storefront's own last page, or when a page returns nothing new.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large crawl without returning or charging for products already collected there. For recurring monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns every matching product as NEW. Later runs normally return only NEW, UPDATED and REAPPEARED products. State is kept separately for each keyword, link, filter and detail setup; use State key when you want to name or deliberately share a monitoring campaign.
stateKeystringOptional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to derive a key automatically from this run's search and filter setup.
emitUnchangedbooleanOff by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have.
emitExpiredbooleanOff by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, never when Max products capped it or when Resume was used. This returns, and bills, extra synthetic rows.
ignoreFieldsForChangesarrayOptional. Field names that must NOT count as a change in incremental mode, for example "badges" or "sponsored". A product whose only differences are in these fields is treated as UNCHANGED, so it is not returned or billed as UPDATED. Names match at any nesting depth. The fields still appear in the output of rows that are returned.
mcpConnectorsarrayOptionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write or digest. Leave empty to skip; this never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

itemIdItem ID
changeTypeChange type (incremental mode) (text)
titleTitle
brandBrand
pricePrice
wasPriceWas
currencyCurrency
priceRangeLowpriceRangeLow
priceRangeHighpriceRangeHigh
ratingRating
reviewCountReviews
sellerNameSeller
Show 41 more fields
sellerTypeSeller type
offerCountOffers
availabilityStatusAvailability
inStockIn stock (boolean)
conditioncondition
modelmodel
upcupc
categoryPathCategory
badgesbadges
sponsoredSponsored (boolean)
fulfillmentOptionsfulfillmentOptions
returnPolicyreturnPolicy
specificationsspecifications
productHighlightsproductHighlights
ratingHistogramratingHistogram
recommendedPercentagerecommendedPercentage
reviewsreviews
offersoffers
imagesimages
imageUrlImage (image)
descriptiondescription
shortDescriptionshortDescription
priceScopepriceScope
searchQuerysearchQuery
sourceUrlsourceUrl
urlURL (link)
changedFieldsChanged fields (incremental mode) (array)
firstSeenAtFirst seen (incremental mode) (date)
lastSeenAtLast seen (incremental mode) (date)
usItemIdusItemId
productIdproductId
itemTypeitemType
namename
averageRatingaverageRating
numberOfReviewsnumberOfReviews
ratingCountsratingCounts
priceInfopriceInfo
fulfillmentTypefulfillmentType
variantListvariantList
sellerIdsellerId
additionalOfferCountadditionalOfferCount

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "kind": "product",
  "itemId": "000000000000",
  "url": "https://www.walmart.com/ip/Sample-Product-Name/000000000000",
  "title": "Sample Product Name 15-inch Laptop",
  "brand": "Sample Brand",
  "model": "SAMPLE-MODEL-01",
  "upc": "0000000000000",
  "shortDescription": "A sample product description written for this example.",
  "price": 199,
  "wasPrice": 249,
  "currency": "USD",
  "rating": 4.5,
  "reviewCount": 123,
  "ratingHistogram": {
    "1": 3,
    "2": 5,
    "3": 10,
    "4": 25,
    "5": 80
  },
  "recommendedPercentage": 90,
  "sellerName": "Sample Seller",
  "sellerType": "INTERNAL",
  "offerCount": 2,
  "offers": [
    {
      "sellerName": "Sample Seller",
      "price": 199,
      "condition": "New",
      "fulfilledByWalmart": false,
      "isBuyBoxWinner": true
    },
    {
      "sellerName": "Sample Reseller",
      "price": 209.5,
      "condition": "New",
      "fulfilledByWalmart": true,
      "isBuyBoxWinner": false
    }
  ],
  "availabilityStatus": "IN_STOCK",
  "inStock": true,
  "condition": "New",
  "categoryPath": "Electronics / Sample Category / Sample Subcategory",
  "badges": [
    "Sample badge"
  ],
  "sponsored": false,
  "fulfillmentOptions": [
    "DELIVERY",
    "PICKUP",
    "SHIPPING"
  ],
  "returnPolicy": {
    "returnable": true,
    "freeReturns": true,
    "windowDays": 90,
    "text": "Free 90 day returns"
  },
  "specifications": [
    {
      "name": "Sample specification",
      "value": "Sample value"
    }
  ],
  "reviews": [
    {
      "reviewId": "000000000",
      "rating": 5,
      "title": "Sample review title",
      "text": "Sample review text written for this example.",
      "submittedAt": "1/1/2026",
      "authorNickname": "SampleShopper",
      "verifiedPurchase": true,
      "helpfulVotes": 3
    }
  ],
  "priceScope": {
    "postalCode": "00000",
    "city": "Sample City",
    "state": "ST",
    "storeId": "00000"
  },
  "searchQuery": "sample keyword",
  "sourceUrl": "https://www.walmart.com/search?q=sample+keyword",
  "resultPage": 1,
  "resultPosition": 4,
  "changeType": "NEW",
  "changedFields": [],
  "firstSeenAt": "2026-09-04T02:00:00+00:00",
  "lastSeenAt": "2026-09-04T02:00:00+00:00"
}

Ways to use this data

  • Price and stock monitoring: track prices, was-prices and availability for a product list or a category, and get alerted only to what actually changed.
  • Marketplace and seller research: compare offers, seller types and fulfillment options across the same product to study competition on a listing.
  • Catalog and assortment analysis: pull a whole category or search result to study assortment, brand coverage and pricing bands.
  • Review and reputation analysis: collect ratings, rating breakdowns and customer review text for products you sell or compete with.
  • Comparison shopping and repricing tools: feed live prices and seller data into your own pricing or comparison app through the API.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Walmart Scraper return?

The documented output for Walmart Scraper includes item id, change type (incremental mode), title, brand, price, was, currency and pricerangelow. Availability of each field depends on the source page and the selected mode.

How much does Walmart Scraper cost?

It costs $1.20 per 1,000 results on the Apify Free plan and from $0.90 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new, updated and reappeared products, and unchanged ones are not billed unless you turn emitUnchanged on.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.

Ready to collect with Walmart Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.