---
title: "Platform-wide catalog aggregates (public marketing numbers)"
method: GET
path: "/api/v1/public/catalog/stats"
tags: ["Stats"]
---

# Platform-wide catalog aggregates (public marketing numbers)

`GET /api/v1/public/catalog/stats`

## Request

- Base URL: `https://api.shelfatlas.com`
- URL: `https://api.shelfatlas.com/api/v1/public/catalog/stats`
- Auth: none required

The same real numbers rendered on the ShelfAtlas homepage — live offer count, coverage, per-chain breakdown. Unauthenticated: the data is already public, so a key would protect nothing. Bounded instead by a per-IP rate limit and a CDN cache (`Cache-Control: public, s-maxage=3600, stale-while-revalidate=86400`).

## Response `200`

Current platform stats snapshot.

- object
  - `ok` true, required
  - `data` Stats, required
    - `liveOffers` integer, required
    - `storesCount` integer, required
    - `chainsCovered` integer, required
    - `productsCount` integer, required
    - `priceHistoryDays` integer, required: Age of the oldest price observation, in days.
    - `perChain` ChainStat[], required
      - `name` string, required
      - `slug` string, required
      - `logoUrl` string, nullable, required
      - `storeCount` integer, required
      - `liveOfferCount` integer, required
    - `recentOffers` RecentOffer[], required
      - `rawName` string, required
      - `price` string, required: Decimal string (Postgres numeric).
      - `currency` string, required
      - `chainName` string, nullable, required
      - `imageUrl` string, nullable, required
    - `latestOffersAcrossChains` RecentOffer[]: Newest current campaign offers across chains (at most 2 per chain, 6 in total). Optional: absent in payloads cached before it existed.
      - `rawName` string, required
      - `price` string, required: Decimal string (Postgres numeric).
      - `currency` string, required
      - `chainName` string, nullable, required
      - `imageUrl` string, nullable, required
    - `generatedAt` string, date-time, required: Wallclock when this snapshot was assembled.

## Other responses

- `429`: Rate limit or monthly limit reached (`rate_limited` / `monthly_limit_reached`).

---

[API](https://skmtc.dev/shelfatlas/apis/shelfatlas-catalog-api.md) · [All operations](https://skmtc.dev/shelfatlas/apis/shelfatlas-catalog-api/llms.txt) · [OpenAPI document](https://skmtc.dev/shelfatlas/apis/shelfatlas-catalog-api/revisions/943a8773856b?raw)
