Walmart APIwalmart.ca ↗
Search Walmart Canada product listings, fetch detailed specs and reviews, and retrieve pharmacy locations via 3 structured JSON endpoints.
What is the Walmart API?
The Walmart Canada API covers 3 endpoints that return product search results, detailed item data, and pharmacy locations across Canada. The search_products endpoint accepts a keyword query and returns structured listings including price, brand, rating, review count, seller, availability, and fulfillment type. You can paginate results, apply sorting, and cap the result set per page.
curl -X GET 'https://api.parse.bot/scraper/11ed3ebb-eb32-4e14-93dd-df77916cfce9/search_products?page=1&sort=best_match&limit=5&query=laptop' \ -H 'X-API-Key: $PARSE_API_KEY'
Typed, relational, agent-ready
A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.
- Fully typed · autocompletes
- Objects link to objects
- Typed errors & pagination
Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:
uv add parse-sdk uv run parse init uv run parse add --marketplace walmart-ca-api
uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.
"""Walmart Canada product search — browse listings, sort by price, drill into details."""
from parse_apis.walmart_canada_api import WalmartCanadaApi, Sort, ProductNotFound
client = WalmartCanadaApi()
# Search for laptops sorted by lowest price, capped at 5 results
for product in client.products.search(query="laptop", sort=Sort.PRICE_LOW, limit=5):
print(product.name, product.price, product.brand)
# Drill into the first headphones result for full details
headphone = client.products.search(query="headphones", sort=Sort.RATING_HIGH, limit=1).first()
if headphone:
detail = headphone.details()
print(detail.name, detail.price, detail.currency, detail.was_price)
# Walk specifications
for spec in detail.specifications[:3]:
print(spec.name, spec.value)
# Check customer reviews
for review in detail.reviews.customer_reviews[:2]:
print(review.title, review.rating, review.author)
# Handle a product that may not exist
try:
missing = client.product(id="INVALID_ID_XYZ").details()
print(missing.name)
except ProductNotFound as exc:
print(f"Product not found: {exc.product_id}")
print("exercised: products.search with Sort enum, .first(), .details(), specifications, reviews, typed error catch")
Search for products on Walmart Canada by keyword. Returns product listings with price, brand, rating, and availability information. Paginates via integer page number. Some queries may be redirected by Walmart to category pages, resulting in an upstream_error.
| Param | Type | Description |
|---|---|---|
| page | integer | Page number for pagination |
| sort | string | Sort order for search results |
| limit | integer | Maximum number of results to return per page |
| queryrequired | string | Search keyword (e.g. 'laptop', 'headphones') |
{
"type": "object",
"fields": {
"items": "array of product objects with id, name, price, brand, image, rating, num_reviews, url, seller, availability, fulfillment_type",
"total": "integer total number of matching products"
},
"sample": {
"data": {
"items": [
{
"id": "39BXA5GSMOSP",
"url": "/en/ip/product/39BXA5GSMOSP",
"name": "RNRUO 15.6\" Laptop Computer, 8GB RAM 256GB SSD",
"brand": "RNRUO",
"image": "https://i5.walmartimages.com/asr/example.png",
"price": 325.99,
"rating": 4.0455,
"seller": "RNRUO",
"num_reviews": 22,
"availability": "In stock",
"fulfillment_type": "FC"
}
],
"total": 53
},
"status": "success"
}
}About the Walmart API
Search and Browse Products
The search_products endpoint accepts a required query string (e.g. 'laptop' or 'headphones') and returns an array of product objects alongside a total count of matching results. Each item in the items array includes id, name, price, brand, image, rating, num_reviews, url, seller, availability, and fulfillment_type. Pagination is controlled with the page integer parameter, and results can be capped via limit. Be aware that some queries may be redirected by Walmart Canada to category browse pages rather than search results, which will surface as an upstream_error in the response.
Product Details and Specifications
The get_product_details endpoint takes a required product_id (the Walmart Item ID, e.g. 39BXA5GSMOSP) and an optional slug to fetch a single product record. The response returns three distinct objects: a product object with core item data, a reviews object with customer review information, and a specifications array containing structured attribute-value pairs for the item.
Pharmacy Locations
The get_pharmacies endpoint requires no input parameters and returns a full list of Walmart pharmacy locations in Canada. Each record includes id, name, latitude, longitude, and postcode, making it straightforward to map locations or filter by proximity using your own geospatial logic.
The Walmart API is a managed, monitored endpoint for walmart.ca — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when walmart.ca changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official walmart.ca API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Track Walmart Canada price changes for specific products using
product_idacross repeatedget_product_detailscalls. - Build a product comparison tool using
search_productsto surface price, brand, and rating side-by-side. - Power an availability checker using the
availabilityandfulfillment_typefields from search results. - Display pharmacy location maps by consuming
latitudeandlongitudefromget_pharmacies. - Aggregate product specifications for SEO content or feature comparison pages using the
specificationsarray. - Monitor seller diversity on Walmart Canada by extracting the
sellerfield across search result pages. - Enrich product catalog data by pulling
num_reviewsandratingfor trending keyword queries.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Walmart Canada have an official developer API?+
What does the `search_products` endpoint return when a query triggers a category redirect?+
upstream_error in the response rather than an items array. Rephrasing the query or using a more specific keyword typically avoids this.Does the API return Walmart Canada store locations beyond pharmacies?+
get_pharmacies, with id, name, latitude, longitude, and postcode fields. General store locations, hours, and in-store inventory are not covered. You can fork this API on Parse and revise it to add a store-location endpoint.Can I retrieve product reviews through this API?+
get_product_details endpoint returns a reviews object as part of its response alongside the product object and specifications array. The level of detail within the reviews object (e.g. individual review text vs. aggregate scores) reflects what Walmart Canada exposes for the requested item.Is historical pricing data available through any endpoint?+
search_products and get_product_details endpoints return current price only. You can fork this API on Parse and revise it to store and expose price history by recording snapshots over time.