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
13 hours ago
Last modified
Categories
Share
Turn public Walmart.com US product 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.
Supported release scope: direct product details. Search, category discovery and automatic listing pagination are excluded. The input form still accepts those URL types, but their live collection attempts encountered source challenges. Use /ip/ product links for this release.
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 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 | Legacy listing-mode limit. Search/category/pagination are excluded from this release's supported scope. |
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 within the remaining count limit. An inline variant does not necessarily have a separately fetched row. |
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 direct product pages only for supported use. Search, category, sorting/filtering of listings and automatic listing pagination have not passed live acceptance and are excluded. Their controls remain in the input schema for compatibility; they are not a success claim.
- 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 variant or listing 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? That mode is excluded from the supported release. Supply product URLs directly.
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. Search and category discovery are outside the supported scope. 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.