Grocery price and promotion monitoring
Krogerエンドポイントを使えば、「Grocery price and promotion monitoring」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
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.
エンドポイントファミリー
6
ドキュメント化されたパラメータ
48
サンプル数
9
ライブカタログスナップショット
稼働エンドポイント
9
メソッド
GET
必須パラメータ
17
スキーマ参照
9
{
"platform": "Kroger",
"endpoint": "kroger-search",
"method": "GET",
"path": "/kroger/search",
"auth": "apiKey"
}ユースケース
Search Kroger groceries with facet filters, get product detail in bulk with nutrition and store pricing, and pull digital coupons as JSON.
Krogerエンドポイントを使えば、「Grocery price and promotion monitoring」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
Krogerエンドポイントを使えば、「Product assortment and availability research」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
Krogerエンドポイントを使えば、「Nutrition and dietary-attribute analysis」をドキュメント化された入力とJSONレスポンスによる再現可能なAPIリクエストに変えられます。
マネージド実行
以下の数値はすべて、稼働中のKrogerエンドポイントカタログから取得しています(エンドポイント9件、ドキュメント化されたリクエストパラメータ48個、公開レスポンススキーマ9件)。DocsとPlaygroundが参照しているカタログと同じものです。
Krogerのエンドポイントは9件、8つのリクエストファミリーに分類されています(Product、Category、Couponsほか5件)。
これらのKrogerエンドポイントには48個のリクエストパラメータがドキュメント化されており、うち17個が必須です。統合コードを書く前に入力仕様をすべて確認できます。
9件のKrogerエンドポイントのうち9件が実際のサンプルレスポンスを、9件がドキュメント化されたレスポンススキーマを備えています。最初のリクエストの前に実データの形に合わせて実装できます。
Krogerのエンドポイントは成功時のスキーマに加えてエラーレスポンス(400、404、429、503)もドキュメント化しています。ブロック、レート制限、レコード欠損は空データではなく型付きのエラーとして返ります。
Krogerのエンドポイントは9個のホスト型MCPツールとして提供されており、エージェントは同じパラメータと同じJSON契約のまま、追加の実装なしに同じルートを呼び出せます。
カバレッジマップ
これらのカードは稼働中のエンドポイントカタログから生成されるため、このページはDocsとPlaygroundが使うAPIサーフェスをそのまま反映します。
/kroger/product
/kroger/category
/kroger/coupons
/kroger/products
/kroger/related-tags
/kroger/search
エンドポイントカタログ
/kroger/searchSearches Kroger products by keyword and returns normalized 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). Served from Kroger's own search JSON API with real upstream pagination; if that path is unavailable it falls back to parsing the rendered search page, and the source field reports which path answered. Facet filters and sort apply to the JSON path only: when any of them is set, a JSON-path failure returns an error rather than silently falling back to unfiltered results.
レスポンスに関する注記
- **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. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "edward & sons", "page": 1, "total_count": 37, "products": [ { "upc": "0004318200391", "url": "https://www.kroger.com/p/edward-sons-not-chick-n-bouillon-cubes/0004318200391?fulfillment=PICKUP&searchType=default_search", "title": "Edward & Sons® Not-Chick'n Bouillon Cubes", "image_url": "https://www.kroger.com/product/images/medium/front/0004318200391", "price": 2.99, "currency": "USD", "unit_price": "$1.20/oz", "size": "2.5 oz", "snap_ebt_eligible": true, "low_stock": false } ] } } ```
MCPツール kroger_search
/kroger/categoryBrowses a Kroger product category and returns normalized 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). Served from Kroger's own search JSON API using category_id as a taxonomy filter, with real upstream pagination; it falls back to parsing the rendered category page if that path is unavailable, and the source field reports which path answered. Facet filters and sort apply to the JSON path only: when any of them is set, a JSON-path failure returns an error rather than silently falling back to unfiltered results.
レスポンスに関する注記
- **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. Example response: ```json { "code": 200, "msg": "OK", "data": { "slug": "mushrooms", "category_id": "0611200686", "page": 1, "total_count": 28, "products": [ { "upc": "0001111091487", "url": "https://www.kroger.com/p/sliced-white-mushrooms/0001111091487", "title": "Sliced White Mushrooms", "image_url": "https://www.kroger.com/product/images/medium/front/0001111091487", "price": 2.39, "currency": "USD", "size": "8 oz", "snap_ebt_eligible": true, "low_stock": false } ] } } ```
MCPツール kroger_category
/kroger/productsReturns full normalized detail for up to 50 Kroger products in one call, from Kroger's own product API. 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.
レスポンスに関する注記
- `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. Example response: ```json { "code": 200, "msg": "OK", "data": { "location_id": "03500917", "count": 1, "products": [ { "upc": "0007465324996", "name": "Jack's Pull-Apart Supreme Pizza Sticks", "brand": "Jack's", "size": "8 Ounces", "country_of_origin": "UNITED STATES", "url": "https://www.kroger.com/p/-/0007465324996", "image_url": "https://www.kroger.com/product/images/xlarge/front/0007465324996", "categories": ["Frozen"], "category": { "department": "FROZEN GROCERY", "commodity": "FROZEN HANDHELDS & SNACKS", "sub_commodity": "POCKETS" }, "alcohol": false, "price": { "amount": 2.19, "currency": "USD", "display": "$2.19", "unit_price_text": "$0.27/oz", "location_id": "03500917", "seller_id": "KR001", "seller_name": "Kroger" }, "inventory": {"location_id": "03500917", "available": 9, "stock_level": "HIGH"}, "rating": {"average": 4.35, "count": 101, "five_stars": 64, "four_stars": 21, "three_stars": 8, "two_stars": 3, "one_star": 5}, "nutrition": { "serving_size": "2 Sticks (113 g)", "servings_per_container": "2.0", "allergens": "Contains Wheat and Their Derivatives,Eggs and their derivates,Soybean", "organic": false, "non_gmo": false, "gluten_free": false, "kosher": false, "facts": [ {"name": "Sodium", "value": "620", "unit": "mg", "daily_value": "27"} ] } } ] } } ```
MCPツール kroger_products
/kroger/productReturns normalized product detail for one Kroger item: title, description, image, brand, category trail, price/availability, and rating, sourced from the product page's own schema.org structured data.
レスポンスに関する注記
- `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. Example response: ```json { "code": 200, "msg": "OK", "data": { "upc": "0064519402151", "url": "https://www.kroger.com/p/-/0064519402151", "title": "Bobbo SE3880240 Watermelon Gordo Birdhouse, 1", "description": "Songbird Essentials adds color whimsy to any garden with our beautifully detailed wooden Bird Houses...", "image_url": "https://www.kroger.com/product/images/medium/front/0064519402151", "categories": ["Pet", "Bird Care"], "offer": { "price": 35.02, "currency": "USD", "availability": "in_stock" } } } ```
MCPツール 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.
レスポンスに関する注記
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "upc": "0007120200411", "page": 1, "page_size": 16, "average_rating": 4.64, "total_count": 293, "rating": {"average": 4.64, "count": 293, "five_stars": 225, "four_stars": 47, "three_stars": 0, "two_stars": 0, "one_star": 7}, "reviews": [ { "id": "25562ac4-cf25-5ea3-a77c-461c4269540e", "rating": 4, "text": "I really enjoyed this product! The flavor is vibrant and tropical.", "submitted_at": "2025-02-05T17:30:35.000Z", "recommended": false, "featured": false, "ratings_only": false, "helpful_vote_count": 0, "not_helpful_vote_count": 0, "photos": [ {"url": "https://photos-us.bazaarvoice.com/photo/2/…", "size": "medium"} ] } ] } } ```
MCPツール 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.
レスポンスに関する注記
- `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. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "chips ahoy", "location_id": "03500917", "count": 3, "related_tags": [ {"tag": "chewy", "query": "chips ahoy chewy", "position": 0, "source": "CURATED"}, {"tag": "chunky", "query": "chips ahoy chunky", "position": 1, "source": "CURATED"}, {"tag": "mini", "query": "chips ahoy mini", "position": 2, "source": "CURATED"} ] } } ```
MCPツール 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.
レスポンスに関する注記
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "location_id": "03500917", "page": 1, "page_size": 50, "count": 1, "coupons": [ { "id": "3899866", "kroger_coupon_number": "800000011934", "title": "Save $1.00 on 2", "short_description": "SAVE $1.00 on 2 Pillsbury Refrigerated and Frozen Products", "display_description": "Pillsbury Refrigerated and Frozen Products", "requirement_description": "when you buy TWO (2) Pillsbury Refrigerated or Frozen Baked Goods Products, any flavor/variety", "requirement_quantity": 2, "brand": "Pillsbury", "value": 1, "savings": 1, "type": "STANDARD", "status": "unclipped", "image_url": "https://cdnws.softcoin.com/mediaCache/ecoupon_4918801.jpg", "categories": ["Bakery", "Frozen", "Breakfast"], "modalities": ["PICKUP", "DELIVERY", "IN_STORE"], "savings_tags": [{"name": "General Savings", "display_name": "General Savings"}], "redemptions_allowed": 1, "total_downloads": 1107980, "start_date": "2025-03-01T05:00:00Z", "end_date": "2025-04-01T03:59:59Z", "expiration_date": "2025-04-15T03:59:59Z" } ] } } ```
MCPツール 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.
レスポンスに関する注記
- `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`. Example response: ```json { "code": 200, "msg": "OK", "data": { "store_id": "01600531", "name": "Waterville", "brand": "KROGER", "phone": "(419) 878-1040", "open_text": "Open Until 8 PM", "address": { "address_lines": ["8730 Waterville Swanton Rd"], "city": "Waterville", "state": "OH", "postal_code": "43566", "country": "US" }, "location": {"latitude": 41.509023, "longitude": -83.75036}, "hours": [ {"days": "Sun", "hours": "10:00 AM - 5:00 PM", "is_today": false}, {"days": "Mon - Fri", "hours": "8:00 AM - 8:00 PM", "is_today": true} ], "break_hours": [{"days": "Sun - Sat", "hours": "1:00 PM - 1:30 PM", "is_today": true}], "has_drive_thru": true } } ```
MCPツール 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.
レスポンスに関する注記
- 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. Example response: ```json { "code": 200, "msg": "OK", "data": { "query": "rin", "location_id": "03500917", "suggestions": [ {"type": "SUGGESTION", "value": "onion ring"}, {"type": "SUGGESTION", "value": "pork rind"}, {"type": "SUGGESTION", "value": "white castle chicken ring"}, {"type": "SUGGESTION", "value": "rinse aid"}, {"type": "SUGGESTION", "value": "frozen onion ring"} ] } } ```
MCPツール kroger_suggest
関連API
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.
Marketplaces & Retail
Turn public Shop.app product and merchant pages into structured JSON for e-commerce product intelligence, price research, shop monitoring, and marketplace discovery workflows.
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.