Product
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 '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"
}'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())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();https://realtime.oxylabs.io/v1/queries?source=kroger_product&product_id=0021006550000&delivery_zip=65401&fulfillment_type=pickup&store_id=01100002&access_token=12345abcdepackage 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))
}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))
}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);
}
}
}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();
}
}{
"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.
- mandatory parameter
Localization
Customize results based on store locations, delivery areas, and preferred fulfillment methods.
store_id
Specify a store. See the available values here. The ID must start with '0'.
-
Required when fulfillment_type is set to pickup or in_store.
delivery_zip
Specify delivery location ZIP code.
-
Required when fulfillment_type is set to delivery or ship.
fulfillment_type
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:
pickupandin_storevalues use thestore_idparameter to determine the correct store.deliveryandshipuse thedelivery_zipparameter to specify the delivery location.If only
store_idis provided, andfulfillment_typeis not specified, the default type ispickup.
If the fulfillment_type and store_id/delivery_zip combination is invalid (unsupported by Kroger), the scraped page will return with a 404 status.
Last updated
Was this helpful?

