Blog
How to Access Walmart Product Data via Shadow APIs
Walmart's Affiliate API has limited product data and strict approval requirements. Shadow APIs -- the internal endpoints powering walmart.com -- provide complete product details, real-time pricing, inventory status, and reviews without affiliate approval.
How to Access Walmart Product Data via Shadow APIs
Walmart is the largest retailer in the world by revenue, with over 100 million products listed on walmart.com. For developers building price comparison tools, market research platforms, product intelligence services, or shopping assistants, Walmart product data is essential.
But accessing it programmatically is harder than it should be. Walmart's official API (through the Affiliate Program) requires approval, has restrictive usage terms, and returns a limited subset of the data visible on their website. The alternative -- scraping walmart.com -- runs into sophisticated anti-bot defenses that make reliable data collection a constant battle.
Walmart's website, however, fetches all its data from internal API endpoints. Search results, product details, pricing, reviews, inventory status, and seller information all arrive as structured JSON. These shadow APIs provide comprehensive access to Walmart's product catalog.
The Problem with Current Approaches
The Official API Is Limited
Walmart's API access comes through their Affiliate Program, which has significant restrictions:
- Approval required: Application review can take weeks, and non-affiliate use cases are often rejected.
- Affiliate-only data model: The API is designed for generating shopping links, not for comprehensive product data.
- Limited fields: Missing detailed specifications, seller information, fulfillment data, and Q&A content.
- Rate limits: 20 requests per second maximum, with daily caps on total calls.
- No real-time inventory: Stock status is delayed by hours, making it unreliable for availability checking.
- Terms restrictions: Data cannot be stored for more than 24 hours, limiting analytics use cases.
Scraping Walmart Is Resource-Intensive
Walmart deploys enterprise-grade anti-bot infrastructure:
- PerimeterX Bot Defender that fingerprints browsers and blocks automation
- Device intelligence that detects headless Chrome, Puppeteer, and Playwright
- CAPTCHA challenges from Akamai that trigger on suspicious patterns
- Dynamic content loading that requires full JavaScript execution
- Session-based detection that correlates request patterns across pages
- Legal action history: Walmart has pursued legal remedies against scraping operations
Running a reliable Walmart scraper requires residential proxies ($200-500/month), CAPTCHA solving services ($50-100/month), and continuous maintenance. Total cost easily exceeds $500/month before you process a single data point.
Third-Party Product Data APIs Are Expensive
Commercial product data APIs (Keepa, Oxylabs, ScraperAPI) that include Walmart data charge $100-500/month and are ultimately wrappers around the same scraping infrastructure. When Walmart updates their anti-bot measures, these services experience downtime.
Shadow APIs: The Alternative
Walmart's website is a modern web application that fetches all product data from internal API endpoints. When you search for a product, view a product page, or check store availability, your browser makes calls to these backend services and receives structured JSON responses.
These shadow APIs are Walmart's real data layer. They return complete product information including specifications, seller details, fulfillment options, pricing history indicators, customer Q&A, and real-time inventory status -- data that goes far beyond what the official Affiliate API provides.
What Unbrowse Discovers on Walmart
When Unbrowse indexes Walmart through normal browsing, it captures endpoints like:
| Endpoint Pattern | Data Returned | Format |
|---|---|---|
/orchestra/home/graphql |
Search results with full product data | JSON (GraphQL) |
/orchestra/snb/graphql (ProductPage) |
Complete product details | JSON (GraphQL) |
/orchestra/graphql (Reviews) |
Customer reviews with ratings | JSON (GraphQL) |
/api/product-page/v1/items |
Product variants and options | JSON |
/terra-firma/fetch |
Real-time pricing and availability | JSON |
/api/checkout/v3/contract |
Store-level inventory status | JSON |
Walmart's internal GraphQL API is particularly powerful. A single query can return product details, all seller offers, shipping options, store availability within a radius, price match data, and related products.
How It Works
# Install Unbrowse
npx unbrowse setup
# Browse Walmart to discover endpoints
npx unbrowse go "https://www.walmart.com/search?q=wireless+headphones"
# Resolve product data via shadow API
npx unbrowse resolve "walmart wireless headphones under $50"
After indexing, queries resolve through direct API calls:
import Unbrowse from 'unbrowse';
const ub = new Unbrowse();
const result = await ub.resolve(
'walmart product details for Sony WH-1000XM5'
);
console.log(result.data);
// {
// product: {
// name: "Sony WH-1000XM5 Wireless Noise Canceling Headphones",
// upc: "027242923782",
// price: 328.00,
// was_price: 399.99,
// seller: "Walmart.com",
// fulfillment: "Shipped by Walmart",
// in_stock: true,
// rating: 4.7,
// reviews_count: 3842,
// specifications: {
// brand: "Sony",
// color: "Black",
// battery_life: "30 hours",
// connectivity: "Bluetooth 5.2",
// noise_canceling: true
// },
// sellers: [
// { name: "Walmart.com", price: 328.00, shipping: "Free" },
// { name: "Third Party Seller", price: 335.50, shipping: "$5.99" }
// ],
// store_availability: [
// { store: "Walmart #1234", distance: "2.3 mi", in_stock: true }
// ]
// }
// }
Performance: Browser vs Shadow API
| Metric | Browser Automation | Shadow API (Unbrowse) |
|---|---|---|
| Latency per request | 5-12 seconds | 300-600ms |
| Memory usage | 500MB+ (headless Chrome) | ~5MB |
| Cost per 1,000 requests | $5.30 (compute + proxy) | $0.05 |
| Anti-bot detection risk | Very high | Low |
| Data format | HTML (dynamic React DOM) | Structured JSON (GraphQL) |
| Inventory data | Rarely accurate from DOM | Real-time from API |
For a price monitoring tool tracking 10,000 products, shadow APIs complete a full price check in under 30 minutes. Browser automation would take 14+ hours and require expensive proxy infrastructure to avoid detection.
When to Use This Approach
Shadow APIs via Unbrowse are the right choice when:
- You need real-time pricing. Internal APIs return current prices including rollbacks, clearance, and in-store-only deals that the Affiliate API misses.
- You need store-level inventory. Check whether a specific product is in stock at a specific store -- data the official API does not provide.
- You are building a shopping assistant. AI agents that help users find the best deals need fast, comprehensive product data.
- You need seller comparison data. Walmart Marketplace has thousands of third-party sellers, and internal APIs show all offers for a product.
This approach is less suitable for accessing order history, customer account data, or Walmart Marketplace seller dashboards, which require authenticated merchant access.
Getting Started
# 1. Install
npm install -g unbrowse
# 2. Set up
unbrowse setup
# 3. Browse Walmart to index APIs
unbrowse go "https://www.walmart.com/browse/electronics"
# 4. Query products programmatically
unbrowse resolve "walmart 4K TV deals under $400"
One browse session captures Walmart's internal API patterns. After indexing, product queries resolve through direct GraphQL calls with no browser overhead and no anti-bot risk.
FAQ
Is this legal?
You are accessing product data that Walmart publicly displays to every website visitor. Shadow API calls reproduce the same HTTP requests your browser makes when you view a product page. No login is required, no authentication is bypassed, and the data accessed is limited to publicly visible information. The HiQ v. LinkedIn precedent supports the legality of accessing publicly available data.
How is this different from scraping?
Scrapers render walmart.com pages in headless browsers, wait for JavaScript to execute, then parse the DOM to extract product data. This is slow, expensive, and what Walmart's PerimeterX system is specifically designed to detect. Shadow APIs call Walmart's internal GraphQL endpoints directly, receiving structured JSON. No browser rendering, no bot detection surface.
What about Walmart+ pricing?
Walmart+ member pricing is available through internal APIs when a logged-in session is used for discovery. The standard (non-member) pricing is always available without authentication.
Does this work for Walmart Marketplace products?
Yes. Walmart's internal APIs return all seller offers for a product, including Marketplace sellers. You get the complete buy box data: price, seller name, fulfillment method, and shipping cost for every offer.