---
title: "List Meta product catalogs"
method: GET
path: "/v1/ads/catalogs"
tags: ["Product Catalogs"]
---

# List Meta product catalogs

`GET /v1/ads/catalogs`

Lists the Meta Commerce catalogs of a business portfolio (owned + agency-shared). The business comes from `businessId`, else the ad account's owner (`adAccountId`), else the WhatsApp Business Account's owner when `accountId` is a WhatsApp connection, else the only business the Meta login can see. Reads work with scopes customers already granted.

## Query parameters

- `accountId` string, required
- `catalogAccountId` string
- `adAccountId` string
- `businessId` string

## Response `200`

Catalogs

- object
  - `businessId` string
  - `catalogs` MetaProductCatalog[]
    - `id` string
    - `name` string
    - `vertical` string, nullable — Catalog vertical (e.g. commerce, vehicles, hotels)
    - `productCount` integer
    - `businessId` string, nullable

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `403` — The Meta login behind the account lacks catalog_management (code insufficient_permissions). Reconnect granting it, or pass catalogAccountId.
- `404` — The account or requested resource was not found or is not accessible. An account ID may have been disconnected and removed. Read GET /v1/accounts for current account IDs.
- `409` — The account exists but is inactive or needs reconnection. Reconnect it, then read GET /v1/accounts for its current account ID before retrying. Code: ads_connection_required.

## Changes

- **2026-09-17** `fdaf9a9fb1a7` — 8 info
  - api tag `Product Catalogs` added
  - api tag `Ad Creatives` removed
  - added the new optional `query` request parameter `businessId`
  - added the new optional `query` request parameter `catalogAccountId`
  - …4 more
- **2026-09-16** `3e6ddf2a99ea` — 3 info
  - added the optional property `details/budgetScope` to the response with the `400` status
  - added the optional property `details/budgetScope` to the response with the `404` status
  - added the optional property `details/budgetScope` to the response with the `409` status
- **2026-09-15** `0dba7d004d75` — 6 info
  - added the optional property `details/quotaExhausted` to the response with the `400` status
  - added the optional property `details/quotaExhausted` to the response with the `404` status
  - added the optional property `details/quotaExhausted` to the response with the `409` status
  - added the optional property `details/quotaScope` to the response with the `400` status
  - …2 more
- **2026-09-10** `e70ed06e7150` — 2 info
  - added the non-success response with the status `404`
  - added the non-success response with the status `409`

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/ads/catalogs/get.md)

---

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