Skip to main content
GET
List products
Every boxed, bundled and sealed thing in the catalog, ordered by id and paged by cursor. Pass expansion_id to narrow to one expansion — ?expansion_id=sv03.5 for the boxes and bundles sold around 151. It is a filter, not a lookup: an id that matches nothing is an empty page, not a 404. A product can belong to more than one expansion — a Trainer Kit box ships two decks — and it still appears once here; a product attached to no expansion at all appears too. Pass q to search by name. Rows then come back best-match first, each carrying a score, and the cursor keeps working exactly as it does without it. The two compose — ?q=booster%20box&expansion_id=sv03.5 searches inside one expansion. Ranking and ties behave as they do on List cards. Rows are summaries. Fetch the product for its expansions and its prices.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Query Parameters

limit
string

How many rows to return. Defaults to 50 and stops at 200; a larger value is clamped, not rejected.

cursor
string

The next_cursor from the previous page. Omit it for the first page — a cursor this endpoint did not issue is ignored, and you get the first page back.

expansion_id
string

Narrow the list to one expansion. An id that matches nothing is an empty page, not a 404.

q
string

Search products by name. Ranked best-match first, every row carrying its score, and the cursor keeps working.

Minimum string length: 1

Response

Product list

data
object
required
error
object | null
required