Walmart Scraper - Products, Prices & Reviews avatar

Walmart Scraper - Products, Prices & Reviews

Pricing

from $2.20 / 1,000 results

Go to Apify Store
Walmart Scraper - Products, Prices & Reviews

Walmart Scraper - Products, Prices & Reviews

Extract Walmart product prices, ratings, availability and categories in the US, Canada and Mexico, plus US sellers and reviews. Pay per delivered row, with a separate start fee.

Pricing

from $2.20 / 1,000 results

Rating

0.0

(0)

Developer

kane liu

kane liu

Maintained by Community

Actor stats

1

Bookmarked

43

Total users

14

Monthly active users

2 hours ago

Last modified

Categories

Security

Limited permissions

Share

Walmart Scraper

Extract Walmart product prices, categories, sellers and reviews from the US, Canada and Mexico as rows you can export.

  • Product names, prices, ratings, availability and Walmart links.
  • Keyword searches, category listings and product details.
  • US seller contacts and customer reviews where published.
  • Optional variant and review rows, with a row limit for each input.
  • $3.00 per 1,000 rows on the Free plan, plus a $0.005 start fee.

What does Walmart Scraper do?

Walmart Scraper collects publicly visible data from walmart.com, walmart.ca and walmart.com.mx. Use it for price monitoring, assortment comparisons and review analysis. Each run uses one market and one mode.

  • search, browse and catalog return product listings.
  • product returns details for product URLs or item IDs.
  • departments and categoryHub return categories.
  • sellers and reviews return US seller and review rows.
  • enrichDetails adds product details to search or browse rows; it is off by default.
  • expandVariants is off by default. Product-page review previews are off with maxReviews: 0. Available secondary offers become separate rows without an extra switch. Products, offers, variants and reviews share the input's row limit; each delivered row has the same price.

What data can you extract from Walmart?

Fields depend on the mode and what Walmart publishes. rowType identifies the entity; entityKey identifies its row. Where present, parentUsItemId links a child row to its product; paginated review rows use itemId.

Product rows

FieldDescriptionExample
rowTypeEntity typeproduct
entityKeyRow identityproduct:14628565544
usItemIdWalmart item ID14628565544
nameProduct namePaper towels
productUrlWalmart product linkhttps://www.walmart.com/ip/14628565544
priceCurrent displayed price27.66
currencyPrice currencyUSD
averageRatingAverage customer rating4.7
availabilityStatusPublished stock statusIN_STOCK
sellerNameSeller nameWalmart.com
pricedForPostalCodePostal code used for the displayed price, when confirmed72712
locationStatusapplied when the page agreed on the requested location, else walmartDefaultStore:<storeId>applied

Variant rows

FieldDescriptionExample
parentUsItemIdParent product ID604342441
variantIdVariant ID123456789
variantOptionsSize, color or other options{"color":"White"}

Offer rows

FieldDescriptionExample
offerIdSeller's offer IDexample-offer-id
sellerNameSeller making this offerExample Store
priceOffer price, when shown29.99

Review rows

FieldDescriptionExample
reviewIdReview IDexample-review-id
itemIdProduct ID in paginated reviews604342441
ratingCustomer's score5
reviewTextReview textFits as expected.
verifiedPurchasePurchase verification, when shown; empty when the review shows no badgestrue
reviewSourceWhich surface produced the row (see below)ssr_reviews_paginator

Reviews come from two surfaces that share field names but cover different amounts. reviewSource says which produced the row: ssr_reviews_paginator is the reviews mode, which walks review pages to the full set; app_pdp_first_page is the first review page bundled in a product collection — treat it as a sample sized by maxReviews.

Category rows

FieldDescriptionExample
categoryIdCategory ID3944
categorySlugCategory URL nameelectronics
nameCategory nameElectronics

Seller rows

FieldDescriptionExample
catalogSellerIdNumeric storefront ID101174524
sellerDisplayNameStorefront nameExample Store
phonesPublished seller phone entries[{"value":"+1 555 0100","type":"seller"}]
emailsPublished seller email entries[{"value":"name@example.com","type":"seller"}]
leadAbsencesReasons contact fields are empty{"person":"Not on this site (no contact person)"}

Full field surface and App-only fields

Product and search rows carry two objects beyond the named columns above:

  • appOnly — values the App returns that the server-rendered page never populated.
  • appSurface — the research report's field catalogue projected onto the row, keyed by entity and report JSON path, for example appSurface.item["data.contentLayout.pageMetadata.location.city"].

The App channel answers four sibling frames inside one response. A product response is {product, contentLayout, idml, reviews}: contentLayout carries layout modules and page metadata, idml carries descriptions, specifications and nutrition facts, and reviews carries the review summary and aspects. A search response is {search, contentLayout}. All four are projected. Paths under __NEXT_DATA__ belong to the server-rendered page and never appear on these rows.

Array paths arrive as a bounded digest (count, plus a sample when it is light). Heavy nested samples and oversized container paths collapse to a shape marker (oversized with a key or entry count), because each leaf is already delivered as its own path. Nothing is dropped silently: if a row would exceed the delivery cap, whole entities are trimmed and every trim is recorded in the run diagnostics.

appSurface is deliberately wide. Ignore it when the named columns are enough; use it when auditing coverage against a field report. It honours the same sub-entity switches as the named columns: maxReviews: 0 collapses review-shaped paths to {"count": N, "dropped": "reviews_disabled"}; expandVariants: false collapses variant paths to {"count": N, "dropped": "variants_disabled"}. appSurfaceDiag records requested / present / absent plus dropped, so nothing is silently lost.

How to scrape Walmart

  1. Open Walmart Scraper in Apify Console.
  2. Enter one target, such as keyword, and choose market.
  3. Set maxResults to 3 for a small first run.
  4. Click Start and wait for completion.
  5. Download the dataset or read it through the API.

Empty input starts the form's example search for wireless earbuds, limited to 3 rows. Normal start and row charges apply. With mode: "auto", filling one target selects its mode. If you mix target types, product URLs take priority over item IDs, seller URLs, seller IDs, keywords, categories and seller shards. Check INPUT_REPORT for ignored fields.

Fill keyword or keywords. Use separate runs for different markets. Choose sort, price bounds or excludeSponsored to narrow listing rows.

Browse

Fill categoryId; categorySlug is optional. This returns products, not category rows.

Catalog

Choose mode: "catalog" and supply categoryId. facetCrawl adds category filter slices; it does not guarantee every product in a category.

Departments

Choose mode: "departments". No target is needed, and this does not become the example search.

Category hub

Choose mode: "categoryHub" with categoryId or categorySlug to collect category links. A slug alone also selects this mode automatically.

Product

Fill productUrls or usItemIds. productUrls takes walmart.com, walmart.ca or walmart.com.mx product page links (/ip/.../<item id>) and {"url": "<link>"} objects; requestsFromUrl remote lists and walmrt.us short links are not fetched — open them and paste the full product link. Separate links in one entry with whitespace or a comma directly before the next http(s):// link; commas in query parameters stay. Optional variants, secondary offers and review previews consume the same row allowance as the product.

Sellers

Use catalogSellerIds, sellerUrls, or slpShard with mode: "sellers". This mode is US-only. slpOffset skips entries within a chosen seller sitemap shard.

Reviews

Choose mode: "reviews" with product URLs or item IDs and market: "US". It reads review pages rather than just the product-page preview. Here, maxReviews: 0 uses the remaining maxResults allowance; it does not disable reviews.

Home

Choose mode: "home" with market: "US" and no target field. It reads the App home layout: the merchandised shelves and their items. Each row names its shelf (shelfModuleId, shelfModuleType, shelfZone) and carries shelfScope: "home_layout_not_catalogue". A home page is mostly banners, so a run can fill rows from one shelf; modulesRead, modulesWithItems and emptyZones separate an empty shelf from an unread one. The layout does not paginate.

What to fill in

FieldWhat to enterDefault
modeA mode described aboveauto
keyword / keywordsOne term or up to 10 terms; use one fieldEmpty; form example wireless earbuds
productUrls / usItemIdsProduct page links or numeric item IDs; {"url": ...} objects OKEmpty
catalogSellerIds / sellerUrlsNumeric seller IDs or US storefront linksEmpty
categoryId / categorySlugCategory number and optional URL nameEmpty
marketUS, CA or MXUS
maxResultsRows per input, from 1 to 50070; form prefill 3
postalCode / storeIdRequested postal code or store numberEmpty
sortbest_match, price_low, price_high, best_seller, highest_rated, newbest_match
facetListing filter such as brand:AppleEmpty
minPrice / maxPriceNonnegative price boundsEmpty
excludeSponsoredExclude sponsored listing rowsfalse
enrichDetails / enrichLimitAdd search/browse details; limit 1–50 productsfalse / 5
facetCrawl / facetCrawlMaxFacetsAdd catalog filter slices; limit 1–100 slicesfalse / 15
expandVariantsReturn available variants as separate rowsfalse
maxReviewsReview cap, 0–500; see the reviews mode above0
reviewSortReview order, for example newestrelevancy
slpShard / slpOffsetSeller shard 1–4 and starting offsetEmpty / 0

Search input

{
"keyword": "wireless earbuds",
"maxResults": 3
}

Browse input

{
"categoryId": "3944",
"maxResults": 3
}

Catalog input

{
"mode": "catalog",
"categoryId": "3944",
"facetCrawl": true,
"facetCrawlMaxFacets": 2,
"maxResults": 5
}

Departments input

{
"mode": "departments",
"maxResults": 3
}

Category hub input

{
"mode": "categoryHub",
"categoryId": "3944",
"categorySlug": "electronics",
"maxResults": 3
}

Product input

{
"usItemIds": ["604342441"],
"expandVariants": true,
"maxResults": 3
}

Sellers input

{
"catalogSellerIds": ["101174524"],
"maxResults": 1
}

Reviews input

{
"mode": "reviews",
"usItemIds": ["604342441"],
"maxReviews": 3,
"maxResults": 3
}

maxItems and limit alias maxResults. Misspelled fields are corrected, unknown ones ignored, bad filter choices dropped. productUrls takes {"url": ...} objects and mobile, review or affiliate links, skipping non-product ones. Without mode, search, category or seller links run in their mode. Unusable targets stop the run before rows are charged (INVALID_INPUT: ... names the entry position and problem category); the start fee can still apply. The INPUT_REPORT record shows how the input was read.

Output example

Illustrative product row; prices and ratings are not a current quote.

{
"source": "walmart",
"type": "product",
"rowType": "product",
"entityKey": "product:14628565544",
"mode": "search",
"market": "US",
"usItemId": "14628565544",
"name": "Paper towels",
"price": 27.66,
"currency": "USD",
"averageRating": 4.7,
"availabilityStatus": "IN_STOCK",
"sellerName": "Walmart.com",
"productUrl": "https://www.walmart.com/ip/14628565544"
}

Export the dataset as JSON, CSV, Excel, XML, RSS or an HTML table. RUN_SUMMARY contains row counts and warnings; failed runs can also write ERROR_SUMMARY.

Why use this Walmart scraper?

  • Pay per delivered row. Pages tried are not result charges; the start fee is separate.
  • Keep delivered results. Rows already written remain in the dataset after a stop or timeout. Unfinished collection is not guaranteed to be delivered.
  • Understand failures. Input errors identify the field to fix.
  • See missing data. Unavailable fields remain empty; contact fields include absence reasons.
  • Use several inputs. Collect multiple keywords, product URLs or seller IDs in one run.
  • No proxy setup. You do not need to set up proxies or supply a Walmart login.

How much does it cost to scrape Walmart?

Pay-per-event pricing includes a $0.005 start event plus delivered rows. Start billing is one event per allocated GB, with a minimum of one; the default memory uses one event. Platform usage is included.

Apify planPrice per rowPrice per 1,000 rows
Free$0.003$3.00
Starter$0.003$3.00
Scale$0.0026$2.60
Business$0.0022$2.20
Platinum$0.002$2.00
Diamond$0.0016$1.60

maxResults applies to each keyword, product URL/item ID or seller URL/ID. Browse, catalog, departments, category hub and seller-shard runs each count as one input. The default is 70; larger limits are collected in parts of 70, up to the input maximum of 500. All row types share the applicable limit.

Free Apify plan users have a 200-row cap per run and 10 runs of this Actor, set by the Actor developer. The whole run is limited by Maximum cost per run (maxTotalChargeUsd in the API), including the start charge.

Example: 3 keywords × 50 delivered rows = 150 rows. On the Free plan, 150 × $0.003 + $0.005 = $0.455, assuming one start event. Fewer delivered rows cost less.

What happens when the run timeout is too short

With automatic resume, a long collection can pause: the run shows ABORTED with a "Queued on the collection backend" message and resumes once results are ready, finishing SUCCEEDED. Rows already written are not delivered twice. The pause can occur up to 3 times per run; the default 3600-second timeout reduces the need for it. Synchronous API endpoints wait at most 300 seconds and can return an empty dataset during a pause — for larger requests, start asynchronously and read the dataset after SUCCEEDED.

Use with AI agents and the API

Apify MCP server

Add https://mcp.apify.com?tools=lentic_clockss/walmart-scraper to a client with remote MCP support. Sign in via OAuth or

Authorization: Bearer <YOUR_APIFY_TOKEN>
; the tool returns run and dataset IDs for get-dataset-items. Example prompt: "Find 3 Walmart US products for wireless earbuds and return their names, prices and product links."

Apify API

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lentic_clockss/walmart-scraper").call(
run_input={"keyword": "wireless earbuds", "maxResults": 3})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)

For async HTTP, POST the input to https://api.apify.com/v2/acts/lentic_clockss~walmart-scraper/runs with Authorization: Bearer, then

GET https://api.apify.com/v2/datasets/<datasetId>/items?format=json
once it succeeds. Connect Google Sheets, Make, Zapier, n8n, Slack, Airtable or a webhook via Integrations; use Schedules for recurring runs.

FAQ

Only collect data you have a lawful right to access. You are responsible for Walmart's terms and applicable data-protection law. Publicly visible personal data still needs a lawful basis for collection and use.

Why did my run end as ABORTED?

It may be waiting for automatic resume. Check for the queued-and-resume status message above; not every ABORTED run is a resumable pause.

How many results can I get?

Request 1–500 rows per input. Availability, filters, the run's cost limit and Free-plan limits can reduce delivery. A row limit is not a promise of that many matches.

Why are some fields empty?

Walmart may omit a field, hide seller contacts or show different details by market. leadAbsences explains missing contact data. Missing business values are not invented.

Can I get prices for my postal code?

Canada supports nearest-store selection. US prices may reflect a nearby or default Walmart location rather than the exact ZIP code. Check pricedForPostalCode; postalCode is included only when confirmed. Mexico does not apply postal-code selection. Check RUN_SUMMARY for location warnings. When the code did not take, rows still deliver and carry locationStatus: walmartDefaultStore:<storeId> naming Walmart's chosen store.

Can I collect seller contacts outside the US?

No. Seller collection is US-only. Published contacts can appear on US seller rows and enriched product rows; visibility exemptions can leave them empty. Ordinary listing rows do not provide full seller contacts.

Does product mode collect every review?

No. Product mode and search/browse enrichment provide only available product-page previews when maxReviews is positive. Use US reviews mode for pagination, within your row limits.

Is this Walmart's official API?

No. This Actor collects public storefront data. It does not access accounts, carts or order history.

Limitations

  • Only US, CA and MX markets are supported; sellers and reviews modes are US-only.
  • Listings, stock, prices and fields vary by location and collection time.
  • Category slices and pagination do not guarantee a complete catalog.
  • Variant and offer availability depends on the product page; child rows reduce the number of parent products within a row limit.
  • Seller contact people, coordinates and external websites are not supplied; a Walmart storefront link is not a seller-owned website.
  • An interrupted run may have no dataset rows if delivery has not started.

More e-commerce and marketplace scrapers from the same publisher:

Browse all of our scrapers at apify.com/lentic_clockss.

Support

Report problems or request fields through the Issues tab of this Actor's page. Include the run ID and the input you used.