> ## Documentation Index
> Fetch the complete documentation index at: https://docs.satsuma.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Search Products

> Search for products across merchant locations with various filtering and sorting options



## OpenAPI

````yaml api-reference/openapi.json get /product
openapi: 3.1.0
info:
  title: Satsuma API
  description: API specification for Satsuma AI commerce platform
  contact:
    name: Satsuma Support
    url: https://satsuma.ai
    email: support@satsuma.ai
  version: 1.0.0
servers:
  - url: https://api.satsuma.ai
    description: Production
security:
  - apiKeyAuth: []
paths:
  /product:
    get:
      tags:
        - Product Search
      summary: Search Products
      description: >-
        Search for products across merchant locations with various filtering and
        sorting options
      operationId: findProducts
      parameters:
        - name: merchantId
          in: query
          description: >-
            Unique identifier of the merchant to search within. If not provided,
            searches across all merchants
          required: false
          schema:
            type: string
            description: api.product.search.field.merchantId.description
        - name: query
          in: query
          description: >-
            Free-text search query to match against product names, descriptions,
            brands, or keywords
          required: false
          schema:
            type: string
            description: api.product.search.field.query.description
            example: organic coffee beans
          example: organic coffee beans
        - name: locationId
          in: query
          description: >-
            Specific location identifier to limit search scope. Can be a store
            ID, warehouse ID, etc.
          required: false
          schema:
            type: string
            description: api.product.search.field.locationId.description
        - name: locationType
          in: query
          description: >-
            List of location types to filter search results. Restricts search to
            specified location types only
          required: false
          schema:
            type: array
            description: api.product.search.field.locationType.description
            items:
              type: string
              description: api.product.search.field.locationType.description
              enum:
                - Store
                - Warehouse
        - name: category
          in: query
          description: >-
            Product category name or identifier to narrow search results to
            specific product categories
          required: false
          schema:
            type: string
            description: api.product.search.field.category.description
            example: beverages
          example: beverages
        - name: brand
          in: query
          description: >-
            Brand identifier or name to filter products by specific brand. Can
            accept either brand ID or brand name
          required: false
          schema:
            type: string
            description: api.product.search.field.brand.description
            example: Nike
          example: Nike
        - name: minQuantity
          in: query
          description: >-
            Minimum inventory quantity required. Products with quantity below
            this threshold will be excluded
          required: false
          schema:
            minimum: 0
            type: integer
            description: api.product.search.field.minQuantity.description
            format: int32
            example: 5
          example: 5
        - name: upc
          in: query
          description: Universal Product Code (UPC) for precise product identification
          required: false
          schema:
            type: string
            description: api.product.search.field.upc.description
        - name: productId
          in: query
          description: Product ID filter - exact match for specific product
          required: false
          schema:
            type: string
            description: Product ID filter - exact match for specific product
            example: product123
          example: product123
        - name: fulfillmentMethod
          in: query
          description: >-
            List of acceptable fulfillment methods to filter products by
            availability and delivery options
          required: false
          schema:
            type: array
            description: api.product.search.field.fulfillmentMethod.description
            items:
              type: string
              description: api.product.search.field.fulfillmentMethod.description
              enum:
                - Delivery
                - Pickup
                - Shipping
        - name: size
          in: query
          description: >-
            Maximum number of products to return in a single response. Used for
            pagination control
          required: false
          schema:
            maximum: 100
            minimum: 1
            type: integer
            description: api.product.search.field.size.description
            format: int32
            example: 25
            default: 25
          example: 25
        - name: page
          in: query
          description: >-
            Page number for paginated results, starting from 1. Used with 'size'
            parameter for pagination
          required: false
          schema:
            minimum: 1
            type: integer
            description: api.product.search.field.page.description
            format: int32
            example: 1
            default: 1
          example: 1
        - name: latitude
          in: query
          description: >-
            Geographic latitude coordinate for proximity search. Must be a valid
            latitude between -90 and 90 degrees
          required: true
          schema:
            maximum: 90
            minimum: -90
            type: number
            description: api.search.field.latitude.description
            format: double
            example: 37.7749
          example: 37.7749
        - name: longitude
          in: query
          description: >-
            Geographic longitude coordinate for proximity search. Must be a
            valid longitude between -180 and 180 degrees
          required: true
          schema:
            maximum: 180
            minimum: -180
            type: number
            description: api.search.field.longitude.description
            format: double
            example: -122.4194
          example: -122.4194
        - name: distance
          in: query
          description: >-
            Search radius distance from the provided coordinates. Format: number
            followed by unit (mi for miles, km for kilometers)
          required: false
          schema:
            pattern: ^[0-9]+(mi|km)$
            type: string
            description: api.search.field.distance.description
            example: 10mi
            default: 10mi
          example: 10mi
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ResponseListProductResult'
components:
  schemas:
    ResponseListProductResult:
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ProductResult'
        messages:
          uniqueItems: true
          type: array
          items:
            $ref: '#/components/schemas/Message'
    ProductResult:
      properties:
        id:
          type: string
        merchant_id:
          type: string
        sku:
          type: string
        name:
          type: string
        description:
          type: string
        brand:
          type: string
        category:
          $ref: '#/components/schemas/BaseCategory'
        upc:
          type: string
        image_url:
          type: string
        discount_price:
          type: number
        tags:
          type: array
          items:
            type: string
        status:
          type: string
          enum:
            - Active
            - Inactive
        currency:
          type: string
        price:
          type: number
        fulfillment_methods:
          uniqueItems: true
          type: array
          items:
            type: string
            enum:
              - Delivery
              - Pickup
              - Shipping
        location:
          $ref: '#/components/schemas/BaseLocation'
    Message:
      properties:
        context:
          type: string
        level:
          type: string
          enum:
            - Information
            - Warning
            - Error
        text:
          type: string
        data:
          type: object
          additionalProperties: true
    BaseCategory:
      properties:
        id:
          type: string
        merchant_id:
          type: string
        name:
          type: string
        level:
          type: string
          enum:
            - Department
            - Class
            - Subclass
        depth:
          type: integer
          format: int32
    BaseLocation:
      properties:
        id:
          type: string
        merchant_id:
          type: string
        name:
          type: string
        type:
          type: string
          enum:
            - Store
            - Warehouse
        latitude:
          type: number
          format: double
        longitude:
          type: number
          format: double
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      description: API Key authentication
      name: Authorization
      in: header

````