The kroger_product
data source is designed to retrieve Kroger product pages.
Request samples
In the sample below, we make a request to retrieve the product page for product ID 0021006550000
, specify the delivery location using ZIP code 65401
, set the fulfillment type to delivery
, and assign the store ID to 1100002
.
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_product",
"product_id": "0021006550000",
"delivery_zip": "65401",
"fulfillment_type": "pickup",
"store_id": "01100002"
}'
Copy import requests
from pprint import pprint
# Structure payload.
payload = {
"source" : "kroger_product" ,
"product_id" : "0021006550000" ,
"delivery_zip" : "65401" ,
"fulfillment_type" : "pickup" ,
"store_id" : "01100002" ,
}
# 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_product" ,
product_id : "0021006550000" ,
delivery_zip : "65401" ,
fulfillment_type : "pickup" ,
store_id : "01100002" ,
};
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_product&product_id=0021006550000&delivery_zip=65401&fulfillment_type=pickup&store_id=01100002&access_token=12345abcde
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_product" ,
"product_id" : "0021006550000" ,
"delivery_zip" : "65401" ,
"fulfillment_type" : "pickup" ,
"store_id" : "01100002" ,
}
jsonValue , _ : = json . Marshal ( payload )
client : = & http . Client{}
request , _ : = http . NewRequest ( "POST" ,
"https://realtime.oxylabs.io/v1/queries" ,
bytes . NewBuffer ( jsonValue ),
)
request . SetBasicAuth ( Username , Password )
request . Header . Set ( "Content-Type" , "application/json" )
response , _ : = client . Do ( request )
defer response . Body . Close ()
responseText , _ : = ioutil . ReadAll ( response . Body )
fmt . Println ( string (responseText) )
}
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_product" ,
"product_id" : "0021006550000" ,
"delivery_zip" : "65401" ,
"fulfillment_type" : "pickup" ,
"store_id" : "01100002" ,
}
jsonValue, _ := json. Marshal (payload)
client := & http . Client {}
request, _ := http. NewRequest ( "POST" ,
"https://realtime.oxylabs.io/v1/queries" ,
bytes. NewBuffer (jsonValue),
)
request. SetBasicAuth (Username, Password)
request.Header. Set ( "Content-Type" , "application/json" )
response, err := client. Do (request)
if err != nil {
fmt. Println ( "Error:" , err)
return
}
defer response.Body. Close ()
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_product" ,
product_id = "0021006550000" ,
delivery_zip = "65401" ,
fulfillment_type = "pickup" ,
store_id = "01100002"
};
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 . Encoding . 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_product" );
jsonObject . put ( "product_id" , "0021006550000" );
jsonObject . put ( "delivery_zip" , "65401" );
jsonObject . put ( "fulfillment_type" , "pickup" );
jsonObject . put ( "store_id" , "01100002" );
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_product" ,
"product_id" : "0021006550000" ,
"delivery_zip" : "65401" ,
"fulfillment_type" : "pickup" ,
"store_id" : "01100002"
}
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 product pages.
Parameter
Description
Default Value
- mandatory parameter
Localization
Customize results based on store locations, delivery areas, and preferred fulfillment methods.
Parameter
Description
Default Value
Dependencies
Required when fulfillment_type
is set to pickup
or in_store
.
Specify delivery location ZIP code.
Required when fulfillment_type
is set to delivery
or ship
.
Specify order fulfillment method. Available values: ship
, pickup
, delivery
, in_store
.
pickup
(if only store_id
is provided)
Requires store_id
for pickup
and in_store
, or delivery_zip
for delivery
and ship
.
Dependecies explained:
pickup
and in_store
values use the store_id
parameter to determine the correct store.
delivery
and ship
use the delivery_zip
parameter to specify the delivery location.
If only store_id
is provided, and fulfillment_type
is not specified, the default type is pickup
.
If the fulfillment_type
and store_id
/delivery_zip
combination is invalid (unsupported by Kroger), the scraped page will return with a 404 status.