---
title: "Search published components"
method: GET
path: "/api/components/search"
tags: ["catalog"]
---

# Search published components

`GET /api/components/search`

## Request

- Base URL: `https://voltplan.app`
- URL: `https://voltplan.app/api/components/search`
- Auth: none declared

Paginated search over published components that have a slug (the public /components pages). A PocketBase failure also answers 200 with empty `items`.

## Query parameters

- `search` string
- `type` string
- `sort` string
- `page` integer
- `perPage` integer

## Response `200`

One page of matching published components.

- CatalogSearchPage: One page of published-component search results.
  - `items` CatalogSearchHit[], required
    - `id` string, required: Id of the `components` record.
    - `slug` string, required: Non-empty URL segment of the public page `/components/{slug}`.
    - `name` string, required: Product name.
    - `type` 'battery' | 'charger' | 'inverter' | 'transformer' | 'power' | 'load' | 'bridge' | 'tool' | '', required: Component type; '' when unset.
    - `brandName` string: Brand name; omitted when the component has no brand.
    - `summary` string, required: `summary`, else `description`, else ''.
    - `imageUrl` string: The `image` URL, else the URL of the first gallery file; omitted when neither exists.
    - `reviewCount` integer, required: Number of top-level ratings.
    - `reviewAvg` number, required: Average rating; 0 without ratings.
  - `page` integer, required: Returned page number.
  - `perPage` integer, required: Applied page size.
  - `totalItems` integer, required: Matches across all pages.
  - `totalPages` integer, required: Number of pages.

---

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