Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Kroger API page →
E-commerce & Marketplaces

Kroger API & Scraper

Kroger prices are set per store, so this API always answers for one store.

3 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

`stores` turns a US ZIP code into the nearby Kroger-family stores with their location_id, banner, address, phone, hours and ways to shop. `search` returns the first 24 products for a query at that store: UPC, GTIN-14, title, brand, size, department, regular price, sale price with its end date, multi-buy deals such as 10 For $12.00, unit price per ounce or pound, the store's sellable stock count and stock level, aisle and shelf, whether it can be bought in store, for pickup, delivery or shipping, rating, dietary tags and a flag on sponsored placements. `product` takes a UPC and returns the same store price plus every aisle location, the full nutrition panel, ingredients, allergens, description, country of origin, weight, dimensions and all images. Kroger, Ralphs, Fred Meyer, King Soopers, Fry's, Smith's, QFC, Harris Teeter, Dillons, Baker's, City Market, Gerbes, JayC, Pay Less, Mariano's, Metro Market, Pick 'n Save, Foods Co and Food 4 Less are all covered.

Reference

What a Kroger field actually contains

Fields that read differently from how they look. Every row was measured against live Kroger pages on 2026-10-14.

FieldWhat it holds
upcKroger's 13-digit product number without check digit (0001111041700). Pass it unchanged to product; a printed 12-digit UPC-A or a 14-digit GTIN with a valid check digit is converted. Search to product returned the same UPC and the same prices on 14 of 14 products.
regular_price, sale_priceThe shelf price at the store in `store`, in US dollars. sale_price is only set when it is really below the regular price; discount_pct is computed from the two. On 143 products across 6 searches the price matched the price Kroger prints on its own product card 141 times; the other 2 were bananas, whose card shows a per-pound price.
multibuyDeals that need more than one unit: quantity, total, per_unit and the deal text. "10 For $12.00" means 1.20 each. On a "Buy 3 For $15.00" deal Kroger's single price stays the regular one, so must_buy is true and sale_price stays empty.
price_is_estimate, weight_priceProduce and meat sold by weight: the price is Kroger's "about $1.45 each" estimate and weight_price holds the real price per pound ($0.69/lb).
available_to_sell, stock_levelThe store's sellable count as Kroger publishes it (for example 195) and its level: HIGH, LOW or TEMPORARILY_OUT_OF_STOCK. Kroger does not publish a count for every product: filled on 183 of 240 rows, never on beer, rarely on soda.
aisleWhere the product sits in that store: aisle name and number, side, bay and shelf. product lists every location when there are several. Filled on 238 of 240 rows.
sponsoredTrue on paid placements Kroger mixes into the results: 46 of 240 rows, between 0 and 9 per search.
totalKroger's own count of matches at that store. It stops at 1,000 (total_is_capped), and one call returns the first 24 results.

The same product costs different amounts in different stores: a gallon of Kroger 2% milk was $2.99 in a Cincinnati store and $3.19 in Rolla, Missouri, at the same minute, and the number of matching products differed too (929 against 603 for "milk"). Always pass the store you care about; the response names the store it priced.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/kroger/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "milk",
    "location_id": "01400929"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "kroger",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 3999.6,
    "record_count": 24,
    "bytes": 1523663,
    "cache_hit": false,
    "total": 929,
    "store_location_id": "01400929",
    "banner": "kroger",
    "modality": "IN_STORE",
    "price_basis": "shelf price at the store in `store` (Kroger loyalty-card sale prices as the site shows them logged out); first 24 results only",
    "upstream_requests": 2,
    "charged_credits": 3,
    "version": "0.1.0",
    "request_id": "78a88974f7ff4519",
    "queue_ms": 1.6,
    "fetched_at": "2026-10-14T18:57:28.060Z"
  },
  "data": {
    "query": {
      "query": "milk"
    },
    "store": {
      "location_id": "01400929",
      "store_number": "00929",
      "banner": "kroger",
      "banner_name": "Kroger",
      "name": "University Plaza",
      "address": {
        "lines": [
          "1 W Corry St"
        ],
        "city": "Cincinnati",
        "state": "OH",
        "postal_code": "45219",
        "country": "US"
      },
      "phone": "[redacted-phone]",
      "distance_miles": null,
      "ways_to_shop": [
        "pickup",
        "in_store"
      ]
    },
    "total": 929,
    "total_is_capped": false,
    "returned": 24,
    "has_more": true,
    "sponsored_count": 1,
    "results": [
      {
        "upc": "0001111041700",
        "gtin14": "00011110417008",
        "title": "Kroger® 2% Reduced Fat Milk Gallon",
        "brand": "Kroger",
        "size": "1 gal",
        "url": "https://www.kroger.com/p/kroger-2-reduced-fat-milk-gallon/0001111041700",
        "image": "https://www.kroger.com/product/images/xlarge/front/0001111041700",
        "department": "Dairy & Eggs",
        "category": "Milk & Dairy Free Milk",
        "subcategory": "1%, 2%, & Skim Milk",
        "categories": [
          "Dairy"
        ],
        "regular_price": 2.99,
        "sale_price": null,
        "on_sale": false,
        "price_tag": "WhiteTag",
        "price_text": "$2.99",
        "regular_price_text": "$2.99",
        "sale_ends_at": null,
        "multibuy": null,
        "regular_unit_price": {
          "amount_cents": 2.34,
          "unit": "PER FLUID OUNCE",
          "display": "$0.02/fl oz"
        },
        "sale_unit_price": null,
        "sold_by": "Unit",
        "price_is_estimate": false,
        "weight_price": null,
        "seller_name": "Kroger",
        "currency": "USD",
        "discount_pct": null,
        "available_to_sell": 169,
        "stock_level": "HIGH",
        "aisle": {
          "description": "DAIRY",
          "number": "100",
          "side": "L",
          "bay": "3",
          "shelf": "1",
          "position_in_bay": "1",
          "facings": 4
        },
        "ways_to_shop": {
          "delivery": true,
          "in_store": true,
          "pickup": true,
          "ship": false
        },
        "snap_eligible": true,
        "rating": 3.09,
        "review_count": 88,
        "dietary": [
          "Kosher",
          "Pescatarian",
          "Vegetarian"
        ],
        "nutritional_claims": [
          "Low Sodium",
          "No Artificial Ingredients",
          "No Added Sugar"
        ],
        "sponsored": false,
        "rank": 1
      },
      {
        "upc": "0001111040101",
        "gtin14": "00011110401014",
        "title": "Kroger® Vitamin D Whole Milk Gallon",
        "brand": "Kroger",
        "size": "1 gal",
        "url": "https://www.kroger.com/p/kroger-vitamin-d-whole-milk-gallon/0001111040101",
        "image": "https://www.kroger.com/product/images/xlarge/front/0001111040101",
        "department": "Dairy & Eggs",
        "category": "Milk & Dairy Free Milk",
        "subcategory": "Whole Milk",
        "categories": [
          "Dairy"
        ],
        "regular_price": 2.99,
        "sale_price": null,
        "on_sale": false,
        "price_tag": "WhiteTag",
        "price_text": "$2.99",
        "regular_price_text": "$2.99",
        "sale_ends_at": null,
        "multibuy": null,
        "regular_unit_price": {
          "amount_cents": 2.34,
          "unit": "PER FLUID OUNCE",
          "display": "$0.02/fl oz"
        },
        "sale_unit_price": null,
        "sold_by": "Unit",
        "price_is_estimate": false,
        "weight_price": null,
        "seller_name": "Kroger",
        "currency": "USD",
        "discount_pct": null,
        "available_to_sell": 282,
        "stock_level": "HIGH",
        "aisle": {
          "description": "DAIRY",
          "number": "100",
          "side": "L",
          "bay": "6",
          "shelf": "1",
          "position_in_bay": "1",
          "facings": 4
        },
        "ways_to_shop": {
          "delivery": true,
          "in_store": true,
          "pickup": true,
          "ship": false
        },
        "snap_eligible": true,
        "rating": 2.85,
        "review_count": 102,
        "dietary": [
          "Vegetarian",
          "Kosher",
          "Pescatarian"
        ],
        "nutritional_claims": [
          "No Artificial Ingredients",
          "No Added Sugar",
          "Low Sodium"
        ],
        "sponsored": false,
        "rank": 2
      },
      {
        "upc": "0001111041600",
        "gtin14": "00011110416001",
        "title": "Kroger® 2% Reduced Fat Milk Half Gallon",
        "brand": "Kroger",
        "size": "1/2 gal",
        "url": "https://www.kroger.com/p/kroger-2-reduced-fat-milk-half-gallon/0001111041600",
        "image": "https://www.kroger.com/product/images/xlarge/front/0001111041600",
        "department": "Dairy & Eggs",
        "category": "Milk & Dairy Free Milk",
        "subcategory": "1%, 2%, & Skim Milk",
        "categories": [
          "Dairy"
        ],
        "regular_price": 1.99,
        "sale_price": null,
        "on_sale": false,
        "price_tag": "WhiteTag",
        "price_text": "$1.99",
        "regular_price_text": "$1.99",
        "sale_ends_at": null,
        "multibuy": null,
        "regular_unit_price": {
          "amount_cents": 3.11,
          "unit": "PER FLUID OUNCE",
          "display": "$0.03/fl oz"
        },
        "sale_unit_price": null,
        "sold_by": "Unit",
        "price_is_estimate": false,
        "weight_price": null,
        "seller_name": "Kroger",
        "currency": "USD",
        "discount_pct": null,
        "available_to_sell": 171,
        "stock_level": "HIGH",
        "aisle": {
          "description": "DAIRY",
          "number": "100",
          "side": "L",
          "bay": "3",
          "shelf": "4",
          "position_in_bay": "1",
          "facings": 6
        },
        "ways_to_shop": {
          "delivery": true,
          "in_store": true,
          "pickup": true,
          "ship": false
        },
        "snap_eligible": true,
        "rating": 2.68,
        "review_count": 66,
        "dietary": [
          "Kosher",
          "Pescatarian",
          "Vegetarian"
        ],
        "nutritional_claims": [
          "Low Sodium",
          "No Artificial Ingredients",
          "No Added Sugar"
        ],
        "sponsored": false,
        "rank": 3
      }
    ]
  }
}
Actions

What the Kroger API does

ActionDescriptionConcrete use caseKey params
storesKroger-family stores near a US ZIP code (up to 50, nearest first) or one store by location_id: the location_id the price actions take, banner (Kroger, Ralphs, Fred Meyer, King Soopers, Fry's, Smith's, QFC, Harris Teeter,...), address, coordinates, phone, distance, ways to shop (in store / pickup / delivery), opening hours, departments. Fuel centers are excluded unless include_fuel=true. `zip` or `location_id` is required.Pricing teams call stores to get kroger-family stores near a US ZIP code (up to 50, nearest first) or one store by location_id.zip, location_id, banner, include_fuel
searchSearch one Kroger-family store's catalogue: the first 24 results for `query`, priced AT THAT STORE. Each row: UPC, GTIN-14, title, brand, size, department, regular price, sale price + end date, multi-buy deal (e.g. 10 For $12.00), unit price per oz/lb/count, price tag type, the store's sellable stock count and stock level, aisle and shelf, ways to shop (in store / pickup / delivery / ship), SNAP eligibility, rating, dietary tags, sponsored flag. Filters: brand, on_sale, nutrition. `query` and (`location_id` or `zip`) are required.Marketplace operators call search to search one Kroger-family store's catalogue.query, location_id, zip, banner, brand, ...
productOne product at one Kroger-family store by UPC: everything in a search row (store price, sale, multi-buy, unit price, stock count, stock level) plus every aisle location, the per-way fulfillment summary (in store / pickup / delivery with max order quantity), full nutrition panel (serving size, nutrients, ingredients, allergens), marketing description, country of origin, weight, dimensions, all images, rating breakdown and restriction flags. `upc` (or a product `url`) and (`location_id` or `zip`) are required.Catalog enrichment teams call product to get one product at one Kroger-family store by UPC.upc, url, location_id, zip, banner
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/kroger/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"milk","location_id":"01400929"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.kroger.search with {"query":"milk","location_id":"01400929"}.
Use cases

Who uses this API and why

  • Track the shelf price and sale price of a basket of UPCs at the stores you care about, week by week.
  • Compare one product's price across Kroger, Ralphs, Fred Meyer and King Soopers stores in different cities.
  • Monitor which brands run sales and multi-buy deals, and when those deals end.
  • Build store-aware shopping lists with aisle, shelf and stock level for each item.
  • Collect nutrition panels, ingredients and allergens by UPC for a food database.
FAQ

Questions developers ask before integrating

Do I need a Kroger account or loyalty card?

No. Everything is read logged out, and the prices are the ones Kroger shows a visitor who picked that store, sale prices included.

How do I choose the store?

Call stores with a ZIP code and pass a location_id to search or product, or pass zip directly and the nearest grocery store is used and returned in store. For ZIP 45202 the source listed 50 locations, 18 of them grocery stores; fuel centers are left out unless include_fuel=true.

Does it cover Ralphs, Fred Meyer, King Soopers and the other banners?

Yes, 19 banners in total. A store id of any banner works, and the store block tells you which banner it is. On 2026-10-14 a Ralphs store in Los Angeles matched 856 products for "milk", a King Soopers store in Denver 924.

Which filters are there?

brand, on_sale and nutrition, each checked against the unfiltered count at the same store in the same run: "milk" 929, brand Kroger 66, on sale 342, organic 88, gluten free 391. brand is case-sensitive at Kroger: use the spelling from a row's brand.

Can I page through all results or sort by price?

No. One search returns the first 24 results in Kroger's own order, with the total count. Narrow with a more specific query or the filters to reach other products.

Do you return digital coupons?

No. Coupons are not part of what Kroger shows logged out. Sale and multi-buy prices are returned; the on_sale filter covers everything Kroger marks as a saving.

How fresh is the data?

Every call reads Kroger live; nothing is cached. In our two runs a search took 4.3 and 5.4 seconds at the median, a product 3.0 and 3.1 seconds, a store lookup 1.0 and 1.7 seconds.

Is the nutrition label included?

Yes, on product: serving size, servings per container, each nutrient with its value and unit, ingredients and allergens, as Kroger publishes them.

What is the Kroger API?

Kroger API is a ReefAPI endpoint group for store-level shelf prices, sales, multi-buy deals, stock and aisle for kroger and its 18 us grocery banners. It returns live JSON through POST requests under /kroger/v1.

Is the Kroger API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Kroger calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Kroger login or account?

No login to Kroger is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Kroger data?

The page example is captured from a live stores call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Kroger API use?

Kroger actions currently cost 2-3 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.

Can I call Kroger from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call kroger actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / kroger

Kroger

Store-level shelf prices, sales, multi-buy deals, stock and aisle for Kroger and its 18 US grocery banners.

base /kroger/v13 endpoints
post/kroger/v1/stores2 credits

Kroger-family stores near a US ZIP code (up to 50, nearest first) or one store by location_id: the location_id the price actions take, banner (Kroger, Ralphs, Fred Meyer, King Soopers, Fry's, Smith's, QFC, Harris Teeter,...), address, coordinates, phone, distance, ways to shop (in store / pickup / delivery), opening hours, departments. Fuel centers are excluded unless include_fuel=true. `zip` or `location_id` is required.

ParameterAllowed / rangeDescription
zipoptional—US 5-digit ZIP code; stores are returned nearest first (the source returns up to 50 locations per ZIP, fuel centers included).
location_idoptional—Look up ONE store by its 8-digit location id instead of a ZIP.
banneroptionalkroger · ralphs · frysfood · kingsoopers · fredmeyer · smithsfoodanddrug · qfc · harristeeter · dillons · bakersplus · citymarket · gerbes · jaycfoods · payless · marianos · metromarket · picknsave · foodsco · food4lessWith `zip`: pick the nearest store of this banner. With `stores`: only this banner's stores.
include_fuel = falseoptional—Also return fuel-center locations (they have no grocery prices).
Try in playground →
post/kroger/v1/product3 credits

One product at one Kroger-family store by UPC: everything in a search row (store price, sale, multi-buy, unit price, stock count, stock level) plus every aisle location, the per-way fulfillment summary (in store / pickup / delivery with max order quantity), full nutrition panel (serving size, nutrients, ingredients, allergens), marketing description, country of origin, weight, dimensions, all images, rating breakdown and restriction flags. `upc` (or a product `url`) and (`location_id` or `zip`) are required.

ParameterAllowed / rangeDescription
upcoptional—Kroger's 13-digit UPC exactly as search rows return it (0001111041700). A printed 12-digit UPC-A or a 14-digit GTIN with a valid check digit is converted.
urloptional—A Kroger-family product page URL (/p/<slug>/<upc>).
location_idoptional—The store's 8-digit Kroger location id (from the `stores` action, e.g. 01400929 = Kroger University Plaza, Cincinnati). Prices, stock and aisle are this store's. Any Kroger-family banner works (Ralphs, Fred Meyer, King Soopers, ...). `location_id` or `zip` is required.
zipoptional—US 5-digit ZIP. Used only when `location_id` is not given: the nearest grocery store to that ZIP (of `banner`, if given) is used and returned in `store`.
banneroptionalkroger · ralphs · frysfood · kingsoopers · fredmeyer · smithsfoodanddrug · qfc · harristeeter · dillons · bakersplus · citymarket · gerbes · jaycfoods · payless · marianos · metromarket · picknsave · foodsco · food4lessWith `zip`: pick the nearest store of this banner. With `stores`: only this banner's stores.
Try in playground →
Built for volume
5M+ requests a day

Measured at 60 requests a second across the fleet, with no central bottleneck. Volume pricing is on request, and per-key limits are raised for high-volume accounts.

Missing a source?
We build it

Tell us a site we do not cover yet and it becomes an engine. A customer asked for bestprice.gr on a Sunday and it was in the catalog the next day.

Support
2 minute median reply

Median time from a question in the live chat to the first answer, measured across every answered conversation. Setup help included, no support tier to buy.

One key, one balance
Every API included

No per-site plans and no separate subscriptions. One key and one credit pool across the whole catalog, so adding a source costs nothing up front.

Planning something large? Tell us the volume and the sources and we will come back with what it costs and what we would have to build.