---
title: "Search Kroger products"
method: GET
path: "/kroger/search"
tags: ["Kroger"]
---

# Search Kroger products

`GET /kroger/search`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/kroger/search`
- Auth: API key in header `x-api-key`

Searches 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.

## Query parameters

- `query` string, required
- `page` integer
- `sort` 'relevance' | 'name_asc' | 'popularity_desc'
- `brands` string
- `nutrition` string
- `flavor` string
- `scent` string
- `savings` string
- `more_options` string
- `price_min` number
- `price_max` number

## Headers

- `x-api-key` string, required

## Response `200`

OK

- KrogerSearchResponseDoc
  - `code` integer
  - `data` KrogerSearchResponse
    - `facets` KrogerSearchFacetGroup[]
      - `group` string
      - `values` KrogerSearchFacetValue[]
        - `count` integer
        - `name` string
        - `slug` string
    - `has_more` boolean: HasMore reports whether Kroger says more results exist past this page. Only meaningful on the JSON-API path; false on the HTML fallback.
    - `page` integer
    - `products` KrogerSearchResultProduct[]
      - `brand` string: Brand and StockLevel are populated by the JSON-API path only (the HTML result cards carry neither); both are omitted when the HTML fallback served the response. See Search's doc comment.
      - `currency` string
      - `image_url` string
      - `low_stock` boolean
      - `original_price` number
      - `price` number
      - `size` string
      - `snap_ebt_eligible` boolean
      - `stock_level` string
      - `title` string
      - `unit_price` string
      - `upc` string
      - `url` string
    - `query` string
    - `source` string: Source is which upstream path served this response: "json_api" (the primary path) or "html" (the fallback). See Search's doc comment.
    - `total_count` integer
  - `msg` string

## Other responses

- `400`: Bad Request
- `429`: Too Many Requests
- `503`: Service Unavailable

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/afac9b012a27?raw)
