The kroger_search
data source is designed to retrieve Kroger search pages.
Request samples
In the samples below, we make a request to retrieve a search results page for the term running shoes
, filter the results by the brand adidas
and the price range 100.00-200.00
, and specify the store ID as 01100212
.
cURL Python Node.js HTTP PHP Golang C# Java JSON
Copy curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
"source": "kroger_search",
"search_term": "running shoes",
"price_range": "100.00-200.00",
"brand": "adidas",
"store_id": "01100212"
}'
Copy import requests
from pprint import pprint
# Structure payload.
payload = {
"source" : "kroger_search" ,
"search_term" : "running shoes" ,
"price_range" : "100.00-200.00" ,
"brand" : "adidas" ,
"store_id" : "01100212" ,
}
# Get response.
response = requests . request (
"POST" ,
"https://realtime.oxylabs.io/v1/queries" ,
auth = ( "USERNAME" , "PASSWORD" ),
json = payload,
)
# Print prettified response to stdout.
pprint (response. json ())
Copy const https = require ( "https" );
const username = "USERNAME" ;
const password = "PASSWORD" ;
const body = {
source : "kroger_search" ,
search_term : "running shoes" ,
price_range : "100.00-200.00" ,
brand : "adidas" ,
store_id : "01100212" ,
};
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 ();
Copy https://realtime.oxylabs.io/v1/queries?source=kroger_search&search_term=running+shoes&price_range=100.00-200.00&brand=adidas&store_id=01100212&access_token=12345abcde
Copy <? php
$params = array (
"source" => "kroger_search" ,
"search_term" => "running shoes" ,
"price_range" => "100.00-200.00" ,
"brand" => "adidas" ,
"store_id" => "01100212" ,
);
$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 ) ;
?>
Copy package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main () {
const Username = "USERNAME"
const Password = "PASSWORD"
payload := map [ string ] interface {}{
"source" : "kroger_search" ,
"search_term" : "running shoes" ,
"price_range" : "100.00-200.00" ,
"brand" : "adidas" ,
"store_id" : "01100212" ,
}
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))
}
Copy 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 = "kroger_search" ,
search_term = "running shoes" ,
price_range = "100.00-200.00" ,
brand = "adidas" ,
store_id = "01100212"
};
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);
}
}
}
Copy 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" , "kroger_search" );
jsonObject . put ( "search_term" , "running shoes" );
jsonObject . put ( "price_range" , "100.00-200.00" );
jsonObject . put ( "brand" , "adidas" );
jsonObject . put ( "store_id" , "01100212" );
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 ();
}
}
Copy {
"source" : "kroger_search" ,
"search_term" : "running shoes" ,
"price_range" : "100.00-200.00" ,
"brand" : "adidas" ,
"store_id" : "01100212"
}
We use synchronous Realtime integration method in our examples. If you would like to use Proxy Endpoint or asynchronous Push-Pull integration, refer to the integration methods section.
Request parameter values
Generic
Basic setup and customization options for scraping Kroger search pages.
Parameter Description Default Value The keyword or phrase to search for products.
Specify specific store. See the available store ID values here .
Enables JavaScript rendering when set to html
. More info .
Device type and browser. The full list can be found here .
- mandatory parameter
Filtering
Options to filter and refine search results based on various criteria.
Parameter Description Default Value Defines the desired price range, formatted as min_price-max_price
with two decimal places, separated by a hyphen (e.g., 10.00-20.00
).
Filters search results to include products from a specific brand.