Skip to main content
Every list has the same shape:
  • To get the next page, send the same request with cursor set to next_cursor. When has_more is false, next_cursor is null.
  • A cursor works only with the request that made it: the same endpoint, filters, sort, key and workspace. Change any of them and the API answers 400 invalid_cursor; start again without a cursor.
  • limit sets the page size: 25 by default, at most 100. Shop products, shop reviews, product reviews and related keywords come in pages of 25 rows, and limit can only make those smaller.
  • total.value stops counting at 10,000; relation is gte when there are at least that many. Paging also stops after 10,000 results with 400 cursor_window_exceeded. Narrow the query to reach further.
  • Results have a stable order, with ties broken by ID, so a page boundary never splits two equal items. Values can change between pages, so an item can still move.
Through MCP, pages default to 20 items and hold at most 50.

Choosing fields

fields takes comma-separated dotted paths and returns only those. id, object and as_of always come back.
An unknown path answers 400 invalid_request and lists the valid ones in valid_fields. fields never changes the price of a call. Some resources take expand to include related objects in the same response, free: An expansion never fetches anything from Etsy. When Alura has no data for it, the field is null.