Walmart Product & Price Scraper
Pricing
Pay per event
Walmart Product & Price Scraper
Scrape Walmart.com (US) product and price data by search term, product URL, or item ID — title, current price, was/strike-through price, in-stock status, rating, review count, and Walmart-vs-marketplace seller type. Export to JSON or CSV.
Pricing
Pay per event
Rating
0.0
(0)
Developer
DevilScrapes
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
🎯 What this scrapes
Walmart runs no public product-data API. This Actor looks up products three ways — search term, direct product URL, or Walmart item ID — and returns one clean schema across all three: current + was price, stock status, rating, and an explicit seller_type field (Walmart-fulfilled vs third-party marketplace) that most Walmart scrapers leave out. Built on curl-cffi with browser TLS impersonation.
🔥 What we handle for you
- 🛡️ Browser fingerprint rotation —
curl-cffiimpersonates real Chrome / Firefox / Safari TLS handshakes so the target sees a browser, not Python. - 🌐 Residential proxy rotation via Apify Proxy — fresh session and exit IP on every block.
- 🔁 Retries with exponential backoff on
408 / 429 / 5xx— up to 5 attempts per page,Retry-Afterhonoured. - 🧱 Rate-limit-aware pacing — when the target pushes back, we slow down instead of getting banned.
- 🧊 Clean, typed dataset rows — Pydantic-validated, ISO-8601 timestamps, stable IDs, JSON / CSV / Excel export straight from the Apify Console.
- 💰 Pay-Per-Event pricing — you only pay for results that hit your dataset. No data, no charge.
💡 Use cases
- Reseller/arbitrage margin checks — pull current price + stock across a candidate SKU list before buying to resell.
- Retail price intelligence — track price and "was" price movement across a competitor catalog by search term or item ID.
- Marketplace-vs-Walmart mix analysis — use
seller_typeto see which listings are Walmart-fulfilled vs third-party, at scale. - Stock/availability monitoring — schedule re-runs and diff
in_stock/availability_statusfor restock alerts. - Catalog enrichment — resolve a list of Walmart item IDs into title, brand, rating, and image in one call.
⚙️ How to use it
- Click Try for free at the top of the page.
- Fill in the input form — most fields have sensible defaults.
- Click Start. Output streams into the run's dataset.
- Export from Storage → Dataset as JSON, CSV, or Excel — or fetch via the API.
📥 Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
searchTerms | array | no | [] | Search queries to run on walmart.com. Each term returns up to maxResultsPerSearch products. |
productUrls | array | no | [] | Direct Walmart product-detail-page URLs (walmart.com/ip/...). |
productIds | array | no | [] | Walmart usItemId values — the numeric (8-11 digit) trailing segment of a /ip/{slug}/{itemId}… |
maxResultsPerSearch | integer | no | 20 | Cap on the number of products returned per search term. |
includeOutOfStock | boolean | no | True | When off, out-of-stock rows are dropped (and not billed). |
proxyConfiguration | object | no | {'useApifyProxy': True, 'apifyProxyGroups': ['RESIDENTIAL'], 'apifyProxyCountry': 'US'} | Apify Proxy spec. Walmart hard-blocks Apify's shared datacenter pool (block-interstitial on every request) —… |
Example input
{"searchTerms": ["nintendo switch"],"productIds": ["487976361"],"maxResultsPerSearch": 2,"includeOutOfStock": true,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "US"}}
📤 Output
Every row is one dataset item.
| Field | Type | Notes |
|---|---|---|
item_id | string | Walmart usItemId. |
title | string | Product name. |
brand | ['string', 'null'] | Brand name. |
url | string | Canonical /ip/{slug}/{itemId} product URL. |
price_current | ['number', 'null'] | Current listed USD price. |
price_was | ['number', 'null'] | Strike-through/list price, only if present — never copied from price_current. |
currency | string | Always USD. |
in_stock | boolean | Derived from the availability field. |
availability_status | ['string', 'null'] | Raw Walmart availability status string. |
rating_average | ['number', 'null'] | Average star rating. |
rating_count | ['integer', 'null'] | Review count. |
seller_name | ['string', 'null'] | Offer's seller display name. |
seller_type | ['string', 'null'] | walmart (sold/shipped by Walmart) or marketplace (third-party seller). |
image_url | ['string', 'null'] | Primary product image URL. |
search_term | ['string', 'null'] | Populated only for search-mode rows. |
scraped_at | string | ISO 8601 UTC row-creation time. |
Example output
{"item_id": "487976361","title": "Nintendo Switch OLED Model - White","brand": "Nintendo","url": "https://www.walmart.com/ip/Nintendo-Switch-OLED-White/487976361","price_current": 349.0,"price_was": 399.99,"currency": "USD","in_stock": true,"availability_status": "IN_STOCK","rating_average": 4.8,"rating_count": 3241,"seller_name": "Walmart.com","seller_type": "walmart","image_url": "https://i5.walmartimages.com/asr/example.jpeg","search_term": null,"scraped_at": "2026-08-01T17:40:00.000Z"}
💰 Pricing
Pay-Per-Event — you pay only when these events fire:
| Event | USD | What it is |
|---|---|---|
actor-start | $0.02 | One-off warm-up charge per run |
result-item | $0.002 | Per unique dataset item |
Example: 1 000 results at the rates above ≈ $2.02. No subscription, no minimum, no card to start — Apify gives every new account $5 of free credit.
🚧 Limitations
US walmart.com storefront only — no Canada, Mexico, or the Marketplace seller console. Review text isn't included, only rating_average/rating_count. No historical price time-series — only the current-vs-was pair present at scrape time. Anonymous public pricing only, not Walmart+ member pricing. Variant/option fan-out is limited to the variant resolved on the given input.
❓ FAQ
Does this cover Walmart Canada or Mexico?
No — walmart.com (US storefront) only. See Limitations.
Does it return historical price history?
No — Walmart's page data exposes at most one current-vs-was price pair per scrape. Run this Actor on a schedule and diff the rows yourself for a time series.
What's the difference between price_current and price_was?
price_current is the live listed price. price_was is the strike-through/list price, only populated when Walmart's page actually shows one — it is never fabricated or copied from price_current.
How does seller_type work?
walmart means sold and shipped by Walmart.com; marketplace means a third-party seller fulfills the order. Useful for filtering out marketplace mark-ups.
Can I mix search terms, URLs, and item IDs in one run?
Yes — provide any combination of the three input fields. Rows are de-duplicated by item_id across all three modes so you're never charged twice for the same product.
💬 Your feedback
Spotted a bug, hit a weird edge case, or need a new field? Open an issue on the Actor's Issues tab on Apify Console — we ship fixes weekly and we read every report.