# Catalogs

Commercial catalogs of your Bitrix24 account: list, retrieval and filtering. A catalog defines the `iblockId` used by [products](/docs/entities/catalog-products), [sections](/docs/entities/catalog-sections) and [prices](/docs/entities/catalog-prices). Catalogs are read-only.

Bitrix24 API: `catalog.catalog.*`
Scope: `catalog`

## Operations

- [List of catalogs](./catalogs/list.md) — `GET /v1/catalogs`
- [Get a catalog](./catalogs/get.md) — `GET /v1/catalogs/:id`
- [Search catalogs](./catalogs/search.md) — `POST /v1/catalogs/search`
- [Catalog fields](./catalogs/fields.md) — `GET /v1/catalogs/fields`

## Key fields

| Field | Description |
|------|---------|
| `id` | Catalog identifier. Matches `iblockId` |
| `iblockId` | ID of the catalog information block. Used as a filter in [`GET /v1/catalog-products`](/docs/entities/catalog-products), [`GET /v1/catalog-sections`](/docs/entities/catalog-sections), [`GET /v1/catalog-prices`](/docs/entities/catalog-prices) |
| `name` | Catalog name |
| `iblockTypeId` | Information block type, for example `CRM_PRODUCT_CATALOG` |
| `productIblockId` | For an offers catalog — the `iblockId` of the linked products catalog. For a base products catalog — `null` |
| `skuPropertyId` | For an offers catalog — ID of the property linking the offer to the product. For a base catalog — `null` |

Full list of fields — [`GET /v1/catalogs/fields`](./catalogs/fields.md).

## What you need to know before working

1. **Catalogs are read-only.** Through the API you can fetch the list and a single record; create, update and delete are not supported. All fields in the response are marked "read-only".
2. **A catalog is the source of `iblockId` for the rest of the product catalog endpoints.** To fetch products, sections or prices, first take the `iblockId` of the catalog you need from [`GET /v1/catalogs`](./catalogs/list.md) and pass it as a filter to [`GET /v1/catalog-products`](/docs/entities/catalog-products), [`GET /v1/catalog-sections`](/docs/entities/catalog-sections), [`GET /v1/catalog-prices`](/docs/entities/catalog-prices).
3. **A base products catalog and an offers catalog differ in two fields.** An offers catalog has `productIblockId` (a link to the products catalog) and `skuPropertyId` populated; for a base products catalog both are `null`.

## Typical scenario

1. Fetch the list of catalogs: [`GET /v1/catalogs`](./catalogs/list.md) — take the `iblockId` of the catalog you need.
2. Fetch the products of that catalog: [`GET /v1/catalog-products?filter[iblockId]=25`](/docs/entities/catalog-products).
3. If needed — sections and prices: [`GET /v1/catalog-sections`](/docs/entities/catalog-sections), [`GET /v1/catalog-prices`](/docs/entities/catalog-prices).

## Limits

| Limit | Value |
|-------|----------|
| Maximum records per request | 5000 (`limit ≤ 5000`) |
| Auto-pagination | enabled when `limit > 50` |
| Batch requests | catalogs are read-only — write operations in [`POST /v1/batch`](/docs/batch) are not supported |
| Rate limit | shared across the Vibecode API — see [Limits and optimization](/docs/optimization) |

## See also

- [Catalog products](/docs/entities/catalog-products)
- [Catalog sections](/docs/entities/catalog-sections)
- [Catalog prices](/docs/entities/catalog-prices)
- [Filtering syntax](/docs/filtering)
- [Entities reference](/docs/entities-index)
