# Search

The `walmart_search` source is designed to retrieve Walmart search result pages. We can return the HTML for any Walmart page you like. Additionally, we can deliver **structured (parsed) output for Walmart search pages**.

## Request samples

The example below illustrates how you can get a parsed Walmart search page result.

{% tabs %}
{% tab title="cURL" %}

```shell
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
        "source": "walmart_search", 
        "query": "iphone", 
        "parse": true
    }'
```

{% endtab %}

{% tab title="Python" %}

```python
import requests
from pprint import pprint


# Structure payload.
payload = {
    'source': 'walmart_search',
    'query': 'iphone',
    'parse': True,
}

# Get response.
response = requests.request(
    'POST',
    'https://realtime.oxylabs.io/v1/queries',
    auth=('USERNAME', 'PASSWORD'),
    json=payload,
)

# Instead of response with job status and results url, this will return the
# JSON response with the result.
pprint(response.json())
```

{% endtab %}

{% tab title="Node.js" %}

```javascript
const https = require("https");

const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "walmart_search",
    query: "iphone",
    parse: true,
};

const options = {
    hostname: "realtime.oxylabs.io",
    path: "/v1/queries",
    method: "POST",
    headers: {
        "Content-Type": "application/json",
        Authorization:
            "Basic " + Buffer.from(`${username}:${password}`).toString("base64"),
    },
};

const request = https.request(options, (response) => {
    let data = "";

    response.on("data", (chunk) => {
        data += chunk;
    });

    response.on("end", () => {
        const responseData = JSON.parse(data);
        console.log(JSON.stringify(responseData, null, 2));
    });
});

request.on("error", (error) => {
    console.error("Error:", error);
});

request.write(JSON.stringify(body));
request.end();
```

{% endtab %}

{% tab title="HTTP" %}

```http
# The whole string you submit has to be URL-encoded.

https://realtime.oxylabs.io/v1/queries?source=walmart_search&query=iphone&parse=true&access_token=12345abcde
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

$params = array(
    'source' => 'walmart_search',
    'query' => 'iphone',
    'parse' => true
);

$ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "https://realtime.oxylabs.io/v1/queries");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($params));
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_USERPWD, "USERNAME" . ":" . "PASSWORD");

$headers = array();
$headers[] = "Content-Type: application/json";
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$result = curl_exec($ch);
echo $result;

if (curl_errno($ch)) {
    echo 'Error:' . curl_error($ch);
}
curl_close($ch);
```

{% endtab %}

{% tab title="Golang" %}

```go
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

func main() {
	const Username = "USERNAME"
	const Password = "PASSWORD"

	payload := map[string]interface{}{
		"source":       "walmart_search",
		"query":        "iphone",
		"parse":        true,
	}

	jsonValue, _ := json.Marshal(payload)

	client := &http.Client{}
	request, _ := http.NewRequest("POST",
		"https://realtime.oxylabs.io/v1/queries",
		bytes.NewBuffer(jsonValue),
	)

	request.SetBasicAuth(Username, Password)
	response, _ := client.Do(request)

	responseText, _ := ioutil.ReadAll(response.Body)
	fmt.Println(string(responseText))
}

```

{% endtab %}

{% tab title="C#" %}

```csharp
using System;
using System.Collections.Generic;
using System.Net.Http;
using System.Net.Http.Json;
using System.Threading.Tasks;

namespace OxyApi
{
    class Program
    {
        static async Task Main()
        {
            const string Username = "USERNAME";
            const string Password = "PASSWORD";

            var parameters = new {
                source = "walmart_search",
                query = "iphone",
                parse = true
            };

            var client = new HttpClient();

            Uri baseUri = new Uri("https://realtime.oxylabs.io");
            client.BaseAddress = baseUri;

            var requestMessage = new HttpRequestMessage(HttpMethod.Post, "/v1/queries");
            requestMessage.Content = JsonContent.Create(parameters);

            var authenticationString = $"{Username}:{Password}";
            var base64EncodedAuthenticationString = Convert.ToBase64String(System.Text.ASCIIEncoding.UTF8.GetBytes(authenticationString));
            requestMessage.Headers.Add("Authorization", "Basic " + base64EncodedAuthenticationString);

            var response = await client.SendAsync(requestMessage);
            var contents = await response.Content.ReadAsStringAsync();

            Console.WriteLine(contents);
        }
    }
}
```

{% endtab %}

{% tab title="Java" %}

```java
package org.example;

import okhttp3.*;
import org.json.JSONObject;
import java.util.concurrent.TimeUnit;

public class Main implements Runnable {
    private static final String AUTHORIZATION_HEADER = "Authorization";
    public static final String USERNAME = "USERNAME";
    public static final String PASSWORD = "PASSWORD";

    public void run() {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("source", "walmart_search");
        jsonObject.put("query", "iphone");
        jsonObject.put("parse", true);

        Authenticator authenticator = (route, response) -> {
            String credential = Credentials.basic(USERNAME, PASSWORD);
            return response
                    .request()
                    .newBuilder()
                    .header(AUTHORIZATION_HEADER, credential)
                    .build();
        };

        var client = new OkHttpClient.Builder()
                .authenticator(authenticator)
                .readTimeout(180, TimeUnit.SECONDS)
                .build();

        var mediaType = MediaType.parse("application/json; charset=utf-8");
        var body = RequestBody.create(jsonObject.toString(), mediaType);
        var request = new Request.Builder()
                .url("https://realtime.oxylabs.io/v1/queries")
                .post(body)
                .build();

        try (var response = client.newCall(request).execute()) {
            if (response.body() != null) {
                try (var responseBody = response.body()) {
                    System.out.println(responseBody.string());
                }
            }
        } catch (Exception exception) {
            System.out.println("Error: " + exception.getMessage());
        }

        System.exit(0);
    }

    public static void main(String[] args) {
        new Thread(new Main()).start();
    }
}
```

{% endtab %}

{% tab title="JSON" %}

```json
{
    "source": "walmart_search", 
    "query": "iphone", 
    "parse": true
}
```

{% endtab %}
{% endtabs %}

We use synchronous [**Realtime**](https://developers.oxylabs.io/scraping-solutions/web-scraper-api/integration-methods/realtime) integration method in our examples. If you would like to use [**Proxy Endpoint**](https://developers.oxylabs.io/scraping-solutions/web-scraper-api/integration-methods/proxy-endpoint) or asynchronous [**Push-Pull**](https://developers.oxylabs.io/scraping-solutions/web-scraper-api/integration-methods/push-pull) integration, refer to the [**integration methods**](https://developers.oxylabs.io/scraping-solutions/web-scraper-api/integration-methods) section.

## Request parameter values

### Generic

<table><thead><tr><th width="207">Parameter</th><th width="334.3333333333333">Description</th><th>Default Value</th></tr></thead><tbody><tr><td><mark style="background-color:green;"><strong><code>source</code></strong></mark></td><td>Sets the scraper.</td><td><code>walmart_search</code></td></tr><tr><td><mark style="background-color:green;"><strong><code>query</code></strong></mark></td><td>The keyword or phrase to search for products.</td><td>-</td></tr><tr><td><code>min_price</code></td><td>Set the minimum price.</td><td>-</td></tr><tr><td><code>max_price</code></td><td>Set the maximum price.</td><td>-</td></tr><tr><td><code>sort_by</code></td><td>Select sorting of products. Available values are: <code>price_low</code>, <code>price_high</code>, <code>best_seller</code>, <code>best_match</code>.</td><td><code>best_match</code></td></tr><tr><td><code>render</code></td><td>Enables JavaScript rendering when set to <code>html</code>. <a href="../../features/js-rendering-and-browser-control/javascript-rendering"><strong>More info</strong></a><strong>.</strong></td><td>-</td></tr><tr><td><code>parse</code></td><td>Returns parsed data when set to <code>true</code>.</td><td><code>false</code></td></tr><tr><td><code>callback_url</code></td><td>URL to your callback endpoint. <a href="../../../integration-methods/push-pull#callback"><strong>More info</strong></a>.</td><td>-</td></tr><tr><td><code>user_agent_type</code></td><td>Device type and browser. The full list can be found <a href="../../features/http-context-and-job-management/user-agent-type"><strong>here</strong></a>.</td><td><code>desktop</code></td></tr></tbody></table>

&#x20;    \- mandatory parameter

### Localization

Adapt results to specific stores, shipping locations, etc. Find the list of Walmart Store IDs here:

{% file src="<https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FvNaqNjeSvxDggN1BwPku%2Fwww_walmart_com_stores.csv?alt=media&token=0298ff89-dad6-4314-aed4-ddbe8f2ddd2e>" %}

You can also find the official page of Walmart Stores [**here**](https://www.walmart.com/store-directory)**.**

<table><thead><tr><th width="179">Parameter</th><th width="434">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>domain</code></td><td>Domain localization for Walmart. Available values: <code>com</code>, <code>com.mx</code>, <code>ca</code>, <code>co.cr</code>. Default: <code>com</code>.</td><td>String</td></tr><tr><td><code>fulfillment_speed</code></td><td>Set the fulfillment speed. Available values are: <code>today</code>, <code>2_days</code>, <code>anytime</code>, <code>tomorrow</code>.</td><td>String</td></tr><tr><td><code>fulfillment_type</code></td><td>Set the fulfillment type. Supported values: <code>pickup</code>, <code>delivery</code>, <code>shipping.</code></td><td>String</td></tr><tr><td><code>delivery_zip</code></td><td>Set the shipping to location.</td><td>String</td></tr><tr><td><code>store_id</code></td><td>Set the store location.</td><td>String</td></tr></tbody></table>

Fulfillment type parameter availability varies by Walmart domain:

<table><thead><tr><th width="341">Domain</th><th>Supported fulfillment types</th></tr></thead><tbody><tr><td><code>walmart.com</code></td><td><code>pickup</code>, <code>delivery</code>, <code>shipping</code></td></tr><tr><td><code>walmart.com.mx</code></td><td><code>pickup</code>, <code>delivery</code></td></tr><tr><td><code>walmart.ca</code></td><td><code>pickup</code>, <code>delivery</code></td></tr><tr><td><code>walmart.co.cr</code></td><td><code>pickup</code></td></tr></tbody></table>

For international `store_id` lists, see the files below:

{% file src="<https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FsqX7MVSRLTctxuUul1R3%2Fwww_walmart_com_mx_stores.csv?alt=media&token=5932fa5c-8521-4df4-95bf-dcab19038e73>" %}

{% file src="<https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FywZb2H7rxZBWHQGHQY1J%2Fwww_walmart_ca_stores.csv?alt=media&token=992cc9bc-f62d-486a-9c38-5634340fa3e3>" %}

{% file src="<https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2Fl2keVL05Bkf2baAMcLjV%2Fwalmart_co_cr_stores.json?alt=media&token=977cdb80-97eb-4e38-a926-b0f301907e42>" %}

{% hint style="info" %}
If target store is too far away from the given postal code - we will attempt to use the postal code of the target store, otherwise the location will not be set properly. In the case we can't set the `delivery_zip` - Walmart will return their default results without store targeting.
{% endhint %}

### Pagination

<table><thead><tr><th width="222">Parameter</th><th width="350.3333333333333">Description</th><th width="167">Default Value</th></tr></thead><tbody><tr><td><code>start_page</code></td><td>Starting page number.</td><td><code>1</code></td></tr></tbody></table>

## Structured data

{% hint style="info" %}
In the following sections, parsed JSON code snippets are shortened where more than one item for the result type is available.
{% endhint %}

<details>

<summary>Walmart search page structured output</summary>

```json
{
    "results": [
        {
            "content": {
                "url": "https://www.walmart.com/search?q=adidas",
                "facets": [
                    {
                        "type": "sort",
                        "values": [
                            {
                                "name": "Best Match"
                            },
                            {
                                "name": "Price Low"
                            },
                            {
                                "name": "Price High"
                            },
                            {
                                "name": "Best Seller"
                            }
                        ],
                        "display_name": "Sort by"
                    },
                    ...
                ],
                "results": [
                    {
                        "price": {
                            "price": 31.95,
                            "currency": "USD"
                        },
                        "rating": {
                            "count": 0,
                            "rating": 0
                        },
                        "seller": {
                            "id": "5027DF43EB634E91AEADF0D69DD4E009",
                            "name": "Revel Commerce"
                        },
                        "general": {
                            "pos": 13,
                            "url": "/ip/Adidas-Men-s-California-2-0-Crew-Neck-Short-Sleeve-Tee-T-Shirt/833623567?classType=VARIANT",
                            "image": "https://i5.walmartimages.com/seo/Adidas-Men-s-California-2-0-Crew-Neck-Short-Sleeve-Tee-T-Shirt_1b8e0b00-fdc7-4b88-99fb-9a633bf0227b_1.812a96a559770448397cd828ef1cf68b.jpeg?odnHeight=180&odnWidth=180&odnBg=FFFFFF",
                            "title": "Adidas Men's California 2.0 Crew Neck Short Sleeve Tee T-Shirt",
                            "sponsored": false,
                            "product_id": "833623567",
                            "out_of_stock": false,
                            "section_title": "Results for \"adidas\""
                        },
                        "variants": [
                            {
                                "url": "/ip/Adidas-Men-California-2-0-Tee-S-Black/524412260?classType=undefined&variantFieldId=actual_color",
                                "image": "https://i5.walmartimages.com/asr/f60cd6ff-41fd-484d-b76e-57f6022c2201.eedd632efbb4ce3803e9ef8306190aa3.jpeg?odnHeight=180&odnWidth=180&odnBg=ffffff",
                                "title": "Black/White",
                                "product_id": "524412260"
                            },
                            {
                                "url": "/ip/Adidas-Men-s-California-2-0-Crew-Neck-Short-Sleeve-Tee-T-Shirt/833623567?classType=undefined&variantFieldId=actual_color",
                                "image": "https://i5.walmartimages.com/asr/1b8e0b00-fdc7-4b88-99fb-9a633bf0227b_1.812a96a559770448397cd828ef1cf68b.jpeg?odnHeight=180&odnWidth=180&odnBg=ffffff",
                                "title": "White",
                                "product_id": "833623567"
                            }
                        ],
                        "fulfillment": {
                            "pickup": false,
                            "delivery": false,
                            "shipping": true,
                            "free_shipping": true
                        }
                    },
                    ...
                ],
                "location": {
                    "city": "Sacramento",
                    "state": "CA",
                    "zipcode": "95829",
                    "store_id": "3081"
                },
                "page_details": {
                    "page": 1,
                    "total_results": 11524,
                    "last_visible_page": 25
                },
                "parse_status_code": 12000
            },
            "created_at": "2024-10-16 09:57:40",
            "updated_at": "2024-10-16 09:57:46",
            "page": 1,
            "url": "https://www.walmart.com/search?q=adidas",
            "job_id": "7252256376867528705",
            "is_render_forced": false,
            "status_code": 200,
            "parser_type": "walmart_search_new"
        }
    ]
}
```

</details>

## Output data dictionary

#### **HTML example**

<figure><img src="https://lh7-qw.googleusercontent.com/docsz/AD_4nXfYKEySR7wMk6YcQlNwL_-Md1jjuDsNYTvGWce18gD6iEPG_h6xZNBify4gxkgVVIL8paPHhpH3nM1hJPHgtyDsq_d3hfieZdRKXGwmSq8k2Qor046eUzY-ZVLMuE8V5pHs7AxC-L8aHx5KZVa0ivMlY0c?key=0pdGx4c_qHnNgLislTadiQ" alt=""><figcaption></figcaption></figure>

#### **JSON structure**

The table below presents a detailed list of each search page element we parse, along with its description and data type. The table also includes some metadata.

<table><thead><tr><th width="245">Key</th><th width="327">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>url</code></td><td>The search page URL.</td><td>string</td></tr><tr><td><code>facets</code></td><td>An array containing details of any available search facets (refinements) shown on the search result page.</td><td>array</td></tr><tr><td><code>results</code></td><td>Search page results.</td><td>array</td></tr><tr><td><code>results.general</code></td><td>An object with general product details.</td><td>object</td></tr><tr><td><code>results.price</code></td><td>An object with pricing details of the product.</td><td>object</td></tr><tr><td><code>results.rating</code></td><td>Object contains details on product rating.</td><td>object</td></tr><tr><td><code>results.seller</code></td><td>Object contains seller information.</td><td>object</td></tr><tr><td><code>results.variants</code> (optional)</td><td>Array contains a list of product variants.</td><td>array</td></tr><tr><td><code>results.fulfillment</code></td><td>Object contains details on product fulfillment options.</td><td>object</td></tr><tr><td><code>location</code></td><td>Provides information on the location in which the request was run in.</td><td>object</td></tr><tr><td><code>page_details</code></td><td>Object contains data on search query result page.</td><td>object</td></tr><tr><td><code>parse_status_code</code></td><td>The status code of the parsing job. You can see the parser status codes described <a href="https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/walmart/broken-reference/README.md"><strong>here</strong></a>.</td><td>integer</td></tr><tr><td><code>created_at</code></td><td>The timestamp when the scraping job was created.</td><td>timestamp</td></tr><tr><td><code>updated_at</code></td><td>The timestamp when the scraping job was finished.</td><td>timestamp</td></tr><tr><td><code>page</code></td><td>Page number from which the data was extracted</td><td>integer</td></tr><tr><td><code>url</code></td><td>The search page URL.</td><td>string</td></tr><tr><td><code>job_id</code></td><td>The ID of the job associated with the scraping job.</td><td>string</td></tr><tr><td><code>status_code</code></td><td>The status code of the scraping job. You can see the scraper status codes described <a href="https://github.com/oxylabs/gitbook-public-english/blob/master/scraping-solutions/web-scraper-api/targets/walmart/broken-reference/README.md"><strong>here</strong></a>.</td><td>integer</td></tr><tr><td><code>is_render_forced</code></td><td>Identifies whether rendering has been forced for this request.</td><td>boolean</td></tr><tr><td><code>parser_type</code></td><td>Type of parser used for extracting the data (e.g., "walmart_search_new").</td><td>string</td></tr></tbody></table>

### **General**

<figure><img src="https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2F5t4HhbHGvpkANRBkKLb0%2Fimage.png?alt=media&#x26;token=371cae11-1932-498d-a987-b3fb258f426c" alt="" width="207"><figcaption></figcaption></figure>

```javascript
...
"general": {
    "pos": 1,
    "url": "/ip/Adidas-Men-s-California-2-0-Crew-Neck-Short-Sleeve-Tee-T-Shirt/833623567?classType=VARIANT",
    "image": "https://i5.walmartimages.com/seo/Adidas-Men-s-California-2-0-Crew-Neck-Short-Sleeve-Tee-T-Shirt_1b8e0b00-fdc7-4b88-99fb-9a633bf0227b_1.812a96a559770448397cd828ef1cf68b.jpeg?odnHeight=180&odnWidth=180&odnBg=FFFFFF",
    "title": "Adidas Men's California 2.0 Crew Neck Short Sleeve Tee T-Shirt",
    "sponsored": true,
    "product_id": "833623567",
    "out_of_stock": false,
    "section_title": "Results for \"adidas\""
},
...
```

<table><thead><tr><th>Key (general)</th><th width="319">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>pos</code></td><td>An indicator denoting the position of a given item within the section product is attributed to.</td><td>integer</td></tr><tr><td><code>url</code></td><td>The URL of the product.</td><td>string</td></tr><tr><td><code>image</code></td><td>The URL of the main product image.</td><td>string</td></tr><tr><td><code>title</code></td><td>Title or name of the product.</td><td>string</td></tr><tr><td><code>product_id</code></td><td>The ID of the product.</td><td>string</td></tr><tr><td><code>sponsored</code></td><td>Identifies if product is sponsored.</td><td>boolean</td></tr><tr><td><code>badge</code> (optional)</td><td>Deal, popular pick, bestseller, 100+ bought since yesterday</td><td>list of strings</td></tr><tr><td><code>section_title</code></td><td>The name of the section which product is attributed to in the search page.</td><td>string</td></tr><tr><td><code>out_of_stock</code></td><td>Indicates if item is out of stock.</td><td>boolean</td></tr></tbody></table>

### Price

<figure><img src="https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FrkyPm1ZtSDgny3SF7xEG%2FScreenshot%202024-10-16%20at%2015.21.29.png?alt=media&#x26;token=2c26bc01-43d2-4cfd-89ca-3fffc2e32fea" alt="" width="249"><figcaption></figcaption></figure>

```javascript
...
"price": {
    "price": 1149.99,
    "currency": "USD",
    "price_min": 1149.99
    "price_max": 1399.00
},
...
```

<table><thead><tr><th width="241">Key (price)</th><th width="327">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>price</code></td><td>The current price of the product without any deductions.</td><td>float</td></tr><tr><td><code>price_strikethrough</code>(optional)</td><td>The strikethrough price is either a Was Price, a Bundle Price, or a List Price.</td><td>float</td></tr><tr><td><code>currency</code></td><td>The ISO 4217 three-letter code of the currency.</td><td>string</td></tr><tr><td><code>price_min</code>(optional)</td><td>The minimum price of the product in the case of range pricing.</td><td>float</td></tr><tr><td><code>price_max</code>(optional)</td><td>The maximum price of the product in the case of range pricing.</td><td>float</td></tr></tbody></table>

### Rating

<figure><img src="https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2Fi2zAXT37x1md2oyzWnkm%2FScreenshot%202024-10-16%20at%2015.02.27.png?alt=media&#x26;token=7b337cc5-17c1-4ec1-8a3f-e7eb296678e7" alt="" width="362"><figcaption></figcaption></figure>

```javascript
...
"rating": {
    "count": 428,
    "rating": 4.6
},
...
```

| Key (rating) | Description                        | Type    |
| ------------ | ---------------------------------- | ------- |
| `rating`     | Average rating of the product.     | float   |
| `count`      | Number of ratings for the product. | integer |

### Seller

Data not displayed visually.

<table><thead><tr><th>Key (seller)</th><th width="327">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>name</code></td><td>Name of the seller.</td><td>string</td></tr><tr><td><code>id</code></td><td>ID of the seller.</td><td>string</td></tr></tbody></table>

### Variants

<figure><img src="https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FVh24grSOeZNPQHymTCwA%2FScreenshot%202024-10-16%20at%2015.17.45.png?alt=media&#x26;token=9ac34bd8-ba47-4740-854a-239c041ec7ee" alt="" width="244"><figcaption></figcaption></figure>

```json
...
"variants": [
    {
        "url": "/ip/Apple-MacBook-Air-13-3-inch-Laptop-Gold-M1-Chip-8GB-RAM-256GB-storage/550880792?classType=undefined&variantFieldId=actual_color",
        "image": "https://i5.walmartimages.com/asr/a9857413-b9fa-4c8d-9f81-7ea4c93889a1.410fd3cb7fe36102bbe2d3dca32a8075.jpeg?odnHeight=180&odnWidth=180&odnBg=ffffff",
        "title": "Gold",
        "product_id": "550880792"
    },
    {
        "url": "/ip/Apple-MacBook-Air-13-3-inch-Laptop-Silver-M1-Chip-8GB-RAM-256GB-storage/715596133?classType=undefined&variantFieldId=actual_color",
        "image": "https://i5.walmartimages.com/asr/056c08d5-2d68-44f2-beb0-dd8a47e2f8e8.2a2a210657937c3c11b37df5be8fa4ad.jpeg?odnHeight=180&odnWidth=180&odnBg=ffffff",
        "title": "Silver",
        "product_id": "715596133"
    },
    {
        "url": "/ip/Apple-MacBook-Air-13-3-inch-Laptop-Space-Gray-M1-Chip-8GB-RAM-256GB-storage/609040889?classType=undefined&variantFieldId=actual_color",
        "image": "https://i5.walmartimages.com/asr/af1d4133-6de9-4bdc-b1c6-1ca8bd0af7a0.c0eb74c31b2cb05df4ed11124d0e255b.jpeg?odnHeight=180&odnWidth=180&odnBg=ffffff",
        "title": "Space Gray",
        "product_id": "609040889"
    }
],
...
```

<table><thead><tr><th width="248">Key (variants)</th><th width="342">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>url</code></td><td>URL of the product variation.</td><td>string</td></tr><tr><td><code>title</code></td><td>The title of the product variation.</td><td>string</td></tr><tr><td><code>product_id</code></td><td>The Id of the product variation.</td><td>string</td></tr><tr><td><code>image</code></td><td>The image of the product variation.</td><td>string</td></tr></tbody></table>

### Fulfillment

<figure><img src="https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FkQscLlvYbLZUL00m8gnA%2FScreenshot%202024-10-16%20at%2015.15.31.png?alt=media&#x26;token=c6fb1b28-28d6-4bc6-a686-d95851fed8c2" alt="" width="395"><figcaption></figcaption></figure>

```json
 ...
"fulfillment": {
    "pickup": true,
    "delivery": true,
    "shipping": true,
    "free_shipping": false
}
...
```

<table><thead><tr><th>Key (fulfillment)</th><th width="315">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>pickup</code></td><td>Indicates if the product is available to be fulfilled via in-store pickup.</td><td>boolean</td></tr><tr><td><code>delivery</code></td><td><p>Indicates if the product is available to be fulfilled via delivery from store.</p><p>Delivery comes from your local store, if available.</p></td><td>boolean</td></tr><tr><td><code>shipping</code></td><td>Indicates if the product is available to be fulfilled via home shipping.</td><td>boolean</td></tr><tr><td><code>free_shipping</code></td><td>Indicates if shipping is free of charge.</td><td>boolean</td></tr></tbody></table>

### Facets

<figure><img src="https://lh7-qw.googleusercontent.com/docsz/AD_4nXeRlJ-6IDkaftEvHHQTmA8RsJq9YJ3hNQAcyOMvm4RtMZpLLE7iRdLPwgI3_PXJ4xU33QFfefh2OC8Xt0nDr5uQKxDqhHe_FUupBBIE916dAlKH_4oCQY3lmFSiEeTkUFcc8ma0h1LR13j0RkNykhdaHO5I?key=0pdGx4c_qHnNgLislTadiQ" alt=""><figcaption></figcaption></figure>

```json
... 
"facets": [
    {
        "type": "sort",
        "values": [
            {
                "name": "Best Match"
            },
            {
                "name": "Price Low"
            },
            {
                "name": "Price High"
            },
            {
                "name": "Best Seller"
            }
        ],
        "display_name": "Sort by"
    },
...
```

<table><thead><tr><th width="243">Key (facets)</th><th width="351">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>display_name</code></td><td>The display name of the facet (i.e. the user-facing name).</td><td>string</td></tr><tr><td><code>type</code></td><td>The facet type.</td><td>string</td></tr><tr><td><code>values</code></td><td>The facet values array shows the values of the given facet.</td><td>array</td></tr><tr><td><code>values.name</code></td><td>The facet value name.</td><td>string</td></tr><tr><td><code>values.item_count</code> (optional)</td><td>The number of items available for the specific facet.</td><td>integer</td></tr></tbody></table>

### Location

<figure><img src="https://63892162-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FzrXw45naRpCZ0Ku9AjY1%2Fuploads%2FdYSe9Nou8n0iU7CjyiwE%2FScreenshot%202024-10-16%20at%2015.31.30.png?alt=media&#x26;token=d136bb7a-9dee-4ad6-88ec-21d04cc51cd1" alt="" width="384"><figcaption></figcaption></figure>

```json
...
"location": {
    "city": "Sacramento",
    "state": "CA",
    "store_id": "8915",
    "zip_code": "95829"
},
...
```

<table><thead><tr><th>Key (location)</th><th width="335">Description</th><th>Type</th></tr></thead><tbody><tr><td><code>city</code></td><td>The city the request was run on.</td><td>string</td></tr><tr><td><code>state</code></td><td>The state the request was run on.</td><td>string</td></tr><tr><td><code>zip_code</code></td><td>The zip code the request was run on.</td><td>string</td></tr><tr><td><code>store_id</code></td><td>The ID of the store that the request was run on.</td><td>string</td></tr></tbody></table>

### Page details

<figure><img src="https://lh7-qw.googleusercontent.com/docsz/AD_4nXdDeZE3P2q2mpUFrQEV_fWb_KihYfxfjHkYY3NRRA9OL01lC83tilGKDepWHE62LEoG8Qp9rYX6PYHM44CfgQdoZDuev4f1P9jGloQ8Hido9Fy-QFS4k8A4nmCWBA6F59jhRN7ASrkAJWn0Heb0RuD1gAbs?key=0pdGx4c_qHnNgLislTadiQ" alt=""><figcaption></figcaption></figure>

```json
 ...
"page_details": {
    "page": 1,
    "total_results": 11524,
    "last_visible_page": 25
},
...
```

<table><thead><tr><th>Key (page_details)</th><th width="306">Description</th><th>Key</th></tr></thead><tbody><tr><td><code>total_results</code></td><td>The total number of search results shown as being available.</td><td>integer</td></tr><tr><td><code>last_visible_page</code></td><td>Last page number of search results.</td><td>integer</td></tr><tr><td><code>page</code></td><td>Page number from which the product data was extracted</td><td>integer</td></tr></tbody></table>
