Walmart Product Details — Independent
Pricing
from $2.90 / 1,000 product detail rows
Walmart Product Details — Independent
Extract Walmart.com US product details from direct product URLs: display prices, sellers, images, variants, UPCs and returns. Independent tool; search and category crawling are excluded from supported use.
Pricing
from $2.90 / 1,000 product detail rows
Rating
0.0
(0)
Developer
tingyou333 zhuang
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
Turn public Walmart.com US product, search and category URLs into structured product records with display prices, sellers, images, UPCs, aggregate ratings, return policies and inline variants. Use the results to enrich a catalog or compare dated public product observations.
Available functions: collect full product details, discover products from US search/category listings, follow source pagination, retain URL filters/sort and optionally visit linked variants. Each discovered product is fetched as a full detail; listing cards are never emitted as product rows. Source challenges stop with diagnostics.
A dated anonymous direct observation on 2026-09-30 collected one category page and a separate filtered two-page category sample. The two filtered products had source-selected Hanes branding and full detail rows. The source kept sort=price_low, but its displayed prices were $24 then $14. Treat source sorting as unverified; prices and order are retained as returned. Search returned a challenge in that bounded check.
This is an independent tool, not a Walmart product, partner service or endorsed integration. Walmart names and source artwork identify the data source only.
Quickstart
Paste one or more US product URLs into Start URLs. Start with a small product limit and leave proxy use disabled:
{"startUrls": [{"url": "https://www.walmart.com/ip/BLANCA-NIEVES-Laundry-Detergent-70-54-Ounce/16935510"}],"maxProductsPerStartUrl": 1,"enqueueProductVariants": true,"useProxy": false,"maxRuntimeSecs": 90}
This exact input produced one product row with two inline variants in a private 256MB run. At a limit of 1, variants do not create extra rows and enqueuedVariantIds is empty. Raising the limit and enabling variants allows separately visited variants to become additional product rows; that traversal has passed a small local check, not broad cloud coverage.
Open the dataset's Product details, Source evidence, or Variant and policy data view. Export JSON to preserve nested objects; use the tabular views for a smaller catalog extract. Check the SUMMARY key-value record for limits, skipped duplicates and failures.
The input above is ready to copy. The selected real output fields below and Latest acceptance sample describe the dated observation; current prices and availability can change.
Supported inputs
| Input | Type and default | Meaning |
|---|---|---|
startUrls | URL-object array; [] | Up to 100 distinct US product, /search or /browse///cp/ category URLs, such as {"url":"https://www.walmart.com/ip/16935510"}. Runtime also accepts legacy URL strings. Empty input produces no product rows. Request headers, cookies, custom methods and remote request-list imports are not supported. Optional userData has no effect on collection or output. |
maxProductsPerStartUrl | Integer; 10, range 0–10000 | Maximum persisted rows per start URL, including separately visited variants. 0 removes this count limit; request, time and fee limits still apply. |
enqueueProductVariants | Boolean; false | Visit discovered linked variants within remaining limits. Inline variantList is included regardless of this setting. |
includeSourceProduct | Boolean; true | Include the original public product block for detailed auditing. |
maxConcurrency | Integer; 2, range 1–4 | Concurrent detail requests. Rows are saved in discovery order. |
maxRequests | Integer; 150, range 1–1000 | Total target request-attempt limit, including redirects and retries. |
requestTimeoutSecs | Integer; 15, range 1–25 | Timeout per request. |
maxRequestRetries | Integer; 1, range 0–2 | Retry transient network/timeouts and selected server errors. Challenges and 403 responses are not retried. |
maxRuntimeSecs | Integer; 90, range 1–95 | Collection deadline. Storage and shutdown also need time within the platform run limit. |
requestIntervalSecs | Number; 0.25, range 0–5 | Minimum interval between request starts across concurrent requests, redirects and retries. 0 disables spacing. |
dnsMode | system by default; optional google-doh | Public-IP validation remains enabled in either mode. The explicit DoH option can handle local DNS that maps public sites to reserved addresses; it keeps TLS hostname validation. |
useProxy | Boolean; false | Optional user-owned proxy. Configuration or connection failures are reported explicitly. |
proxyConfiguration | Object; disabled | Apify proxy groups/country or custom proxyUrls. An enabled configuration conflicts with explicit useProxy:false. Paid proxy operation has not been live-tested and may add fees. |
maxPagesPerStartUrl | Integer; 5, range 1–25 | Bound on automatically visited listing pages. Exhausting the page bound reports LIMITED; unknown pagination also reports LIMITED instead of success. |
Products are deduplicated by usItemId across the run. A product encountered under multiple start URLs may be emitted only once. A limit is a maximum, not a guarantee of that many results. Source failures, missing detail data and limits can reduce the result count.
Output fields
A row is emitted only after full product detail data passes validation. Listing cards and error messages are not product rows.
| Fields | Type and semantics |
|---|---|
itemType, type, productId, usItemId, name, url | Identity strings. itemType is DetailProduct; productId is Walmart's internal ID, while usItemId is the US item number. type is the source class, such as VARIANT, and can be null. |
brand, brandUrl, upc, model, manufacturerProductId, rhPath, ironbankCategory, gender | Source identity/category strings or null. UPCs retain leading zeroes. |
priceInfo | Exactly five nullable display strings: price, priceDisplay, priceRange, wasPrice, unitPrice. A price such as $14.43 is a string, not a numeric amount. |
secondaryOfferPrice, offerId, offerType, availability, fulfillmentType | Source offer display price, identity and status strings or null. Secondary offer price is not a full seller-offer list. |
sellerId, sellerName, sellerAverageRating, sellerReviewCount, additionalOfferCount, transactableOfferCount | Seller strings and numeric/count fields, nullable when the source omits them. |
averageRating, numberOfReviews, ratingCounts | Numeric rating, integer review count, and star-count object with keys 1–5. These are aggregates, not review text or a complete review corpus. |
thumbnailUrl, allImages, shortDescription, description, longDescription | Image URLs and source text/HTML. description can remain null while longDescription contains separate source HTML. |
variantList | Array or null. Each entry contains imageUrl, productId, usItemId, url, allImages, five-field priceInfo, subscriptionEligible, variants, buyBoxSuppression, and availabilityStatus. The selected product may appear in its own list. |
enqueuedVariantIds | Internal product IDs admitted to the variant queue when the parent row is saved. An inline variant does not necessarily have a separately fetched row. Later deferred admissions after failed detail attempts are recorded in SUMMARY.variantAdmissionEvidence within each source, without rewriting saved parent rows. |
returnPolicy | Object or null: returnable, freeReturns, returnWindow (value, unitType), returnPolicyText, holidayReturnEnabled. |
hasCarePlans, buyBoxSuppression, isSponsored, subscriptionEligible, giftingEligibility, legalRestriction, shippingRestriction, suppressReviews, buyNowEligible, personalizable, showExploreOtherConditionsCTA | Source booleans or null. No missing restriction/eligibility flag is replaced with an invented false. |
orderMinLimit, orderLimit, badges, badge, ebooks | Source limits and optional content. Nonempty badge/ebooks forms have limited evidence; the example does not establish every possible shape. |
images, imageInfo, category, specifications, fulfillmentOptions, variantCriteria, sourceProduct | Additional source-backed fields. sourceProduct is omitted when disabled. Raw source objects retain details outside the normalized fields. |
_provenance | Source URL, capture time, response SHA-256, market/language/currency, missing fields and warnings. |
Missing values remain null; observed zero counts remain zero. A missing priceDisplay remains null even when price exists. A missing variants map and an empty map are distinguished as null versus []. Source HTML is returned as text, not executed.
The following excerpt comes from the complete real cloud output captured on 2026-09-26:
{"itemType": "DetailProduct","type": "VARIANT","productId": "69L71KUFK8CM","usItemId": "16935510","priceInfo": {"price": "$14.43","priceDisplay": "$14.43","priceRange": null,"wasPrice": null,"unitPrice": "20.5 ¢/oz"},"description": null,"secondaryOfferPrice": "$14.42","returnPolicy": {"returnable": true,"freeReturns": true,"returnWindow": {"value": 90,"unitType": "Day"},"returnPolicyText": "Free 90-day returns","holidayReturnEnabled": false},"enqueuedVariantIds": []}
Limits and coverage
- US collection evidence: direct product details retain the dated release evidence; a 2026-09-30 anonymous direct check additionally acquired one category page and saved one full detail row via explicit
google-doh. Automatic two-page search traversal passed offline replay of genuine captured listings; the corresponding detail captures were unavailable, so that replay saved no rows and correctly reported FAILED. A separate fresh category check automatically visited two pages while preserving ps=1, sort=price_low and facet=brand:Hanes and saved two distinct full details. The selected Hanes facet and both brands agree in this sample; this does not prove all 7,252 source-reported results. Sorting selection stayed price_low but the real listing prices were $24 then $14, so ascending order is unverified and contradicted by this pair. The bounded search check returned a challenge. These direct observations describe specific anonymous source responses; they do not establish larger-workload reliability. - English Walmart.com source data and source-reported USD are supported. No Canada/Mexico collection, language switching or currency conversion is provided.
- Public price, seller, stock and returns can vary with time and the source's anonymous location/offer context. There is no postal-code/store input, inventory reservation, checkout quote, historical-price guarantee or complete offer coverage.
- Source challenges, 403s and missing detail data stop with diagnostics. There is no login, personal-cookie import, CAPTCHA solving, account/cart access or hidden fallback dataset. The shipping runtime uses HTTP and does not include a browser.
- Inline variant extraction passed the documented cloud sample. Separately visiting variants passed bounded local checks; completeness across all products or packs is not guaranteed.
- The output is not a full competitor-parity claim. One recorded comparison covered 120 reference paths with no missing/type differences and one real
secondaryOfferPricevalue difference. Other products and nonempty optional branches need their own checks. - A private 256MB/120-second-cap run succeeded for the exact one-product example. This does not establish reliability, capacity or cost for larger workloads. The supported cases and unverified behavior are listed in this Limits and coverage section.
Pricing
The paid unit is one valid product detail row saved in the default dataset. Each separately saved full product detail discovered from a listing, or visited variant, is another row. Inline arrays do not create extra row events. Failed requests, duplicate rows and diagnostic records do not create result events. A valid source record may have nullable optional fields; a row charge does not guarantee every field.
| Apify plan | USD per row | USD per 1,000 rows |
|---|---|---|
| FREE | 0.005 | 5.00 |
| BRONZE | 0.0043 | 4.30 |
| SILVER | 0.0036 | 3.60 |
| GOLD | 0.0029 | 2.90 |
| PLATINUM | 0.0029 | 2.90 |
| DIAMOND | 0.0029 | 2.90 |
There is no startup event fee. FREE names the Apify subscription tier; it does not mean results are free. The Pricing tab shows the active rate before a run.
Apify platform compute, storage and transfer are charged separately, including for failed or empty runs. An explicitly enabled proxy can add provider fees. A row limit is not an all-inclusive dollar cap. Use small inputs first and inspect actual run usage. Historical owner test runs are not customer revenue or cost forecasts.
API example
The existing Actor ID is wOOw85fhlhPzQpx6p. Save the JSON from Quickstart as input.json in your current directory. Supply your token through APIFY_TOKEN; this command starts a charged run:
curl --request POST \--url 'https://api.apify.com/v2/acts/wOOw85fhlhPzQpx6p/runs?memory=256&timeout=120' \--header "Authorization: Bearer ${APIFY_TOKEN}" \--header 'Content-Type: application/json' \--data @input.json
Poll the returned run, read its SUMMARY record, then export the default dataset. Keep your token in secret storage; do not place it in a shared URL. Saved datasets can feed catalog enrichment, spreadsheets, or your existing Make/n8n workflow.
FAQ
Will this find products from a keyword or category? Supply a /search?q=... or category URL. Collection follows primary listing products to full details, carries URL filters/sort to later pages and reports source failures explicitly. One category-to-detail check and a bounded filtered two-page category check passed. Keyword search returned a challenge. Brand filtering is supported by two selected-and-matching samples; global filtering and ascending sort semantics remain unproven. Source order and prices are preserved.
Why does cap=1 return no extra variant rows? The cap includes separately visited variants. The one parent row still contains the source's inline variants.
Does a null price mean free? No. Null means the source did not provide that field. Display strings retain currency formatting.
Can I download all customer reviews? No. Only rating/review aggregates are collected.
Where are errors? In SUMMARY, not product rows. PARTIAL, LIMITED, FAILED, and EMPTY distinguish incomplete or empty outcomes. An error-only run is not reported as a successful empty result.
Can I use my own proxy? Yes, explicitly. Configuration mechanics are tested; paid proxy operation has not been live-tested and may add fees.
Is the icon a Walmart endorsement? No. It identifies the source. This tool is independently maintained.
Latest acceptance sample
The quickstart input was checked in Apify Cloud on 2026-09-26 (UTC; run finished at 2026-09-26T18:30:52.552Z). It saved 1 valid rows. The output example on this page copies real source values from that dataset; it is a dated sample, not current inventory or a current quote.
One US product, item 16935510, returned a displayed $14.43 price and two inline variants. The cap of one permitted no extra variant rows. That historical release sample did not validate search or category discovery. Separately, on 2026-09-30, an anonymous direct check acquired /browse/clothing/5438 and persisted item 17133910781 with the source-reported $99.99 display price using explicit google-doh; system DNS stopped before source HTTP with UNSAFE_DNS. This single unfiltered category example does not establish catalog-wide filtering or ordering. The separate two-page observation above supplies the bounded pagination evidence. The legacy SUMMARY field pricingActivatedByThisCode=false describes the absence of manual charge calls; dataset rows are billed by the platform at the active Pricing-tab rate.