Walmart Product Scraper · Fast Go HTTP avatar

Walmart Product Scraper · Fast Go HTTP

Pricing

from $1.30 / 1,000 product scrapeds

Go to Apify Store
Walmart Product Scraper · Fast Go HTTP

Walmart Product Scraper · Fast Go HTTP

Extract Walmart.com product data by URL or item ID. Returns price, list price, stock, ratings, seller (1P/3P), shipping, images, variants, specs and 30+ more fields. Go HTTP-only with Akamai-tuned TLS + datacenter proxy rotation. Pay-per-result.

Pricing

from $1.30 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

NanoScrape

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Walmart Product Scraper

Extract Walmart.com product data by URL or item ID. Returns price, list price, unit price, stock, ratings, star breakdown, seller (1P or 3P), shipping, pickup, delivery, hi-res images, feature highlights, specifications, variants, top reviews, and 30 more fields per product. Pay-per-result, no login required.

What it does

You provide Walmart product URLs or bare item IDs. You get back clean, structured JSON, one row per product.

  • Any URL format works: /ip/12345678, /ip/product-slug/12345678, or the full share URL
  • Bare item IDs are accepted too. 5 to 12 digit numeric IDs from the URL
  • Runs 1 to 50 requests in parallel (default 10)
  • Returns 32 to 40 fields per product depending on what Walmart exposes on that PDP
  • One row per item ID. No duplicates, no filler rows, no phantom entries for invalid IDs

Sample output

{
"itemId": "5689919121",
"url": "https://www.walmart.com/ip/Apple-AirPods-Pro-Wireless-Earbuds-MagSafe-Case-USB-C/5689919121",
"title": "Apple, AirPods Pro, Wireless Earbuds with MagSafe Case (USB-C)",
"brand": "Apple",
"modelNumber": "MTJV3AM/A",
"upc": "195949052712",
"price": { "value": 199, "currency": "USD", "raw": "$199.00" },
"listPrice": { "value": 249, "currency": "USD", "raw": "$249.00" },
"stars": 4.4,
"reviewsCount": 44416,
"starsBreakdown": { "5star": 0.777, "4star": 0.073, "3star": 0.031, "2star": 0.021, "1star": 0.097 },
"inStock": true,
"availabilityStatus": "IN_STOCK",
"stockText": "In stock",
"seller": { "name": "Walmart.com", "id": "F55CDC31AB754BB68FE0B39041159D63", "type": "1P" },
"sellerType": "1P",
"categoryPath": "Electronics / Wireless / Headphones"
}

The full output also includes unitPrice, manufacturer, thumbnailImage, highResolutionImages, videosCount, features, description, shortDescription, breadCrumbs, isRollback, isClearance, isFlashDeal, isBestSeller, shipping, pickup, delivery, shipsFrom, returnPolicy, warranty, specifications, highlights, variantAttributes, variantDetails, isMultipack, multipackCount, gtin, wpid, usItemId, sku, answeredQuestions, and topReviews.

Pricing

$0.001 per actor start, plus $0.0013 per scraped product. $1.30 per 1,000 products.

You only pay for products that successfully return data. Failed fetches and invalid item IDs are not charged.

New to Apify? Every account gets a $5 free monthly platform credit, enough for around 3,700 results on this actor before you commit to paying anything. Plenty to test the full feature set.

Why this scraper

This actor is built in Go, not Node or Python. Every other Walmart scraper on this marketplace runs on CheerioCrawler, Playwright, or Python asyncio. This one ships as a single 14 MB static Go binary with an Akamai-tuned TLS fingerprint. Cold start is under a second, memory footprint is 128 MB, and every field is populated in the same request. No follow-up round-trips to fetch reviews or specs.

Walmart runs on Akamai Bot Manager, which rate-limits scrapers that reuse IPs. This actor rotates through fresh Apify datacenter session IDs on every retry (3 IPs before escalating to residential), and warms each with a homepage visit to set the ak_bmsc and bm_sv cookies before hitting the PDP. Residential fallback exists but is capped at 5% of the run. Most Walmart URLs succeed on datacenter, which is why the actor stays at $0.0013 per result.

Fields are extracted directly from Walmart's __NEXT_DATA__ JSON blob, so structured data comes out clean. No fragile CSS selectors, no half-parsed prices with stray currency symbols. Fields like starsBreakdown (a five-way rating histogram as fractions), unitPrice (with unit label), sellerType (1P vs 3P), and topReviews (up to 8 reviews with stars, text, author, and date) come out of the box.

Every product returns sellerType: "1P" when sold by Walmart or "3P" when the listing is fulfilled by a marketplace seller, plus the full seller identity block. Useful for competitive intelligence, marketplace monitoring, and avoiding third-party price traps.

Multipack titles like "Pack of 4" or "8-count" are flagged with isMultipack: true and multipackCount: 8 so you can filter them downstream or attribute reviews correctly to the parent product.

Invalid or delisted item IDs are detected via Walmart's soft-404 shell (the data.product node is null in __NEXT_DATA__) and rejected before pushing to the dataset. You are never billed for phantom rows.

Use with AI Agents (MCP)

Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or a custom agent.

Apify MCP server URL:

https://mcp.apify.com?tools=santamaria-automations/walmart-scraper

Example prompt once connected:

Use walmart-scraper to fetch the current price, rating, stock status, and seller type for Walmart item IDs 10450114, 5689919121, and 14566603957. Return a markdown table with columns: itemId, title, price, stars, reviewsCount, sellerType, stockText.

Clients that support dynamic tool discovery (Claude.ai, VS Code, Cursor) receive the full input schema automatically. Agents can call the actor with a JSON payload matching the input schema below.

Input

FieldTypeRequiredDefaultDescription
startUrlsarray of {url}no[]Walmart product URLs. Any of these formats works: /ip/id, /ip/slug/id, or the full share URL.
itemIdsarray of stringsno[]Bare numeric item IDs, 5 to 12 digits each, for example 10450114.
languagestringno"en-US"Accept-Language preference. Either en-US or es-US (Spanish copy on the same catalog).
maxItemsintegerno0Cap the total products scraped this run. 0 means unlimited.
scrapeReviewSamplebooleannotrueInclude up to 8 top reviews per product when available.
scrapeVariantsbooleannotrueInclude the list of variant item IDs with prices and availability.
zipCodestringno""Set the delivery ZIP shown on the PDP. Affects displayed price, pickup, and delivery availability.
concurrencyintegerno10Parallel requests, 1 to 50.

At least one of startUrls or itemIds must be non-empty. Duplicate item IDs (via either input) are deduplicated automatically.

Example input

{
"startUrls": [
{ "url": "https://www.walmart.com/ip/Great-Value-Whole-Vitamin-D-Milk-1-Gallon-128-fl-oz/10450114" },
{ "url": "https://www.walmart.com/ip/Apple-AirPods-Pro-Wireless-Earbuds-MagSafe-Case-USB-C/5689919121" }
],
"itemIds": ["14566603957", "2513765448"],
"language": "en-US",
"scrapeReviewSample": true,
"scrapeVariants": true,
"concurrency": 10
}

Output fields

Each field lists its JSON type in parentheses. Fields marked "situational" are only populated when Walmart exposes them on that PDP.

Core identity

  • itemId (string). The numeric Walmart item ID.
  • url (string). Canonical product page URL.
  • title (string). Product title.
  • brand (string). Brand name.
  • manufacturer (string, situational). Manufacturer name when different from brand.
  • modelNumber (string, situational). Manufacturer model number.
  • upc (string, situational). 12-digit Universal Product Code.
  • gtin (string, situational). Global Trade Item Number.
  • wpid (string, situational). Walmart Product ID (internal).
  • usItemId (string). Walmart US Item ID (same value as itemId).
  • sku (string, situational). SKU.

Pricing and stock

  • price (object). Current selling price as {value, currency, raw}.
  • listPrice (object, situational). Original struck-through price. Populated only when on sale.
  • unitPrice (object, situational). Unit price as {value, raw, unit}. Populated on consumables and bulk goods, for example {value: 0.029, raw: "2.9 ¢/fl oz", unit: "fl oz"}.
  • currency (string). Currency symbol or code.
  • inStock (boolean). True when Walmart marks the item as available.
  • availabilityStatus (string). Machine-readable status: IN_STOCK, OUT_OF_STOCK, or LIMITED_STOCK.
  • stockText (string). Human-readable status: "In stock", "Out of stock".

Ratings and social proof

  • stars (number). Average star rating 0 to 5.
  • reviewsCount (integer). Total number of reviews.
  • starsBreakdown (object). Percentage of reviews by star, as fractions summing to ~1. Example {5star: 0.82, 4star: 0.11, 3star: 0.03, 2star: 0.01, 1star: 0.03}.
  • answeredQuestions (integer, situational). Count of answered customer questions.
  • topReviews (array, situational). Up to 8 top reviews per product as [{stars, title, author, date, body}].

Media

  • thumbnailImage (string). Primary thumbnail URL.
  • highResolutionImages (array of strings). All high-resolution product image URLs.
  • videosCount (integer, situational). Number of product videos.

Content

  • features (array of strings). Feature bullet points (aggregated from productHighlights).
  • description (string). Long-form product description. May contain HTML markup.
  • shortDescription (string). Short description shown above the fold.
  • breadCrumbs (array of strings). Category breadcrumb path.
  • categoryPath (string). Slash-joined category path, for example "Food / Dairy & Eggs / Milk".
  • specifications (array of {key, value}). Full product specification table.
  • highlights (array of {key, value}). Top feature badges shown above the fold.

Badges

  • isRollback (boolean, situational). Walmart Rollback promo.
  • isClearance (boolean, situational). Clearance badge.
  • isFlashDeal (boolean, situational). Flash Deal badge.
  • isBestSeller (boolean, situational). Best Seller badge.
  • isSponsored (boolean, situational). Sponsored placement.

Shipping and fulfillment

  • shipping (object). {method, price, minDays, maxDays, text}.
  • pickup (object). In-store pickup availability as {available, storeId, storeName, text}.
  • delivery (object). Home delivery estimate as {available, minDays, maxDays, text}.
  • seller (object). {name, id, url, type}. Type is 1P (sold by Walmart), 3P (marketplace seller), or empty.
  • sellerType (string). "1P" or "3P". Duplicated from seller.type for easy filtering.
  • shipsFrom (string, situational). Ships-from entity when different from seller.
  • returnPolicy (string, situational). Return policy summary.
  • warranty (string, situational). Warranty text.

Variants

  • variantAttributes (array of strings, situational). Variant dimension labels: Color, Size, Style, Pack Size, and so on.
  • variantDetails (array, situational). Per-variant item ID plus attributes plus price plus availability.
  • isMultipack (boolean, situational). True when the item is a multipack.
  • multipackCount (integer, situational). Number of units when multipack.

Run metadata

  • zipCode (string, situational). ZIP code the page was rendered for, when explicitly set in input.
  • input (object). Original input parameters echoed back.
  • scrapedAt (string). ISO 8601 timestamp of when the row was extracted.

Common use cases

  • Repricing. Pull price, listPrice, unitPrice, and isRollback daily for a SKU catalog.
  • Stock monitoring. Track inStock, availabilityStatus, pickup.available, and delivery.available for restock alerts.
  • Catalog enrichment. Pull features, specifications, and highResolutionImages for product feeds.
  • Competitive intelligence. Compare stars, reviewsCount, starsBreakdown, and seller across competing item IDs.
  • 1P vs 3P monitoring. Watch sellerType and seller.id to detect when Walmart hands a listing to a marketplace seller, which often signals a price change.
  • Rollback tracking. Filter by isRollback: true and the ratio listPrice / price to discover live promotions.
  • Variant discovery. Use variantDetails to enumerate all sibling SKUs of a parent listing.
  • Review analytics. Pull topReviews for sentiment analysis or product-quality signals.

Notes and limits

One row per item ID per run. If you submit the same item ID via both startUrls and itemIds, it is deduplicated.

Variant item IDs are listed inside variantDetails, but each variant's full PDP is not separately fetched in v1. To enrich them, pass the variant IDs in a follow-up run.

Reviews returned: top 8 reviews per product when scrapeReviewSample=true. For the full review stream on a single PDP, use a dedicated Walmart reviews scraper.

Localization. Language toggles between en-US and es-US on the same catalog. zipCode sets the delivery region, which affects displayed price on regional promos plus pickup and delivery availability.

Invalid or delisted item IDs are detected via Walmart's soft-404 shell (the product node in __NEXT_DATA__ is null) and rejected before pushing to the dataset. Not billed as results.

Fields that may be null

Some fields are situational. They populate when Walmart shows them and stay null otherwise. This is not an extraction bug.

  • listPrice only when the product is on sale.
  • unitPrice only on consumables and bulk goods.
  • warranty and returnPolicy only when the PDP surfaces them.
  • variantAttributes and variantDetails only on parent listings with variants.
  • isBestSeller, isRollback, isClearance, isFlashDeal, isSponsored populate only when Walmart shows the badge.
  • answeredQuestions only on items with a Q&A section.
  • videosCount only when the PDP has product videos.

5 to 10 parallel requests is the sweet spot. Higher works but transient Akamai blocks become more frequent. The actor handles these via automatic retries (small extra time, no data loss). Above 20 you may start pushing residential fallback (5% cap enforced).

Retry strategy

Each item ID gets up to 3 fresh datacenter proxy IPs before escalating to residential (capped at 5% of the run). Block detection fires on HTTP 403, 412, 429, or 503, on "Robot or human?" or "Access Denied" pages, or on PDPs under 30 KB (a real Walmart PDP is 150 to 400 KB). Most runs finish with 0% residential escalation at the lowest cost tier.

Support

For issues, feature requests, or additional Walmart flows (search, category, reviews) not yet covered, please open an issue on the Issues tab of this actor. We typically respond within 24 hours.

Contact: contact@nanoscrape.com