You can get Kroger results by providing your own URLs to our service. We can return the HTML for any Kroger page you like.
Request samples
The sample below demonstrates how to retrieve a Kroger search results page based on a specific product query, price range, and store location.
curl 'https://realtime.oxylabs.io/v1/queries' \
--user 'USERNAME:PASSWORD' \
-H 'Content-Type: application/json' \
-d '{
"source": "kroger",
"url": "https://www.kroger.com/search?query=adidas&price=10.00-15.00",
"store_id": "01100002"
}'
import requests
from pprint import pprint
# Structure payload.
payload = {
"source": "kroger",
"url": "https://www.kroger.com/search?query=adidas&price=10.00-15.00",
"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",
url: "https://www.kroger.com/search?query=adidas&price=10.00-15.00",
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&url=https%3A%2F%2Fwww.kroger.com%2Fsearch%3Fquery%3Dadidas%26price%3D10.00-15.00&store_id=01100002&access_token=12345abcde
<?php
$params = array(
"source" => "kroger",
"url" => "https://www.kroger.com/search?query=adidas&price=10.00-15.00",
"store_id" => "01100002",
);
$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": "kroger",
"url": "https://www.kroger.com/search?query=adidas&price=10.00-15.00",
"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)
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 = "kroger",
url = "https://www.kroger.com/search?query=adidas&price=10.00-15.00",
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.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", "kroger");
jsonObject.put("url", "https://www.kroger.com/search?query=adidas&price=10.00-15.00");
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",
"url": "https://www.kroger.com/search?query=adidas&price=10.00-15.00",
"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 marketplace.
Parameter
Description
Default Value
Direct URL (link) to any page.
Enables JavaScript rendering when set to html
. More info.
Device type and browser. The full list can be found here.
- mandatory parameter
Localization
Customize results based on store locations, delivery areas, and preferred fulfillment methods.
Parameter
Description
Default Value
Dependencies
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
.
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.