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

# Search Products

> Fuzzy search the product catalog

Returns catalog products ranked by relevance to `q`. Matching tolerates typos and partial SKUs. `insuredValueCents` is the current insured value of one unit, in cents. Use [List Products](/api-reference/products/list) to browse the catalog without a query.

## Authorizations

<ParamField header="Authorization" type="string" required>
  Send `Bearer <token>` in this header. The key needs `inventory:read`.
</ParamField>

## Query Parameters

<ParamField query="q" type="string" required>
  Search text. Matches title, manufacturer, SKU, and metal. Up to 200 characters.
</ParamField>

<ParamField query="page" type="number" default="1" />

<ParamField query="limit" type="number" default="25" />

<RequestExample dropdown>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api.beachdepository.com/v1/products/search?q=1%20oz%20gold%20eagle&limit=25' \
    --header 'Authorization: Bearer <token>'
  ```

  ```javascript JavaScript theme={null}
  const params = new URLSearchParams({ q: "1 oz gold eagle", limit: "25" })
  const response = await fetch(`https://api.beachdepository.com/v1/products/search?${params}`, {
    method: "GET",
    headers: {
      Authorization: "Bearer <token>",
    },
  })

  const data = await response.json()
  ```

  ```python Python theme={null}
  import requests

  response = requests.get(
      "https://api.beachdepository.com/v1/products/search",
      params={"q": "1 oz gold eagle", "limit": 25},
      headers={
          "Authorization": "Bearer <token>",
      },
  )
  ```

  ```go Go theme={null}
  package main

  import (
    "fmt"
    "io"
    "net/http"
    "net/url"
  )

  func main() {
    query := url.Values{"q": {"1 oz gold eagle"}, "limit": {"25"}}
    req, _ := http.NewRequest("GET", "https://api.beachdepository.com/v1/products/search?"+query.Encode(), nil)
    req.Header.Add("Authorization", "Bearer <token>")
    res, _ := http.DefaultClient.Do(req)
    defer res.Body.Close()
    body, _ := io.ReadAll(res.Body)
    fmt.Println(string(body))
  }
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "data": [
      {
        "id": "jh7prod456",
        "title": "1 oz American Gold Eagle",
        "sku": "AGE-1OZ",
        "productType": "precious_metal",
        "subcategory": "Gold Coins",
        "isSerialized": false,
        "insuredValueCents": "412350",
        "images": [
          {
            "url": "https://files.beachdepository.com/products/age-1oz-front.jpg",
            "label": "primary"
          }
        ],
        "createdAt": "2025-04-01T14:00:00Z"
      }
    ],
    "pagination": {
      "page": 1,
      "hasMore": false
    }
  }
  ```

  ```json 503 theme={null}
  {
    "error": {
      "code": "SERVICE_UNAVAILABLE",
      "message": "Product search is temporarily unavailable"
    }
  }
  ```
</ResponseExample>

Results are ordered by relevance. A `503` response means search is down. Retry the request.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.