Walmart Search Results Scraper API
Our Walmart search results scraper takes any search term and returns the ranked product grid as JSON: position, item id, title, price, rating, review count, seller, shipping flags, and the related-search pills Walmart shows.
Why Walmart Search Results data is locked behind a block
Walmart's search grid is rendered client-side and gated to residential IPs, so a datacenter fetch returns a robot check instead of listings. The products live in a __NEXT_DATA__ blob whose shape drifts, so hand-rolled selectors break within weeks.
Fire off the Walmart Search Results Scraper API
curl "https://api.walmartscraperapi.com/api/v1/walmart/search?query=laptop&api_key=$API_KEY" import requests
BASE = "https://api.walmartscraperapi.com"
API_KEY = "YOUR_API_KEY"
# Pass a search term as `query`. Walk deeper pages with `page`.
data = requests.get(
f"{BASE}/api/v1/walmart/search",
params={
"query": "laptop",
"page": 1,
"api_key": API_KEY,
},
timeout=30,
).json()
print(data["query"], "- page", data["page"], "-", data["total_results"], "results")
for r in data["results"]:
tag = "sponsored" if r["sponsored"] else "organic"
print(r["position"], tag, r["price"], r["title"], r["url"])
for rq in data.get("related_queries", []):
print("related:", rq["query"]) Parameters
| Parameter | Required | Default | Notes |
|---|---|---|---|
query | required | - | The search term, e.g. laptop. This is the required input; we build the Walmart search URL from it. |
page | optional | 1 | Results page number, 1 to 100. Defaults to 1. |
country | optional | - | Optional two-letter country code to fetch results as seen from that region. |
api_key | required | - | Your API key, passed as a query parameter. Get one free at signup. |
The JSON the Walmart Search Results Scraper API hands back
{
"query": "laptop",
"page": 1,
"total_results": 67,
"results": [
{
"position": 1,
"id": "18184622196",
"product_id": "1V55QUSDTIGB",
"title": "ASUS Chromebook CX15 Laptop, 15.6\" FHD Display, Intel\u00ae Processor N50, 128GB Storage, 4GB RAM, ChromeOS, Forging Blue",
"url": "https://www.walmart.com/ip/ASUS-Chromebook-CX15-Laptop-.../18184622196?classType=VARIANT&athbdg=L1102",
"price": 199,
"currency": "USD",
"rating": 4.3,
"reviews_count": 235,
"thumbnail": "https://i5.walmartimages.com/seo/ASUS-Chromebook-CX15-Laptop_fd964582-833a-47bf-9766-b8d92330a0fe.fb92dbf89622adb24d9b7212fdeeb099.jpeg",
"description": null,
"seller": "Walmart.com",
"seller_id": "F55CDC31AB754BB68FE0B39041159D63",
"out_of_stock": false,
"sponsored": true,
"free_shipping": true,
"free_shipping_with_walmart_plus": true,
"two_day_shipping": false,
"multiple_options_available": false,
"shipping_price": null,
"price_per_unit": { "unit": "each" },
"primary_offer": { "offer_id": "44B94199498A3672AA257F39DA66AA0F", "offer_price": 199, "was_price": null, "min_price": 175.5 }
},
{
"position": 2,
"id": "18143224660",
"product_id": "3RQSZV8A6ADS",
"title": "Acer Aspire 16 Laptop, 16\u201d IPS WUXGA, Intel Core Ultra 5 115U, 16GB LPDDR5X, 512GB PCIe Gen 4 SSD, Steel Gray",
"url": "https://www.walmart.com/ip/Acer-Aspire-16-.../18143224660?classType=REGULAR",
"price": 549,
"currency": "USD",
"rating": 4.6,
"reviews_count": 34,
"seller": "Walmart.com",
"out_of_stock": false,
"sponsored": true,
"free_shipping": true,
"primary_offer": { "offer_price": 549, "was_price": null, "min_price": 549 }
}
],
"related_queries": [
{ "query": "laptop computers under $200", "url": "https://www.walmart.com/search?q=laptop%20computers%20under%20%24200&searchMethod=relatedSearch" },
{ "query": "hp laptop", "url": "https://www.walmart.com/search?q=hp%20laptop&searchMethod=relatedSearch" }
]
} | Field | Type | Description |
|---|---|---|
query | string | The search term echoed back for this response. |
page | integer | The results page number for this response. |
total_results | integer | Number of product items returned on this page. |
results | array | The ranked product grid, each item an object with the fields below. |
results[].position | integer | The item's rank on the page, starting at 1. |
results[].id | string | The stable Walmart us_item_id for the listing. |
results[].title | string | The product title. |
results[].url | string | The canonical product page URL, anchored to the item's own id. |
results[].price | number | Current price parsed from the listing. |
results[].rating | number | Average star rating, when the item has reviews. |
results[].reviews_count | integer | Number of reviews on the item. |
results[].seller | string | Seller name, e.g. Walmart.com or a marketplace seller. |
results[].sponsored | boolean | True when the listing is a sponsored placement. |
results[].free_shipping | boolean | True when the listing shows a free-shipping badge. |
results[].primary_offer | object | Offer detail: offer_price, was_price (strike price), and min_price for variants. |
related_queries | array | Walmart's related-search pills, each with query and an absolute search url. Empty when the page did not ship the block. |
Ways teams put Walmart data to work
Keyword rank tracking
Assortment and coverage
Price and offer capture
Sponsored-placement analysis
Keyword expansion
Lead lists of items
What powers our Walmart Search Results Scraper API
Pass a search term and we return the ranked grid, no residential proxy pool or __NEXT_DATA__ parser to run yourself. Every request routes through residential IPs with anti-bot handling and retries, returning validated JSON in a stable shape in about 2.6 seconds, with Walmart's related-search pills appended when present.
Query in, grid out
Ranked grid with flags
Related queries appended
Residential egress and retries
Simple pagination
Validated JSON schema
The Walmart Search Results Scraper API against every other route
| Our API | DIY (requests / headless) | Walmart.io affiliate API | |
|---|---|---|---|
| Ranked search grid | Yes, position and flags | Parse the grid blob yourself | Search endpoint, approval required |
| Reaches the page | Residential egress built in | Datacenter IPs get blocked | Not applicable, affiliate feed |
| Sponsored flag | Per result boolean | Detect placements manually | Feed dependent |
| Related queries | Appended when present | Extra parsing of the pills | Not applicable |
| Setup | API key only | Proxies, headless browser, parsers | Impact Radius approval and keys |
| Access | Open signup, free tier | You build and maintain it | Affiliate program gated |
Pay for the requests that land
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
A Walmart search results scraper is a tool that reads Walmart's public search grid and returns it in a structured format. Our Walmart search results scraper API takes a search query and returns each product's position, item id, title, price, rating, review count, seller, shipping flags, and offer detail as JSON, plus the related-search pills Walmart shows.
Pass your search term as the query parameter, for example query=laptop, and we build the Walmart search URL and fetch the results page for you. The response echoes the query back and returns the ranked results array. To reach specific results, refine the term or use the page parameter rather than passing a URL.
Pass the page parameter, from 1 up to 100, to move deeper into the results for a query. Each call returns one page in the results array with its position values, so you increment page to keep reading. The response echoes back the page number so you always know which page you are on.
Yes. Each result carries a sponsored boolean that is true when Walmart shows the listing as a paid placement. That lets you separate paid from organic results and measure how much of page one is sponsored for a given keyword, which is hard to do reliably by eye across many searches.
related_queries is Walmart's set of related-search pills, each returned as a query string and an absolute search URL. Walmart only ships this block on some responses, so the field is an array that is populated when the block is present and empty when it is not, which means appending it never breaks the rest of the response.
Median end-to-end response is about 2.6 seconds, which includes residential proxy routing, anti-bot handling, retries, and parsing. One call returns the full page of results plus related queries when Walmart includes them, so you do not chain extra requests to assemble the grid.