Grocery price and promotion monitoring
Mit Kroger-Endpunkten verwandelst du grocery price and promotion monitoring in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Turn Kroger's public grocery data into structured JSON — keyword search and category browse returning priced product cards with unit price, size, SNAP EBT eligibility and low-stock flags, faceted filtering on brand, dietary, flavor, scent, savings and price, bulk product detail for up to 50 items at a time carrying nutrition facts, ingredients, allergens, store-specific price and stock and the full rating histogram, customer reviews, search-refinement chips, digital coupons, and store detail. Credential-free.
Search Kroger groceries with facet filters, get product detail in bulk with nutrition and store pricing, and pull digital coupons as JSON.
Endpunkt-Familien
6
Dokumentierte Parameter
49
Beispiele
10
Live-Katalog-Snapshot
Aktive Endpunkte
10
Methoden
GET
Pflichtparameter
18
Schema-Referenzen
10
{
"platform": "Kroger",
"endpoint": "kroger-search",
"method": "GET",
"path": "/kroger/search",
"auth": "apiKey"
}Use Cases
Search Kroger groceries with facet filters, get product detail in bulk with nutrition and store pricing, and pull digital coupons as JSON.
Mit Kroger-Endpunkten verwandelst du grocery price and promotion monitoring in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Mit Kroger-Endpunkten verwandelst du product assortment and availability research in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Mit Kroger-Endpunkten verwandelst du nutrition and dietary-attribute analysis in wiederholbare API-Requests mit dokumentierten Inputs und JSON-Antworten.
Managed Execution
Jede Zahl unten stammt direkt aus dem Live-Kroger-Endpunktkatalog — 10 Endpunkte, 49 dokumentierte Request-Parameter und 10 veröffentlichte Response-Schemas — demselben Katalog, gegen den auch Docs und Playground laufen.
10 documented Kroger endpoints, grouped into 9 request families — Product, Categories and Category, plus 6 more.
49 request parameters are documented across those Kroger endpoints, 18 of them required — the full input contract is public before you write any integration code.
10 of the 10 Kroger endpoints ship a recorded example response, and 10 carry a documented response schema — you can code against the real JSON before the first request.
Kroger endpoints document their error responses (400, 404, 429 and 503) alongside the success schema, so a block, a rate limit, or a missing record comes back as a typed error rather than silently empty data.
10 hosted MCP tools back the Kroger endpoints, so an agent can call the same routes with the same parameters and the same JSON contract, with no custom glue.
Abdeckungskarte
/kroger/product
/kroger/categories
/kroger/category
/kroger/coupons
/kroger/products
/kroger/related-tags
Endpunktkatalog
/kroger/searchSearches Kroger products by keyword and returns product cards (price, unit price, brand, size, stock level) plus the facet groups Kroger offers for the query (brands, nutrition, savings, price range and more). It supports real pagination, and the source field reports which path answered. Facet filters and sort apply to the primary path only: when any of them is set, a failure of that path returns an error rather than silently falling back to unfiltered results.
Hinweise zur Response
- **Filters and sort apply to the `json_api` path only.** When any of them is set and that path fails, the request returns an error instead of falling back to the rendered page — the HTML path cannot honor these filters, so returning its unfiltered results would be wrong. Unfiltered requests still fall back as before. - Each result's `upc` is usable directly as the `upc` query parameter to [`/kroger/product`](kroger-product.md). - For browsing a specific product category instead of keyword search, see [`/kroger/category`](kroger-category.md), which returns results in this same shape. - `total_count` reflects the number of results Kroger's own page reports as loaded, not necessarily every result matching the query — Kroger's search page loads results in batches behind a "Load More Results" control. - `source` reports which upstream path served the response: `json_api` (Kroger's own search API, the primary path) or `html` (the rendered-page fallback, used only when the JSON path is unavailable). - **Pagination is real on the `json_api` path** — it uses Kroger's own page offset/size, and `has_more` reports whether further pages exist. On the `html` fallback `has_more` is always `false` and paging past page 1 remains best-effort. - `facets` lists the refinement groups Kroger offers for the query (brands, nutrition, savings, price range and more), each value with its result count. Only populated on the `json_api` path. - `brand` and `stock_level` are populated on the `json_api` path only; the rendered result cards carry neither. - A missing `query` returns `400` before any upstream request is made.
MCP-Tool kroger_search
/kroger/categoryBrowses a Kroger product category and returns product cards plus facet groups, in the same shape as kroger-search. slug and category_id together identify the category (e.g. "pet" and "27" for kroger.com/pl/pet/27) -- call kroger-categories to discover every valid slug/category_id pair. It uses category_id as a taxonomy filter, with real pagination, and the source field reports which path answered. Facet filters and sort apply to the primary path only: when any of them is set, a failure of that path returns an error rather than silently falling back to unfiltered results.
Hinweise zur Response
- **Filters and sort apply to the `json_api` path only.** When any of them is set and that path fails, the request returns an error instead of falling back to the rendered page — the HTML path cannot honor these filters, so returning its unfiltered results would be wrong. Unfiltered requests still fall back as before. - Each result's `upc` is usable directly as the `upc` query parameter to [`/kroger/product`](kroger-product.md). - `total_count` is Kroger's own count of matching products on the `json_api` path. On the `html` fallback it reflects only what that page reported as loaded. - `source`, `has_more`, `facets`, `brand` and `stock_level` behave exactly as documented for [`/kroger/search`](kroger-search.md) — the two endpoints share one implementation, with `category_id` sent as a taxonomy filter instead of a keyword query. - **Pagination is real on the `json_api` path**; on the `html` fallback it remains best-effort. - A missing `slug` or `category_id` returns `400` before any upstream request is made.
MCP-Tool kroger_category
/kroger/productsReturns full detail for up to 50 Kroger products in one call. Carries materially more than kroger-product: a nutrition-facts panel with ingredients, allergens and dietary flags; store-specific price and stock level; a full star-rating histogram; the merchandising hierarchy; and every image perspective. location_id scopes price and stock to one store.
Hinweise zur Response
- `price` reflects one store's regular price. `amount`/`currency` are the parsed form of Kroger's own `"USD 2.19"` price strings, with the display string kept in `display` and the unit price in `unit_price_text`. `seller_id`/`seller_name` identify the seller (Kroger itself, or a marketplace seller). - `inventory.stock_level` is Kroger's own coarse label (e.g. `HIGH`) and is passed through as-is rather than mapped to a fixed set. - `nutrition` is omitted entirely for products Kroger publishes no nutrition data for (non-food items). - Products the upstream returns with no usable identity are dropped rather than surfaced as blank entries, so `count` can be lower than the number of UPCs requested.
MCP-Tool kroger_products
/kroger/productReturns product detail for one Kroger item: title, description, image, brand, category trail, price/availability, and rating.
Hinweise zur Response
- `offer.availability` is one of `in_stock`, `out_of_stock`, `limited_availability`, `preorder`, `discontinued`, `sold_out`, or `unknown`. - `brand`, `image_url`, `categories`, `offer`, `rating_value`, and `rating_count` are omitted when Kroger's own page does not carry them for a given product. - This endpoint does not support store-specific pricing — Kroger's product page has no confirmed store-selection query parameter; price/availability reflect Kroger's default/anonymous session for the item. - A `upc` that does not resolve to a real product returns `404`. - A missing `upc` returns `400` before any upstream request is made.
MCP-Tool kroger_product
/kroger/product/reviewsReturns one page of a Kroger product's customer reviews -- review text, star rating, recommendation flag, helpful-vote counts, and customer photo URLs -- alongside the product's full star histogram. Customer display names are deliberately not returned.
Hinweise zur Response
- Customer display names are deliberately **not** returned. This endpoint surfaces review content and its metrics only. - `rating` is the whole product's star histogram, not just the current page's — it stays constant across pages. - `photos` carries customer-submitted review images, one entry per available size. - A product with no reviews returns an empty `reviews` list with `total_count: 0` — a success, not an error.
MCP-Tool kroger_product_reviews
/kroger/related-tagsReturns the search-refinement chips Kroger shows above its own results for a query (e.g. "chips ahoy" returns "chewy", "chunky", "thins"). Each tag carries the full follow-on query it maps to, so results feed straight back into kroger-search.
Hinweise zur Response
- `query` on each tag is the complete search string to run next, not just the tag appended — use it directly as `/kroger/search`'s `query`. - `position` is Kroger's own display order, preserved as returned. - `source` is Kroger's own provenance label for the tag (e.g. `CURATED`), passed through rather than constrained to a fixed set. - A query with no refinements returns an empty `related_tags` list — a success, not an error.
MCP-Tool kroger_related_tags
/kroger/couponsReturns a page of Kroger's public digital coupons: savings value, requirement text and quantity, brand, categories, redemption modalities, promotional tags, image, and start/end/expiry dates. Optionally narrow to one product (upc) or brand. This is the anonymous public coupon catalog -- per-account clipping state is not returned.
Hinweise zur Response
- This is the anonymous public coupon catalog. Per-account clipping state (whether a signed-in shopper already added a coupon to their card) is **not** returned. - `value` and `savings` are the coupon's monetary value in dollars; `requirement_quantity` is how many qualifying items must be purchased. - `modalities` lists where the coupon can be redeemed (e.g. `PICKUP`, `DELIVERY`, `IN_STORE`). - `start_date`/`end_date` are the display window; `expiration_date` is the hard expiry, which is usually later.
MCP-Tool kroger_coupons
/kroger/storeReturns one Kroger store's public detail: postal address, geographic coordinates, phone number, displayed opening hours (including any daily break hours), and whether it has a drive-thru. store_id is the same store/location id kroger-products and kroger-suggest accept.
Hinweise zur Response
- `hours` rows use Kroger's own day groupings (e.g. `Mon - Fri`), not one row per weekday. `break_hours` carries any daily closure window (Kroger publishes these for pharmacy counters). - `is_today` marks the row covering the current day in the store's own timezone, as Kroger computes it. - Only shopper-facing fields are returned. Kroger's upstream payload also carries an internal operational block (EDI flags, processing times, internal facility codes); that is deliberately not surfaced. - An unknown `store_id` returns `404`.
MCP-Tool kroger_store
/kroger/suggestReturns Kroger's own search-box suggestions for a (possibly empty) query, sourced directly from Kroger's public suggestions API rather than the rendered search page. An empty query returns Kroger's default "trending" shopping shortcuts instead of an error. location_id scopes results to one Kroger store and defaults to a confirmed-working store id when omitted.
Hinweise zur Response
- Each item in `suggestions` has a `type` — `SUGGESTION` for a term suggestion, `TRENDING` for a default shopping shortcut shown when `query` is omitted — passed through from Kroger's own API rather than validated against a fixed list, so a future third type still surfaces. - `spelling_correction` is set only when `query` returned zero suggestions and Kroger judged it a likely typo (e.g. `Marble cake` → `maple cake`); it is omitted otherwise. - A genuinely empty `suggestions` list (with or without `spelling_correction`) is a normal, successful response — not an error.
MCP-Tool kroger_suggest
/kroger/categoriesReturns Kroger's full product-browse category taxonomy: every slug/category_id pair kroger-search and kroger-category accept, each with its department and full breadcrumb. This is how to discover valid slug/category_id values -- previously the only way was to already have one from a search response's facet group. Sourced from Kroger's own site navigation menu; covers every category a shopper can browse to from Kroger's site menu (321 at time of writing across 7 departments). Takes no parameters.
Hinweise zur Response
- `categories[]` is a flat list — every leaf category a shopper can browse to from Kroger's own site menu. 321 entries across 7 departments (Fresh, Grocery, Beer/Wine/Liquor, Health/Beauty/Baby, Cleaning/Household, Home/Electronics/Toys, Pet) at time of writing. - Each entry's `category_id` and `slug` are directly usable as `kroger-category`'s own `category_id` and `slug` query parameters. - `department` is a convenience field equal to `breadcrumb[0]`. - `breadcrumb` is the full department > aisle > category path. Kroger's own menu sometimes repeats a level's name at the next level down (e.g. "Fresh Fruit & Vegetables" as both an aisle group and its own sole subgroup); that repetition is collapsed so the breadcrumb reads cleanly without losing a real hierarchy level. - `departments` lists the top-level departments that contributed at least one category, in Kroger's own menu order. Kroger's site menu carries 12 top-level entries in total; the other 5 ("Popular", "Seasonal Favorites", "Our Brands", "Gift Cards", "Explore More") are marketing shortcuts with no category-browse links and are correctly excluded rather than padding the list with unusable entries. - The same `category_id` can legitimately appear more than once, cross-listed under different departments with a different display `slug` (e.g. Kroger's own menu lists id `05017` as both "Bacon & Breakfast Sausage" under Fresh > Meat and under Grocery > Breakfast). Both entries are kept — neither is a duplicate to collapse away. - **Known gap, not silently covered up**: Kroger's search API accepts `category_id` values coarser than any entry returned here — the originally-shipped `kroger-category` example (`slug=pet`, `category_id=27`) is a top-level department id, one level up from every leaf id this endpoint enumerates (Kroger's own menu links to a `/d/pet-supplies` landing page for "Shop All Pet" instead of a `/pl/` category id). That coarser department-id space is not enumerated by this endpoint. Every `slug`/`category_id` pair this endpoint does return works with `kroger-category`.
MCP-Tool kroger_categories
Verwandte APIs
Marketplaces & Retail
Research new, used, and vintage instruments across Reverb listings, seller shops, and the Price Guide. Keep current asking prices separate from historical sales, and preserve model, finish, year, condition, and currency when comparing gear.
Marketplaces & Retail
Collect marketplace product signals from Amazon without building brittle storefront scrapers.
Marketplaces & Retail
Build resale, pricing, and marketplace workflows from structured eBay data.
So scrapst du Kroger
Crawlora's Kroger endpoints return normalized public Kroger data as JSON with one API key — no Kroger account required. Filters and sort are the one thing to watch: they apply on the JSON path only, so a filtered request and an unfiltered one are not reading the same upstream.
The search endpoint takes a query and a one-based page and returns normalized product cards with price, unit price, size, SNAP EBT eligibility, and a low-stock flag. Facet filters — brands, nutrition and dietary values, flavor, scent, savings, and a price range — take facet display names verbatim from a previous response's own facets, because Kroger filters on the display name rather than a slug. price_max is required to filter on price at all.
The category endpoint browses a Kroger category page and returns cards in the same shape as search, reusing the identical parser since category and search pages share Kroger's product-grid template. It needs both the category's URL slug and its numeric taxonomy id — the last two segments of a category page URL — because a placeholder slug is not confirmed to work here the way it is on product pages.
There are two product paths and they carry materially different depth. The single-product endpoint reads a product page's schema.org structured data: title, description, image, brand, category trail, price, availability, and rating. The bulk endpoint reads Kroger's own product API for up to 50 products at once and adds a nutrition-facts panel with ingredients, allergens and dietary flags, store-specific price and stock level, the full star histogram, the merchandising hierarchy, and every image perspective.
The product-reviews endpoint returns one page of a product's customer reviews from Kroger's own reviews API alongside its complete star histogram. The related-tags endpoint returns the refinement chips Kroger shows above its own results for a query — for chips ahoy it returns chewy, chunky, thins — each carrying the full follow-on query it maps to, so the chips feed straight back into search.
The coupons endpoint returns a page of Kroger's public digital coupons with savings value, requirement text and quantity, brand, categories, redemption modalities, promotional tags, imagery, and validity dates, optionally narrowed to one UPC, brand, or store. The store endpoint returns one store's postal address, coordinates, phone number, displayed opening hours, and drive-thru availability.
FAQ
Search products by keyword or browse a category for priced cards, enrich them through the bulk product endpoint for nutrition and store-specific pricing, then read customer reviews, refinement chips, digital coupons, and store detail — all return structured JSON with one API key.
Filters and sort apply to the JSON path only. They are also value-sensitive: a filter takes the facet display name verbatim from a previous response's own facets, not a slug, and multiple values within one filter are OR-ed together. Filtering on price additionally requires price_max — supplying price_min alone returns a 400.
Depth and source. The single-product endpoint reads a product page's schema.org structured data — title, description, image, brand, category trail, price, availability, rating. The bulk endpoint reads Kroger's own product API for up to 50 products in one call and adds nutrition facts with ingredients and allergens, store-specific price and stock level, the full rating histogram, the merchandising hierarchy, and every image perspective.
Yes — the coupons endpoint pages through Kroger's public digital coupons with each one's savings value, requirement text and quantity, brand, categories, redemption modalities, promotional tags, image, and validity dates. It can be narrowed to a single product by UPC, to one brand, or to a specific store id.
Yes — every product card returned by search and category browse carries a SNAP EBT eligibility flag alongside price, unit price, size, and a low-stock indicator. SNAP EBT Eligible is also a confirmed value for the more-options facet filter, so you can restrict a whole result set to eligible items.