Search
Learn how to get Lowe's search results using the Web Scraper API. Find out more about its request parameters and see code examples.
The lowes_search data source is designed to retrieve Lowe's search pages.
Request samples
In the samples below, we make a request to retrieve a search results page for the query iphone.
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
        "source": "lowes_search",
        "query": "iphone",
        "store_id": 2752,
        "free_delivery": true,
        "delivery_zip": "22313",
        "render": "html"
    }'import requests
from pprint import pprint
# Structure payload.
payload = {
    'source': 'lowes_search',
    'query': 'iphone',
    'store_id': 2752,
    'free_delivery': true,
    'delivery_zip': '22313',
    'render': 'html'
}
# 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())const https = require("https");
const username = "USERNAME";
const password = "PASSWORD";
const body = {
    source: "lowes_search",
    query: "iphone",
    store_id: 2752,
    free_delivery: true,
    delivery_zip: "22313",
    render: "html"
};
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();# The whole string you submit has to be URL-encoded.
https://realtime.oxylabs.io/v1/queries?source=lowes_search&query=iphone&access_token=12345abcde<?php
$params = array(
    'source' => 'lowes_search',
    'query' => 'iphone',
    'store_id' => 2752,
    'free_delivery' => true,
    'delivery_zip' => '22313',
    'render' => 'html'
);
$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);package main
import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)
func main() {
	const Username = "USERNAME"
	const Password = "PASSWORD"
	payload := map[string]interface{}{
		"source":       "lowes_search",
		"query":        "iphone",
		"store_id": 	2752,
        	"free_delivery":true,
        	"delivery_zip": "22313",
       		"render": 	"html"
	}
	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))
}
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 = "lowes_search",
                query = "iphone",
                store_id: 2752,
                free_delivery: true,
                delivery_zip: "22313",
                render: "html"
            };
            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);
        }
    }
}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", "lowes_search");
        jsonObject.put("query", "iphone");
        jsonObject.put("store_id", "2752");
        jsonObject.put("free_delivery", true);
        jsonObject.put("delivery_zip", "22313");
        jsonObject.put("render", "html");
        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();
    }
}{
    "source": "lowes_search", 
    "query": "iphone",
    "store_id": 2752,
    "free_delivery": true,
    "delivery_zip": "22313",
    "render": "html"
}Request parameter values
Generic
Basic setup and customization options for scraping Lowe's search pages.
- mandatory parameter
Localization
Customize results based on store locations, delivery areas.
store_id
Specify a store.
-
Integer
delivery_zip
Specify delivery location ZIP code.
-
String
Filtering
Options to filter and refine search results based on various criteria.
free_delivery
Filter to include products which have free delivery.
-
Boolean
pickup_today
Filter to include products which are available for same day pickup.
-
Boolean
delivery_today_tomorrow
Filter to include products which can be delivered the same or next day.
-
Boolean
Last updated
Was this helpful?

