Kroger Product & Price Scraper
Pricing
from $5.00 / 1,000 dataset items
Kroger Product & Price Scraper
Scrape Kroger.com grocery products — store-scoped prices, promos, unit price, stock level, ratings, brand, size, categories and images — by keyword, UPC, product URL, or the full catalog. Compare prices across multiple stores. Clean JSON for Sheets or BI. Pay only for the results you get.
Pricing
from $5.00 / 1,000 dataset items
Rating
0.0
(0)
Developer
axly
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
Extract Kroger.com grocery products — with store-specific prices, promotions, stock levels, ratings and images — by keyword, UPC, product URL, or the entire catalog. Kroger prices and availability change from store to store; this Actor lets you pin a store (or compare several) and returns clean, structured JSON ready for Sheets, BI or your app.
It renders each page through a real browser, so Kroger's Akamai anti-bot layer doesn't break your run — and it combines search and full product detail in one rich row.
Who uses this
- Price intelligence & CPG analysts — monitor price, promo and unit price by store; compare the same SKU across multiple locations.
- Grocery & deal/coupon sites — surface sale items, unit prices and stock at the shopper's local store.
- App & SaaS developers — a stable JSON product feed with UPC lookup and whole-catalog enumeration.
- Market researchers — assortment, brands, categories and ratings across Kroger's catalog.
What you get (output fields)
| Field | Type | Description |
|---|---|---|
upc / gtin14 | string | Kroger product identifiers |
title | string | Product name |
brand | string | Brand name |
size | string | Customer-facing size (e.g. 28 fl oz) |
department / commodity / subCommodity | string | Kroger taxonomy |
categories | array | Category breadcrumb |
regularPrice | number | Regular price at the chosen store |
promoPrice | number | Promo/sale price when on sale |
onSale | boolean | Whether a promo price is active |
priceDisplay | string | Price as shown (e.g. $5.99) |
unitPrice | string | Equivalized unit price (e.g. $0.21/fl oz) |
currency | string | USD |
stockLevel | string | HIGH / LOW / TEMPORARILY_OUT_OF_STOCK … |
available | number | Units available at the store |
fulfillment | array | e.g. PICKUP, DELIVERY, IN_STORE |
rating / reviewCount | number | Average rating and review count |
dietaryInformation | array | Dietary claims (e.g. Gluten Free, Kosher, Organic) |
countryOfOrigin | string | Country of origin when available |
weight / dimensions | string / object | Pack weight and dimensions when available |
imageUrl / images | string / array | Product image URLs |
url | string | Product page URL |
storeLocationId | string | Store the price/stock is for |
sourceType / sourceValue | string | How the row was found (search, upc, product_url, catalog) |
scrapedAt | string | ISO-8601 timestamp |
Note: Kroger's public web catalog exposes dietary claims (Gluten Free, Organic, Kosher…), not a full nutrition-facts panel or ingredient list.
High-value use cases
- Multi-store price comparison — pass several
storeLocationIdsand watch how price, promo and stock differ by location for the same UPC. - Promo & markdown tracking — schedule daily runs on a keyword or UPC set and diff
promoPrice/onSaleto catch deals and price changes. - Assortment & share-of-shelf — search category keywords to map brands, sizes and ratings across the catalog.
- Catalog feed — enumerate the whole catalog (via the sitemap) to seed a product database, then keep it fresh with targeted UPC runs.
- Competitive/retail media analytics — combine price, unit price and stock signals into dashboards.
Input parameters
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | array | — | Keywords to search (each returns ~24 full-detail products) |
upcs | array | — | 13-digit UPCs to look up |
productUrls | array | — | https://www.kroger.com/p/<slug>/<upc> URLs |
scrapeAllProducts | boolean | false | Enumerate the whole catalog via the sitemap |
locationId | string | 02100953 | Store whose prices/stock to use |
storeLocationIds | array | — | Optional list of stores to compare (overrides locationId) |
maxItems | integer | 100 | Stop after this many rows (store × product) |
zyteApiKey | string | — | Optional — use your own Zyte key |
Provide at least one of searchQueries, upcs, productUrls, or scrapeAllProducts. Find a store's locationId in Kroger's store locator (the 8-digit store number).
Example input
{"searchQueries": ["almond milk", "organic coffee"],"storeLocationIds": ["02100953", "70600346"],"maxItems": 100}
Example output row
{"upc": "0086102900012","title": "MALK Organic Vanilla Almond Milk - Dairy Free","brand": "Malk","size": "28 fl oz","categories": ["Natural & Organic", "Dairy"],"regularPrice": 5.99,"promoPrice": null,"onSale": false,"unitPrice": "$0.21/fl oz","currency": "USD","stockLevel": "LOW","available": 4,"fulfillment": ["PICKUP"],"rating": 4.5,"reviewCount": 12,"dietaryInformation": ["Gluten Free", "Kosher"],"imageUrl": "https://www.kroger.com/product/images/xlarge/front/0086102900012","url": "https://www.kroger.com/p/malk-organic-vanilla-almond-milk-dairy-free/0086102900012","storeLocationId": "02100953","sourceType": "search","scrapedAt": "2026-08-21T12:00:00+00:00"}
Scheduling & integrations
- Schedule daily/hourly runs from the Apify Console to track prices and stock over time.
- Webhooks fire on run completion — push new rows to your endpoint.
- Export to JSON, CSV, Excel, or Google Sheets; or pull from the Dataset API.
- Wire into Make, Zapier, n8n, or an S3 bucket for a hands-off pipeline.
Use it from an AI assistant (MCP)
This Actor runs great as a tool for AI agents via the Apify MCP server. Point your MCP-compatible client (Claude, Cursor, VS Code) at Apify, then ask it to run axlymxp/kroger-product-scraper with a searchQueries or upcs input and read the dataset back — perfect for on-demand grocery price lookups inside an agent workflow.
FAQ
Which store's prices do I get? The store set by locationId (or each of storeLocationIds). Kroger prices, promos and stock are store-scoped, so always set the store you care about.
How many products per search? Each keyword returns Kroger's first result page (~24 products) with full detail. Use upcs / productUrls for exact items, or scrapeAllProducts for the whole catalog.
How fresh is the data? Every row is fetched live at run time and stamped with scrapedAt. Schedule runs for time series.
Is it reliable against Kroger's anti-bot? Yes — pages are rendered through a real residential browser, which clears Akamai Bot Manager that blocks plain HTTP scrapers.
Do I need my own Zyte key? No. A key is built in; you can optionally supply zyteApiKey to use your own account.
Is this legal? The Actor collects only publicly available catalog data (no login, no personal data). You are responsible for complying with Kroger's Terms and applicable laws.
Nutrition facts / ingredients? The public web catalog exposes dietary claims (Organic, Gluten Free…) but not a full nutrition panel or ingredient list, so those aren't included.
Support. Issues are monitored and typically answered within a day — open an issue on the Actor page.