Send any walmart.com product URL to PriceFetch, get back the current price, currency (USD), and stock status. Handles rollback prices, clearance, and variant products.
Walmart is the second-largest e-commerce retailer in the US, and their pricing is notoriously dynamic. Rollback prices, clearance markdowns, and time-limited deals change frequently. PriceFetch gives you live pricing data from walmart.com — no stale database, no estimated prices.
The API works with any walmart.com product page URL. Send the URL, get back the current price, currency (always USD for walmart.com), stock status, and retailer name. One credit per successful request.
Walmart.com is currently the only supported Walmart domain. Walmart Canada (walmart.ca) and Walmart Mexico (walmart.com.mx) support is planned.
Try it yourself — 500 free API credits, no credit card required.
Start FreeWalmart product URLs use a numeric product ID (called an "IP" or item page ID). PriceFetch accepts any URL format that contains this ID.
Supported formats: - Standard: `https://www.walmart.com/ip/Product-Name/1234567890` - Short: `https://www.walmart.com/ip/1234567890` - With query params: `https://www.walmart.com/ip/1234567890?selected=true` - Mobile: `https://www.walmart.com/ip/1234567890` (same as desktop)
Formats that do NOT work: search pages, category pages, browse pages, and Walmart+ exclusive pages. The URL must point to a single product.
# Standard product URL
curl -H "X-API-Key: YOUR_KEY" \
"https://api.pricefetch.dev/v1/price?url=https://www.walmart.com/ip/Sony-WH-1000XM5/1234567890"
# Response
{
"success": true,
"data": {
"url": "https://www.walmart.com/ip/Sony-WH-1000XM5/1234567890",
"price": 278.00,
"currency": "USD",
"in_stock": true,
"retailer": "walmart",
"timestamp": "2026-03-22T14:00:00Z"
},
"credits_remaining": 495,
"request_id": "req_def456"
}Walmart has several distinct price types, and understanding them helps you interpret the data correctly.
**Regular price:** The standard shelf price. This is what PriceFetch returns for most products.
**Rollback price:** Walmart's term for a temporary price reduction. These are prominently displayed with a "Rollback" badge. PriceFetch returns the rollback price when active — it's the actual current price.
**Clearance price:** Final markdown on discontinued items. PriceFetch returns the clearance price. These products often go out of stock quickly.
**Was/Now pricing:** Walmart sometimes shows a strikethrough "Was" price alongside the current "Now" price. PriceFetch returns the "Now" price — the one the customer actually pays.
**Walmart+ prices:** Some products show a lower price exclusively for Walmart+ subscribers. PriceFetch returns the standard (non-member) price since the Walmart+ price requires a subscription.
In all cases, PriceFetch returns what a non-logged-in customer would see as the primary price. This is the most universally comparable data point.
Many Walmart products have variants — different sizes, colors, or configurations at different prices. Each variant typically has its own URL (the IP number changes or a query parameter specifies the variant).
When you send a variant URL, PriceFetch returns the price for that specific variant. If you send the base product URL without specifying a variant, you get the default (usually the cheapest) variant's price.
To get prices for all variants, you need to send each variant URL separately. Walmart's product pages usually list variant URLs in the page HTML, but the PriceFetch API currently returns price data only — variant enumeration is on the roadmap.
import httpx
import asyncio
API_KEY = "YOUR_KEY"
# Different variants of the same product
variant_urls = [
"https://www.walmart.com/ip/Product-Size-Small/111111",
"https://www.walmart.com/ip/Product-Size-Medium/222222",
"https://www.walmart.com/ip/Product-Size-Large/333333",
]
async def check_variants():
async with httpx.AsyncClient() as client:
for url in variant_urls:
resp = await client.get(
"https://api.pricefetch.dev/v1/price",
params={"url": url},
headers={"X-API-Key": API_KEY},
timeout=15.0,
)
data = resp.json()
if data["success"]:
print(f"{url}: {data['data']['currency']} {data['data']['price']}")
asyncio.run(check_variants())Walmart's stock status is more nuanced than a simple in/out binary. Products can be:
- **In stock, shipped by Walmart:** Standard availability. `in_stock: true`. - **In stock, shipped by third-party seller:** Available but fulfilled by a marketplace seller. `in_stock: true` (the product can still be purchased). - **In store only:** Available at physical Walmart stores but not for online purchase. `in_stock: false` (can't be bought online). - **Out of stock online:** Not available. `in_stock: false`.
PriceFetch's `in_stock` field reflects online purchasability. If a product can be added to cart and shipped, it's `in_stock: true`. Store-only and unavailable products are `in_stock: false`.
For products with multiple sellers (Walmart Marketplace), the returned price is the featured offer — usually the lowest price from a reputable seller.
**Grocery items:** Walmart.com has a grocery section with different URL patterns and pricing logic. Most grocery product URLs work, but prices may vary by delivery ZIP code. PriceFetch returns the default (non-localized) price.
**Bundle deals:** Products sold as bundles ("Buy 2, Save $5") show the per-unit price. The bundle discount is not reflected in the API response since it requires adding multiple items to cart.
**Pickup-only pricing:** Some products show different prices for pickup vs delivery. PriceFetch returns the delivery price by default.
**Price matching:** Walmart's price matching doesn't affect the online price shown on the page. The API returns the listed online price, not any price-matched amount.
**Rate considerations:** Walmart's site is generally less aggressive with bot detection than Amazon, but you should still space requests at least 1-2 seconds apart for the same product to avoid triggering rate limits.
Sign up in 30 seconds. No credit card required. One credit per successful API call.