Search Kroger.com by keyword and store to get live product data. Extract price, unit price, stock level, brand, size, and images per store location. Built for price comparison apps, grocery deal trackers, and CPG brand monitoring. No login required.
- Store-level accuracy: Prices and stock are tied to one real Kroger store, not a national average.
- Real unit pricing: Get price per ounce or per count, the same numbers Kroger shows shoppers.
- Live stock status: See what is actually on the shelf before you plan around it.
- Full product detail: Brand, size, dietary tags, and images land in the same row.
- No login required: Only public product listings are read, nothing behind an account wall.
- Open Kroger Scraper on the Apify platform and click Try for free or Start.
- Find your store's ID from the Kroger store locator, or by picking a store on kroger.com and checking the page URL. Paste it into Store location ID.
- Add one or more search terms, such as "eggs" or "cocoa pebbles", under Search terms.
- Click Start: The actor collects every matching product and writes one flat row per item.
- Download your results: Export as Excel, CSV, JSON, or HTML from the Output tab.
You can also schedule this actor to run daily or weekly, so your price and stock data stays current without any manual work.
| Field | Type | Required | Description |
|---|---|---|---|
searchTerms |
array of strings | Yes | Keywords to search on Kroger.com, one search per keyword. |
storeLocationId |
string | No | The Kroger store ID to price and check stock against. Find it via the Kroger store locator or from the URL after picking a store on kroger.com. |
maxItems |
integer | No | Maximum number of products to return across all search terms. Set to 0 for unlimited. |
proxyConfiguration |
object | No | Proxy used to reach Kroger.com. Residential is the default and recommended setting. |
Each row in your dataset is one product, scoped to the store location you chose. All fields are flat with no nested data, so the file opens cleanly in any spreadsheet program.
{
"productId": "00011110401014",
"title": "Kroger Vitamin D Whole Milk Gallon",
"brand": "Kroger",
"category": "Dairy",
"price": 3.39,
"priceFormatted": "$3.39",
"unitPrice": "$0.03/fl oz",
"inStock": true,
"stockLevel": "HIGH",
"size": "1 gal",
"dietaryInfo": ["Vegetarian", "Kosher", "Pescatarian"],
"image": "https://www.kroger.com/product/images/xlarge/back/0001111040101",
"sellerName": "Kroger",
"storeLocationId": "01600803",
"upc": "00011110401014",
"query": "milk",
"scrapedAt": "2026-07-08T06:19:39.364Z"
}| Field | Type | Description |
|---|---|---|
title |
string | Product name as shown on Kroger.com. |
brand |
string | Brand name. |
category |
string | Department or category, such as Dairy or Bakery. |
price |
number | Numeric regular price in USD. |
priceFormatted |
string | Display-formatted price, such as "$3.39". |
unitPrice |
string | Price per unit, such as "$0.03/fl oz". |
inStock |
boolean | Whether the product is currently in stock at the chosen store. |
stockLevel |
string | Inventory level label, such as HIGH, LOW, or OUT_OF_STOCK. |
size |
string | Package size, such as "1 gal" or "11 oz". |
dietaryInfo |
array | Dietary tags, such as Vegetarian, Gluten Free, or Kosher. |
image |
string | Product image URL. |
sellerName |
string | Seller of record, usually Kroger. |
storeLocationId |
string | Store location ID this price and stock reading applies to. |
upc |
string | UPC or GTIN-14 barcode. |
query |
string | The search keyword that produced this row. |
scrapedAt |
string | Timestamp of when the item was collected. |
Fields that are not available for a given product are left out of that row rather than filled with a placeholder, so every value in your dataset is real.
$4.40 per 1,000 results. Each dataset item is charged at $0.0044 per product. No monthly subscriptions and no minimum commits. New Apify accounts include $5 of free usage, so you can try it before you pay.
You only pay for the products actually returned. An empty run costs nothing.
Create a .env file from .env.example, add your Apify API token, and run:
npm install
npm startThe script uses the Apify API client to start Kroger Scraper and fetch results.
- Use specific search terms: Terms like "whole wheat bread" instead of "bread" keep results tightly matched to what you need.
- Set a Max items limit for exploratory runs: Remove it once you know the volume of results a keyword returns.
- Schedule the actor to run daily or weekly: Build a price and stock history over time.
- Track multiple stores separately: Run the actor once per store location ID, either as separate tasks or a schedule.
Does this actor work for any Kroger store location? Yes. Prices and stock are store-specific on Kroger.com, so you provide the store location ID for the store you want to track. You can run the actor separately for as many stores as you need.
Why do some rows have missing fields, like stock level? Kroger does not return every field for every product. Rather than guess or fill in a placeholder, this actor leaves those fields out of the row so your data stays accurate.
Can I search for a whole category instead of one keyword? Yes, broader terms like "cereal" or "yogurt" work the same way as specific product names and return every matching result.
Is this legal? This actor only reads public product listings that are visible to any shopper on Kroger.com. It does not access accounts, place orders, or collect personal data. Review Kroger's terms of service if you plan to use the data commercially at scale.
For bug reports, missing fields, or feature requests, open an issue under the Issues tab, or visit the Kroger Scraper actor page on Apify.
