---
title: "Page through the whole catalog"
method: GET
path: "/v1/catalog"
tags: ["Discovery"]
---

# Page through the whole catalog

`GET /v1/catalog`

## Request

- Base URL: `https://api.stackdata.io`
- URL: `https://api.stackdata.io/v1/catalog`
- Auth: one of:
  - none
  - API key in header `X-API-Key`

The full public catalog as pageable metadata — for bulk consumers: static site
generators, crawlers, mirrors. Returns **values, not provenance envelopes**
(`/v1/datasets/{id}` is the full-envelope tier). Cursor pagination is keyset on
the stable dataset id: pass back `next_cursor` until it returns `null`. Never
metered.

## Query parameters

- `cursor` string
- `limit` integer
- `source` string

## Response `200`

One page of the catalog.

- CatalogResponse
  - `returned` TypedCount: A count that states whether it is exact — never a bare integer.
    - `value` integer, required
    - `exact` boolean, required
  - `total` TypedCount: A count that states whether it is exact — never a bare integer.
    - `value` integer, required
    - `exact` boolean, required
  - `next_cursor` string, nullable: Pass back as `cursor` for the next page; `null` means exhausted (explicitly, never by absence).
  - `applied_filters` object
  - `datasets` object[]
  - `meta` Meta: Attached to every JSON response. `harvest` maps each source id to its last successful harvest timestamp.
    - `harvest` object
    - `api_version` string

## Other responses

- `400`: An unknown query parameter was supplied. Unknown parameters are **rejected, never silently ignored** — the error names the offenders and lists what is allowed.

---

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