# Kroger Product Search Scraper (`stealth_mode/kroger-product-search-scraper`) Actor

Scrape product listings from Kroger.com with advanced filtering by keyword, price, and availability. Collect 200+ items per query including prices, nutrition data, inventory status, and fulfillment options — perfect for price monitoring, market research, and competitive analysis.

- **URL**: https://apify.com/stealth\_mode/kroger-product-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## Kroger Product Search Scraper: Extract Grocery Data at Scale

***

### What Is Kroger.com?

Kroger is one of America's largest grocery retailers, offering hundreds of thousands of products across multiple categories — from dairy and produce to beauty and household items. Their product search functionality lets customers filter by price, availability, and promotional status. For analysts, retailers, and researchers, extracting this product data manually is inefficient. The **Kroger Product Search Scraper** automates the collection process, delivering structured product records with pricing, inventory, and nutritional information.

***

### Overview

The **Kroger Product Search Scraper** extracts product listings from Kroger.com using two flexible input modes:

- **URL-based scraping** — Directly scrape product category or search result pages by providing their URLs
- **Keyword & filter-based scraping** — Search by keyword and apply filters (price range, availability, sale status) to build custom datasets

The scraper returns 12+ data fields per product, enabling use cases like:

- **Price monitoring** — Track competitor pricing across product categories
- **Market research** — Analyze product availability and promotional trends
- **Inventory intelligence** — Monitor stock status and fulfillment options
- **Data aggregation** — Feed product data into pricing platforms or comparison sites

***

### Input Format & Configuration

The scraper supports two input modes:

#### Mode 1: Scrape by URLs

Provide direct links to Kroger product list pages:

```json
{
    "urls": [
        "https://www.kroger.com/pl/milk-dairy-free-milk/02001",
        "https://www.kroger.com/pl/organic-produce/02005"
    ],
    "max_items_per_url": 200,
    "ignore_url_failures": true
}
```

| Parameter | Description |
|---|---|
| `urls` | Array of Kroger product list or category page URLs |
| `max_items_per_url` | Maximum products to extract per URL (e.g., `200`) |
| `ignore_url_failures` | If `true`, continues scraping even if some URLs fail |

#### Mode 2: Scrape by Search Filters

Search for products using keywords and filtering options:

```json
{
    "keyword": "lip",
    "sort_by": "popularity",
    "price_range": "10-1000",
    "on_sale": true,
    "in_stock": true,
    "page": 1,
    "max_items_per_url": 200
}
```

| Parameter | Description | Options |
|---|---|---|
| `keyword` | Search term (e.g., "lip", "milk", "coffee") | Any product keyword |
| `sort_by` | Sort order for results | `relevance`, `popularity`, `price`, `description` |
| `price_range` | Filter by price band | Format: `min-max` (e.g., `10-1000`) |
| `on_sale` | Show only discounted items | `true` or `false` |
| `in_stock` | Show only available items | `true` or `false` |
| `page` | Starting page number | Integer (e.g., `1`, `2`, `3`) |
| `max_items_per_url` | Maximum results per page | Integer (e.g., `200`) |

> **Note:** Leave `urls` empty when using search filters. The two modes are mutually exclusive.

***

### Output Format & Data Fields

**Sample output**

```json
{
    "inventory": {
      "locations": [
        {
          "location_id": "02100537",
          "available": 0,
          "stock_level": "TEMPORARILY_OUT_OF_STOCK"
        }
      ],
      "effective": {
        "total": 0,
        "available": 0
      }
    },
    "item": {
      "alcohol_flag": false,
      "assortments": [
        {
          "assortment_key": "5b3c218b-e8ae-490b-8fd5-9dd2d7bcae6f",
          "modality_enabled": true,
          "modality_type": "PICKUP"
        }
      ],
      "bounce_flag": false,
      "brand": {
        "name": "Shamrock Farms",
        "code": "4456"
      },
      "categories": [
        {
          "code": "76",
          "name": "Health"
        },
        {
          "code": "15",
          "name": "Dairy"
        }
      ],
      "click_list_item": true,
      "countries_of_origin": "UNITED STATES",
      "customer_facing_size": "12 fl oz",
      "dietary_information": [
        "Vegetarian",
        "Gluten Free",
        "Kosher",
        "Lactose Free",
        "Pescatarian"
      ],
      "description": "Rockin' Protein 30G Strawberry Protein Shake",
      "dimensions": {
        "height": "7.12 [in_i]",
        "width": "4.64 [in_i]",
        "length": "4.6 [in_i]"
      },
      "family_code": [
        "159"
      ],
      "family_tree": {
        "commodity": {
          "code": "060",
          "name": "FLUID MILK PRODUCTS"
        },
        "department": {
          "code": "05",
          "name": "DAIRY"
        },
        "sub_commodity": {
          "code": "34528",
          "name": "SPECIALTY/LACTOSE FREE MILK"
        }
      },
      "gluten_free_claim_name": "GLUTEN FREE CLAIM AND PRINTED ON PACKAGE",
      "gtin14": "00197854449250",
      "hazmat_flag": false,
      "home_delivery_item": false,
      "images": [
        {
          "perspective": "front",
          "url": "https://www.kroger.com/product/images/xlarge/front/0019785444925",
          "size": "xlarge"
        },
        {
          "perspective": "front",
          "url": "https://www.kroger.com/product/images/large/front/0019785444925",
          "size": "large"
        },
        {
          "perspective": "front",
          "url": "https://www.kroger.com/product/images/medium/front/0019785444925",
          "size": "medium"
        },
        {
          "perspective": "front",
          "url": "https://www.kroger.com/product/images/small/front/0019785444925",
          "size": "small"
        },
        {
          "perspective": "front",
          "url": "https://www.kroger.com/product/images/thumbnail/front/0019785444925",
          "size": "thumbnail"
        }
      ],
      "item_type_code": "0",
      "kroger_delivery_item": false,
      "live_naturally_eligible": false,
      "main_image_perspective": "front",
      "non_gmo": false,
      "nutritional_claims": [
        "Good Source of Fiber",
        "High Protein",
        "No Added Sugar"
      ],
      "omni_channel_brand_name": "Shamrock Farms",
      "organic_claim_name": "NO",
      "privacy_restricted": false,
      "privacy_restricted_states": [],
      "prop65": {
        "required": false
      },
      "prop65_info": {
        "required": false
      },
      "receipt_description": "RCKN PRTN STR 30G",
      "romance_description": "<p>Rockin’ Protein Strawberry 12oz 4pk packs 30 grams of high-quality protein and just 8 grams of net carbs into a deliciously smooth, strawberry flavor. Made with pure, fresh Shamrock Farms milk, it has no added sugars and is lactose-free—giving hard-worked muscles exactly what they need. Now available in a convenient 4-pack of 12oz bottles.</p><ul><li>30g of high quality protein</li><li>No added Sugar</li><li>Lactose Free</li><li>Ultra-Pasteurized</li><li>rBST Free</li><li>Good source of Fiber</li></ul>",
      "sales_channel_code": "STORE",
      "sales_channel_name": "Store",
      "seo_description": "rockin-protein-30g-strawberry-protein-shake",
      "share_link": "https://www.kroger.com/p/rockin-protein-30g-strawberry-protein-shake/0019785444925",
      "snap_eligible": true,
      "sold_in_store": false,
      "tare_value": 0,
      "tax_group_code": "PF050001",
      "taxonomies": [
        {
          "commodity": {
            "code": "010",
            "name": "Sports & Adult Nutrition"
          },
          "department": {
            "code": "22",
            "name": "Health & Wellness"
          },
          "sub_commodity": {
            "code": "00002",
            "name": "Protein Shakes"
          }
        },
        {
          "commodity": {
            "code": "001",
            "name": "Milk & Dairy Free Milk"
          },
          "department": {
            "code": "02",
            "name": "Dairy & Eggs"
          },
          "sub_commodity": {
            "code": "00016",
            "name": "Lactose Free"
          }
        }
      ],
      "temperature_indicator": "55688103655",
      "temperature_indicator_name": "Refrigerated",
      "upc": "0019785444925",
      "verified": true,
      "weight": "3.29 [lb_av]"
    },
    "location": {
      "locations": [
        {
          "aisle": {
            "description": "DAIRY",
            "number": "100",
            "side": "R"
          },
          "bay_in_aisle": "1",
          "num_of_facings": "1",
          "physical_shelf_number": "4",
          "shelf_position_in_bay": "13"
        }
      ]
    },
    "price": {
      "display_template": "WhiteTag",
      "order_by": "Unit",
      "sell_by": "Unit",
      "store_prices": {
        "regular": {
          "default_description": "$9.99",
          "expiration_date": {
            "value": "9999-12-31T00:00:00Z",
            "timezone": "UTC"
          },
          "nfor": 1,
          "nfor_price": "USD 9.99",
          "unit_price": "USD 9.99",
          "price": "USD 9.99",
          "equivalized_unit_price": {
            "amount": "20.81",
            "denomination": "CENT",
            "unit": "PER FLUID OUNCE"
          },
          "equivalized_unit_price_string": "$0.21/fl oz"
        },
        "source_location_id": "02100537",
        "seller_id": "KR001",
        "seller_name": "Kroger"
      }
    },
    "nutrition": {
      "allergens": "Contains Milk and its derivates. Free from Cereals and Their Derivatives,Lactose.",
      "components": [
        {
          "footers": [],
          "headers": [],
          "footnotes": [],
          "preparation_states": [
            {
              "description": "Unspecified",
              "nutri_facts": [
                {
                  "abbreviation": "mg",
                  "daily_value": "2",
                  "name": "Iron",
                  "value": "0.4"
                },
                {
                  "abbreviation": "mg",
                  "daily_value": "60",
                  "name": "Calcium",
                  "value": "800"
                },
                {
                  "abbreviation": "g",
                  "name": "Sugar",
                  "value": "8"
                },
                {
                  "abbreviation": "mg",
                  "daily_value": "10",
                  "name": "Magnesium",
                  "value": "45"
                },
                {
                  "abbreviation": "g",
                  "name": "Trans Fat",
                  "value": "0"
                },
                {
                  "abbreviation": "g",
                  "daily_value": "4",
                  "name": "Total Fat",
                  "value": "3.5"
                },
                {
                  "abbreviation": "kcal",
                  "name": "Calories",
                  "value": "190"
                },
                {
                  "abbreviation": "mg",
                  "daily_value": "13",
                  "name": "Sodium",
                  "value": "290"
                },
                {
                  "abbreviation": "mg",
                  "daily_value": "4",
                  "name": "Thiamin",
                  "value": "0.05"
                },
                {
                  "abbreviation": "g",
                  "daily_value": "10",
                  "name": "Saturated Fat",
                  "value": "2"
                },
                {
                  "abbreviation": "mg",
                  "daily_value": "40",
                  "name": "Phosphorus",
                  "value": "490"
                },
                {
                  "abbreviation": "g",
                  "daily_value": "11",
                  "name": "Dietary Fiber",
                  "value": "3"
                },
                {
                  "abbreviation": "mg",
                  "daily_value": "10",
                  "name": "Cholesterol",
                  "value": "30"
                },
                {
                  "abbreviation": "mcg",
                  "daily_value": "10",
                  "name": "Vitamin D",
                  "value": "2"
                },
                {
                  "abbreviation": "g",
                  "daily_value": "4",
                  "name": "Total Carbohydrate",
                  "value": "11"
                },
                {
                  "abbreviation": "g",
                  "name": "Added Sugar",
                  "value": "0"
                },
                {
                  "abbreviation": "mg",
                  "daily_value": "15",
                  "name": "Potassium",
                  "value": "600"
                },
                {
                  "abbreviation": "mcg",
                  "daily_value": "20",
                  "name": "Vitamin A",
                  "value": "160"
                },
                {
                  "abbreviation": "g",
                  "daily_value": "60",
                  "name": "Protein",
                  "value": "30"
                }
              ],
              "serving_size": "1 bottle (354mL)",
              "servings_per_container": "4.0",
              "html": "<!DOCTYPE html> <html lang='en'><head><meta charSet='UTF-8'/><meta name='viewport' content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no'/><link href='https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,300;0,400;0,700;1,400&amp;display=swap' rel='stylesheet'/><style>@charset 'UTF-8';html {  font-family: 'Nunito', sans-serif;  line-height: 1.15;  -ms-text-size-adjust: 100%;  -webkit-text-size-adjust: 100%;}.thin-line {  border: 0.5px solid black;  margin: 8px 2px;  padding: 0px 4px;}.med-line {  border: 2px solid black;  margin: 8px 2px;  padding: 0px 4px;}.thick-line {  border: 4px solid black;  margin: 8px 0px;  padding: 0px 4px;}.NutritionLabel {  padding: 0.5rem;  display: flex;  flex-direction: column;  width: 100%;}.NutritionLabel--Title {  font-size: 24px;  font-weight: bold;}.NutritionLabel-ServingsPerContainer {  font-size: 14px;  margin-bottom: 4px;}.NutritionLabel-ServingSize {  font-size: 14px;  font-weight: bold;  display: flex;  justify-content: space-between;}.NutritionLabel-AmountPerServing {  font-size: 12px;  font-weight: bold;  margin: 0px 0px 8px;}.NutritionLabel-Calories {  display: flex;  justify-content: space-between;  font-size: 24px;  font-weight: bold;}.NutritionLabel-DailyValueHeader {  color: #707172;  text-align: right;  font-size: 16px;  margin-bottom: 8px;}.NutritionLabel-Macros > .Nutrient:last-child > .thin-line {  display: none;}.NutritionLabel-Micros > .Nutrient:last-child > .thin-line {  display: none;}.Nutrient > * {  font-size: 14px;}.NutrientDetail {  display: flex;  justify-content: space-between;}.NutrientDetail-TitleAndAmount {  display: flex;  flex-wrap: wrap;}.NutrientDetail-Title {  padding-right: 4px;}.NutrientDetail-Amount {  color: #707172;}.NutrientDetail-Title.is-macronutrient {  font-weight: 700;}.NutrientDetail-Title.is-macronutrient.is-subnutrient {  font-weight: normal;  padding-left: 1rem;}.NutrientDetail-DailyValue.is-macronutrient {  font-weight: 700;}.NutritionLabel-DailyValueDisclaimer {  display: flex;  font-size: 10px;  color: #707172;}</style></head><body><section><div class='NutritionLabel'><div class='NutritionLabel--Title'>Nutrition Facts</div><hr class='med-line' aria-hidden='true'/><div class='NutritionLabel-ServingsPerContainer'>4.0 Servings Per Container</div><div class='NutritionLabel-ServingSize'><span>Serving size</span><span>1 bottle (354mL)</span></div><hr class='thick-line' aria-hidden='true'/><div class='NutritionLabel-AmountPerServing'>Amount per serving</div><div class='NutritionLabel-Calories'><span>Calories</span><span>190</span></div><hr class='med-line' aria-hidden='true'/><div class='NutritionLabel-DailyValueHeader'>% Daily value*</div><div class='NutritionLabel-Macros'><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-macronutrient '>Total Fat</span><span class='NutrientDetail-Amount'>3.5g</span></span><span class='NutrientDetail-DailyValue is-macronutrient '>4%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-macronutrient is-subnutrient'>Saturated Fat</span><span class='NutrientDetail-Amount'>2g</span></span><span class='NutrientDetail-DailyValue is-macronutrient is-subnutrient'>10%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-macronutrient is-subnutrient'>Trans Fat</span><span class='NutrientDetail-Amount'>0g</span></span><span class='NutrientDetail-DailyValue is-macronutrient is-subnutrient'></span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-macronutrient '>Cholesterol</span><span class='NutrientDetail-Amount'>30mg</span></span><span class='NutrientDetail-DailyValue is-macronutrient '>10%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-macronutrient '>Sodium</span><span class='NutrientDetail-Amount'>290mg</span></span><span class='NutrientDetail-DailyValue is-macronutrient '>13%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-macronutrient '>Total Carbohydrate</span><span class='NutrientDetail-Amount'>11g</span></span><span class='NutrientDetail-DailyValue is-macronutrient '>4%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-macronutrient is-subnutrient'>Dietary Fiber</span><span class='NutrientDetail-Amount'>3g</span></span><span class='NutrientDetail-DailyValue is-macronutrient is-subnutrient'>11%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-macronutrient is-subnutrient'>Sugar</span><span class='NutrientDetail-Amount'>8g</span></span><span class='NutrientDetail-DailyValue is-macronutrient is-subnutrient'></span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-macronutrient is-subnutrient'>Added Sugar</span><span class='NutrientDetail-Amount'>0g</span></span><span class='NutrientDetail-DailyValue is-macronutrient is-subnutrient'></span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-macronutrient '>Protein</span><span class='NutrientDetail-Amount'>30g</span></span><span class='NutrientDetail-DailyValue is-macronutrient '>60%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div></div><div><hr class='thick-line' aria-hidden='true'/><div class='NutritionLabel-Micros'><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-micronutrient '>Calcium</span><span class='NutrientDetail-Amount'>800mg</span></span><span class='NutrientDetail-DailyValue is-micronutrient '>60%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-micronutrient '>Iron</span><span class='NutrientDetail-Amount'>0.4mg</span></span><span class='NutrientDetail-DailyValue is-micronutrient '>2%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-micronutrient '>Magnesium</span><span class='NutrientDetail-Amount'>45mg</span></span><span class='NutrientDetail-DailyValue is-micronutrient '>10%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-micronutrient '>Phosphorus</span><span class='NutrientDetail-Amount'>490mg</span></span><span class='NutrientDetail-DailyValue is-micronutrient '>40%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-micronutrient '>Potassium</span><span class='NutrientDetail-Amount'>600mg</span></span><span class='NutrientDetail-DailyValue is-micronutrient '>15%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-micronutrient '>Thiamin</span><span class='NutrientDetail-Amount'>0.05mg</span></span><span class='NutrientDetail-DailyValue is-micronutrient '>4%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-micronutrient '>Vitamin A</span><span class='NutrientDetail-Amount'>160mcg</span></span><span class='NutrientDetail-DailyValue is-micronutrient '>20%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div><div class='Nutrient'><div class='NutrientDetail'><span class='NutrientDetail-TitleAndAmount'><span class='NutrientDetail-Title is-micronutrient '>Vitamin D</span><span class='NutrientDetail-Amount'>2mcg</span></span><span class='NutrientDetail-DailyValue is-micronutrient '>10%</span></div><hr class='thin-line' aria-hidden='true'/><div class='NutrientDetail-SubNutrients'></div></div></div></div><hr class='med-line' aria-hidden='true'/><div class='NutritionLabel-DailyValueDisclaimer'>*The % Daily Value (DV) tells you how much a nutrient in a serving of food contributes to a daily diet. 2,000 calories a day is used for general nutrition advice.</div></div></section></body></html>"
            }
          ],
          "ingredients": "Water, Skim Milk, Milk Protein Concentrate, Cream, Soluble Corn Fiber, Contains Less than 1% of: Artificial Flavor, Salt, Sodium Hexametaphosphate, Dipotassium Phosphate, Sucralose, Red Beet Powder (for Color), Carrageenan, Lactase Enzyme, Vitamin A Palmitate and Vitamin D3."
        }
      ],
      "gluten_free": true,
      "kosher": true,
      "live_naturally": false,
      "non_gmo": false,
      "organic": false,
      "product_warning": "Notice: Use this product as a food supplement only. Do not use for weight reduction. Do not microwave in bottle."
    },
    "id": "0019785444925",
    "source_locations": [
      {
        "id": "02100537",
        "item_locations": [
          {
            "aisle_description": "DAIRY",
            "aisle_number": "100",
            "aisle_side": "R",
            "area_id": "XXX",
            "area_type_code": "BW",
            "area_type_description": "Back Wall",
            "bay_number": "012",
            "bay_number_in_aisle": "1",
            "data_source": "JDA_TRUE_FLOOR_PLAN",
            "department_code": "DR",
            "department_description": "Dairy",
            "fixture_number": "4",
            "item_depth": "5.00000",
            "item_height": "7.13",
            "item_width": "5.00",
            "number_of_depth_facings": "4",
            "number_of_facings": "1",
            "number_of_vertical_facings": "2",
            "orientation_code": "X",
            "pog_name": "D021_L00000_D01_C060_V395_F020_MX",
            "position": "13",
            "shelf_number": "4",
            "shelf_position_in_bay": "13",
            "sub_area_id": "XXX",
            "sub_area_type_code": "XX",
            "sub_area_type_description": "XX"
          }
        ],
        "modality_availabilities": [
          {
            "availability": true,
            "modality_type": "DELIVERY"
          },
          {
            "availability": true,
            "modality_type": "IN_STORE"
          },
          {
            "availability": true,
            "modality_type": "PICKUP"
          },
          {
            "availability": false,
            "modality_type": "SHIP"
          }
        ],
        "prices": [
          {
            "display_template": "WhiteTag",
            "effective_date": {
              "timezone": "Z",
              "value": "2026-08-19T13:52:31.742Z"
            },
            "expiration_date": {
              "timezone": "Z",
              "value": "9999-12-31T00:00:00Z"
            },
            "order_by": "UNIT",
            "regular": {
              "default_description": "$9.99",
              "equivalized_unit_price": {
                "amount": "20.81",
                "denomination": "CENT",
                "unit": "PER FLUID OUNCE"
              },
              "n_for": {
                "count": 1,
                "price": "USD 9.99"
              },
              "price": "USD 9.99"
            },
            "sell_by": "UNIT",
            "seller_id": "KR001",
            "seller_name": "Kroger",
            "women_infant_child_flg": "N"
          }
        ],
        "restrictions": {
          "shippable": false
        },
        "inventory": [
          {
            "available_to_sell": 0,
            "seller_id": "KR001",
            "seller_name": "Kroger",
            "stock_level": "TEMPORARILY_OUT_OF_STOCK",
            "included": {
              "projections": []
            }
          }
        ],
        "laf": [
          {
            "modality": {
              "type": "PICKUP",
              "handoff_location": {
                "store_id": "02100537",
                "facility_id": "4000"
              },
              "handoff_address": {
                "address": {
                  "address_lines": [
                    "605 W 4Th St"
                  ],
                  "city_town": "Rolla",
                  "name": "Rolla",
                  "postal_code": "65401",
                  "state_province": "MO",
                  "residential": false,
                  "country_code": "US"
                },
                "location": {
                  "lat": 37.9467154,
                  "lng": -91.7762367
                }
              }
            },
            "sources": [
              {
                "store_id": "02100537",
                "facility_id": "4000"
              }
            ],
            "assortment_keys": [
              "5b3c218b-e8ae-490b-8fd5-9dd2d7bcae6f"
            ],
            "listing_keys": [
              "02100537"
            ]
          }
        ],
        "source_id": "02100537",
        "seller_id": "KR001",
        "seller_name": "Kroger"
      }
    ],
    "items_v1": {
      "product": {
        "family_tree": {
          "commodity": {
            "code": "060",
            "name": "FLUID MILK PRODUCTS"
          },
          "primary_department": {
            "code": "01",
            "name": "GROCERY",
            "recap_department": {
              "code": "01",
              "department": {
                "code": "05",
                "name": "DAIRY"
              },
              "name": "GROCERY"
            }
          },
          "sub_commodity": {
            "code": "34528",
            "name": "SPECIALTY/LACTOSE FREE MILK"
          }
        },
        "id": "2005059189",
        "nutritional_rating": "48",
        "variant_group_id": "6000000000127672"
      }
    },
    "laf": [
      {
        "assortment_keys": [
          "5b3c218b-e8ae-490b-8fd5-9dd2d7bcae6f"
        ],
        "listing_keys": [
          "02100537"
        ],
        "modality": {
          "handoff_address": {
            "address": {
              "address_lines": [
                "605 W 4Th St"
              ],
              "city_town": "Rolla",
              "country_code": "US",
              "postal_code": "65401",
              "state_province": "MO"
            }
          },
          "handoff_location": {
            "facility_id": "4000",
            "store_id": "02100537"
          },
          "type": "PICKUP"
        },
        "price_availabilities": [
          {
            "id": "02100537",
            "lookup": "LISTING_KEY",
            "store_id": "02100537"
          }
        ],
        "sources": [
          {
            "facility_id": "4000",
            "store_id": "02100537"
          }
        ]
      }
    ],
    "inventory_summaries": [
      {
        "modality_type": "PICKUP",
        "details": [
          {
            "source_id": "02100537",
            "available_to_sell": 0,
            "stock_level": "TEMPORARILY_OUT_OF_STOCK"
          }
        ],
        "available_to_sell": 0,
        "stock_level": "TEMPORARILY_OUT_OF_STOCK"
      }
    ],
    "fulfillment_options": [],
    "fulfillment_summaries": [
      {
        "type": "PICKUP",
        "regular": {
          "price": "USD 9.99",
          "display_template": "WhiteTag",
          "price_per_unit_string": "12 fl oz",
          "equivalized_unit_price": {
            "amount": "20.81",
            "denomination": "CENT",
            "unit": "PER FLUID OUNCE"
          },
          "equivalized_unit_price_string": "$0.21/fl oz"
        },
        "availability": {
          "sellable": false,
          "inventory_level": "TEMPORARILY_OUT_OF_STOCK",
          "unavailability_message": "Item Out of Stock"
        },
        "max_order_quantity": 0
      },
      {
        "type": "DELIVERY",
        "regular": {
          "price": "USD 9.99",
          "display_template": "WhiteTag",
          "price_per_unit_string": "12 fl oz",
          "equivalized_unit_price": {
            "amount": "20.81",
            "denomination": "CENT",
            "unit": "PER FLUID OUNCE"
          },
          "equivalized_unit_price_string": "$0.21/fl oz"
        },
        "availability": {
          "sellable": false,
          "unavailability_message": "Unavailable"
        }
      },
      {
        "type": "IN_STORE",
        "regular": {
          "price": "USD 9.99",
          "display_template": "WhiteTag",
          "price_per_unit_string": "12 fl oz",
          "equivalized_unit_price": {
            "amount": "20.81",
            "denomination": "CENT",
            "unit": "PER FLUID OUNCE"
          },
          "equivalized_unit_price_string": "$0.21/fl oz"
        },
        "availability": {
          "sellable": false,
          "unavailability_message": "Unavailable"
        }
      }
    ]
  }
```

Each product record contains comprehensive data across 12 primary fields:

#### Core Product Data

| Field | Description & Use |
|---|---|
| `ID` | Unique Kroger product identifier for database tracking and deduplication |
| `Item` | Product name, brand, and variant information as displayed on Kroger.com |
| `Location` | Store location(s) where the product is available or unavailable |
| `Price` | Current retail price, including any active discounts or promotions |
| `Nutrition` | Nutritional information (calories, macros, ingredients, allergens) for food products |

#### Inventory & Availability

| Field | Description & Use |
|---|---|
| `Inventory` | Real-time stock status (in stock, out of stock, limited availability) |
| `Inventory Summaries` | Aggregated inventory across multiple store locations |
| `In Stock` | Boolean flag indicating product availability for purchase |

#### Advanced Fields

| Field | Description & Use |
|---|---|
| `Source Locations` | Store IDs and geographic locations carrying the product |
| `Fulfillment Options` | Available delivery methods (in-store pickup, ship to home, delivery) |
| `Fulfillment Summaries` | Delivery timelines and availability by fulfillment channel |
| `Items V1` | Legacy or variant product data linked to the main item |
| `LAF` | Product classification or category metadata (internal Kroger taxonomy) |

***

### How to Use the Scraper

#### Step 1: Choose Your Input Mode

**Using URLs:**

1. Navigate to Kroger.com and find a product category or search results page you want to scrape
2. Copy the full URL (e.g., `https://www.kroger.com/pl/milk-dairy-free-milk/02001`)
3. Paste into the `urls` array

**Using Keywords:**

1. Enter a search term in the `keyword` field (e.g., "organic milk", "cereal", "coffee")
2. (Optional) Add filters: price range, sale status, stock status
3. Set `sort_by` to your preferred order (relevance, popularity, price, alphabetical)

#### Step 2: Configure General Settings

- Set `max_items_per_url` to control volume (recommended: 50–200 for balanced speed/completeness)
- Enable `ignore_url_failures` for batch runs to prevent interruptions
- Keep proxy settings as default (RESIDENTIAL, US) for reliable access

#### Step 3: Run & Export

1. Start the scraper and monitor the run log for progress
2. Download results as JSON, CSV, or Excel
3. Load data into your analytics platform, spreadsheet, or database

**Troubleshooting:**

- If results are sparse, verify keywords match actual Kroger products
- Adjust `price_range` to match typical product pricing (e.g., "0-50" for groceries)
- If blocked, ensure proxy is enabled and try again

***

### Use Cases & Business Value

**Competitive Intelligence:** Monitor competitor pricing on bestselling products and spot promotional patterns across categories.

**Market Research:** Identify product trends, brand performance, and consumer demand by analyzing Kroger's product catalog over time.

**Price Optimization:** Feed real-time Kroger prices into your pricing engine to maintain competitiveness in the grocery vertical.

**Inventory Analysis:** Track product availability across locations to understand supply chain efficiency and demand patterns.

**Product Data Aggregation:** Build your own grocery price comparison or aggregator platform with comprehensive Kroger product data.

The Kroger Product Search Scraper transforms time-consuming manual research into automated, scalable data collection — delivering insights that inform strategy and reduce operational overhead.

***

### Conclusion

The **Kroger Product Search Scraper** offers a powerful, flexible way to extract product data from one of America's largest grocery retailers. Whether you're monitoring prices, analyzing trends, or building a data-driven application, this scraper delivers structured, ready-to-use product records with minimal setup. Start scraping today and unlock competitive insights in the grocery space.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the product search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `keyword` (type: `string`):

Enter the keyword to search for items

## `sort_by` (type: `string`):

Sort items by options

## `price_range` (type: `string`):

Price range to filter by, in the format `min-max`, e.g. `100-2000`

## `on_sale` (type: `boolean`):

Show only items on sale

## `in_stock` (type: `boolean`):

Show only items in stock

## `page` (type: `integer`):

Specify the page number to start scraping from

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.kroger.com/pl/milk-dairy-free-milk/02001"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.kroger.com/pl/milk-dairy-free-milk/02001"
    ],
    "ignore_url_failures": true,
    "on_sale": false,
    "in_stock": false,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/kroger-product-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.kroger.com/pl/milk-dairy-free-milk/02001"],
    "ignore_url_failures": True,
    "on_sale": False,
    "in_stock": False,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/kroger-product-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.kroger.com/pl/milk-dairy-free-milk/02001"
  ],
  "ignore_url_failures": true,
  "on_sale": false,
  "in_stock": false,
  "max_items_per_url": 20
}' |
apify call stealth_mode/kroger-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,stealth_mode/kroger-product-search-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/lzfuload41qFqpwbU/builds/vExCaxeLlCREONseP/openapi.json
