---
title: "Free-text search across product name + description"
method: GET
path: "/api/v1/storefront/search"
tags: ["storefront"]
---

# Free-text search across product name + description

`GET /api/v1/storefront/search`

## Request

- Base URL: `https://api.foundryims.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.foundryims.com/api/v1/storefront/search`
- Auth: HTTP bearer

## Query parameters

- `q` string
- `page` number
- `limit` number

## Response `200`

- PaginatedProductsDto
  - `data` StorefrontProductSummaryDto[], required
    - `id` string, required
    - `slug` string, nullable, required
    - `name` string, required
    - `description` string, nullable, required
    - `metaTitle` string, required: Resolved SEO <title>; falls back to the product name when unset.
    - `metaDescription` string, required: Resolved SEO meta description; falls back to a description excerpt when unset.
    - `brand` IdNameDto, required
      - `id` string, required
      - `name` string, required
    - `category` IdNameDto, required
      - `id` string, required
      - `name` string, required
    - `thumbnail` string, nullable, required
    - `priceFrom` number, required
    - `compareAtPriceFrom` number, nullable, required: Set only when a variant is on sale (compare-at above price).
    - `currency` string, required
    - `featured` boolean, required
    - `displayOrder` number, required
    - `inStock` boolean, required
    - `availableQuantity` number, required: Aggregate on-hand across tracked variants (on-hand minus reserved). Untracked/made-to-order variants report 0 here but still set inStock=true — use inStock for availability, this for "N left".
    - `variantCount` number, required
    - `customFields` StorefrontCustomFieldDto[], required: Product-level custom fields flagged visible on storefront.
      - `key` string, required: Stable machine key.
      - `label` string, required
      - `value` object, required: Typed value (string | number | boolean | array | object).
      - `unit` string: Display unit (NUMBER fields), omitted when unset.
      - `type` 'text' | 'number' | 'boolean' | 'enum' | 'date' | 'url' | 'json', required
      - `group` string: Spec-table section, omitted when ungrouped.
      - `displayOrder` number, required: Sort order within the spec table.
    - `variants` StorefrontVariantDto[]: Full variant rows — present only when the list is requested with `?include=variants`. Same shape as the product-detail response.
      - `id` string, required
      - `sku` string, required
      - `name` string, required
      - `price` number, required: What the buyer pays now — the sale price while a sale is on.
      - `regularPrice` number, required: The regular price; equals price when not on sale.
      - `onSale` boolean, required: True while a sale window is open on this listing.
      - `saleEndsAt` string, nullable, required: ISO timestamp the sale ends, when one is set.
      - `compareAtPrice` number, nullable, required: "Was"/MSRP price. While on sale this is the regular price.
      - `map` number, nullable, required: Minimum advertised price.
      - `upc` string, nullable, required
      - `gtin` string, nullable, required
      - `mpn` string, nullable, required
      - `weight` number, nullable, required
      - `inStock` boolean, required
      - `availableQuantity` number, required
      - `optionValues` OptionValueDto[], required
        - `name` string, required
        - `value` string, required
      - `images` ImageRefDto[], required
        - `url` string, required
      - `customFields` StorefrontCustomFieldDto[], required: This variant's effective custom fields (variant value overrides product).
        - `key` string, required: Stable machine key.
        - `label` string, required
        - `value` object, required: Typed value (string | number | boolean | array | object).
        - `unit` string: Display unit (NUMBER fields), omitted when unset.
        - `type` 'text' | 'number' | 'boolean' | 'enum' | 'date' | 'url' | 'json', required
        - `group` string: Spec-table section, omitted when ungrouped.
        - `displayOrder` number, required: Sort order within the spec table.
    - `createdAt` string, date-time, required
    - `updatedAt` string, date-time, required
  - `pagination` PaginationDto, required
    - `page` number, required
    - `limit` number, required
    - `total` number, required
    - `totalPages` number, required

---

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