Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Kroger Price Monitor: Price and Stock Change Alerts

Apify Actor Actor Version Actor Price GitHub Issues Last Commit

Track Kroger.com prices and stock by keyword and store, returning only the rows that changed. Flags price drops, price rises, back-in-stock, and new listings run over run. Built for deal-alert tools, repricing bots, and CPG competitive monitoring.

Kroger Price Monitor on Apify


Why use Kroger Price Monitor

  • Change-only alerts: Get a row back only when a price actually moves, stock runs out, or a new product appears, instead of re-reading a full catalog every run.
  • Price drop and rise tracking: See the old price, the new price, and the exact percent change for every product that moved.
  • Stock status changes: Know the moment an item sells out or comes back in stock at your chosen store.
  • New listing detection: Catch new products the moment they show up in your tracked keywords.
  • Built for schedules: Point it at a keyword and store once, then let it run daily or weekly without babysitting it.

How to use Kroger Price Monitor

  1. Open Kroger Price Monitor on the Apify platform and click Try for free or Start.
  2. 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.
  3. Add one or more search terms, such as "milk" or "eggs", under Search keywords.
  4. Click Start: The actor collects every matching record and writes one flat row per item that changed.
  5. Download your results: Export as Excel, CSV, JSON, or HTML from the Output tab, or schedule the actor to run daily or weekly so your alerts keep working without manual effort.

Input

Field Type Required Description
searchTerms array of strings Yes Keywords to monitor on Kroger.com, such as "milk" or "eggs". One search runs per keyword per scheduled run.
storeLocationId string No The Kroger store ID whose prices and stock you want to track. Defaults to a sample store.
onlyChanged boolean No When enabled, only products whose price or stock status changed since the last run are returned. Defaults to true.
maxItems integer No Hard cap on total rows returned across all keywords. Set to 0 for unlimited. Defaults to 100.
proxyConfiguration object No Proxy used to reach Kroger.com. Residential is the default and recommended setting for reliable access.

Output

Each row in your dataset is one product that matched your criteria. All fields are flat with no nested data, so the file opens cleanly in any spreadsheet program.

{
  "query": "eggs",
  "productId": "00011110609038",
  "title": "Kroger Grade A Large White Eggs",
  "brand": "Kroger",
  "category": "Dairy",
  "price": 1.19,
  "priceFormatted": "$1.19",
  "inStock": true,
  "stockLevel": "HIGH",
  "image": "https://www.kroger.com/product/images/xlarge/front/0001111060903",
  "storeLocationId": "02100537",
  "changeType": "PRICE_DROP",
  "oldPrice": 1.59,
  "priceDelta": -0.4,
  "priceDeltaPct": -25.16,
  "isChanged": true,
  "scrapedAt": "2026-07-08T06:31:46.674Z"
}

Data table

Field Type Description
query string The search keyword that produced this row.
productId string UPC or GTIN-14 barcode, used as the stable product identifier.
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 Current numeric price in USD.
priceFormatted string Display-formatted price, such as "$1.19".
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.
image string Product image URL.
storeLocationId string Store location ID this price and stock reading applies to.
changeType string One of NEW, PRICE_DROP, PRICE_RISE, BACK_IN_STOCK, OUT_OF_STOCK, or UNCHANGED.
oldPrice number The price recorded on the previous run, present only on changed rows.
priceDelta number The dollar difference between old and new price, present only on price changes.
priceDeltaPct number The percent difference between old and new price, present only on price changes.
oldInStock boolean The stock status recorded on the previous run, present only on stock changes.
isChanged boolean True if this row represents any kind of change since the last run.
scrapedAt string Timestamp of when the item was collected.

Fields that are not available for a given product are left out rather than filled with a placeholder, so every value in your dataset is real.


Pricing

$0.0044 per dataset item ("Price change"), about $4.40 per 1,000 results. 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 rows actually returned. An empty run, meaning nothing changed since last time, costs nothing beyond the platform's usual run overhead.


Quick start

Create a .env file from .env.example, add your Apify API token, and run:

npm install
npm start

The script uses the Apify API client to start Kroger Price Monitor and fetch results.


Tips and optimization

  • Run Kroger Scraper first: Use the companion full-catalog actor once to see the complete picture for your keywords, then point this actor at the same keywords and store to start tracking changes.
  • Use specific search terms: Try "whole wheat bread" instead of "bread" so change alerts stay tightly focused on what you actually track.
  • Confirm the baseline first: Turn off Only emit changed products for your first run against a new keyword or store, so you can see the full picture before switching to change-only alerts.
  • Match your schedule to the category: Run daily for fast-moving categories, or weekly for slower ones, to control how often you get pinged.

FAQ

Does this actor get blocked by Kroger? Kroger runs strong bot defenses. This actor routes through premium residential proxies and retries automatically, so occasional blocked attempts on a single keyword are retried before being reported, rather than silently failing your run.

How does it know what changed since last time? The actor keeps its own private record of the last known price and stock status for every product it has seen, separate from your run's dataset. Each new run compares fresh data against that record before deciding what counts as changed.

Does it extract private account or personal data? No. This actor only reads public product listings that are visible to any shopper on Kroger.com. It does not log in, access accounts, place orders, or collect personal data.

How fresh is the price and stock data? Every run reads live prices and stock directly from Kroger.com at the moment it runs. There is no cached or delayed data, so what you see reflects the store's current listing.


Support

For bug reports, missing fields, or feature requests, open an issue under the Issues tab, or visit the Actor page on Apify.

About

Track Kroger.com prices and stock by keyword and store, returning only the rows that changed. Flags price drops, price rises, back-in-stock, and new listings run over run. Built for deal-alert tools, repricing bots, and CPG competitive monitoring.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages