Skip to main content
GET
List Subscribers
List subscribers with stable pagination and optional filtering by status, free-text query, tags, list, segment, attribute, email, or opt-out date. Each subscriber carries unsubscribedAt, the date the contact opted out. Use it rather than updatedAt to date an opt-out - updatedAt moves on any later tag or attribute write. It is null unless the contact is currently unsubscribed, so a contact who left one list but still receives email does not carry a date, and it is null for contacts imported as already unsubscribed, where no opt-out date exists. Without an attribute filter, results are ordered by createdAt descending, with subscriber ID used as a tie-breaker so page boundaries stay deterministic when multiple subscribers have the same creation time. With an attribute filter, results use ClickHouse-first cursor pagination and are ordered by subscriber ID ascending. Attribute-filtered responses do not include a total count; use pagination.nextCursor until it is null.

Pulling a full audience

Every response includes pagination.nextCursor and pagination.hasMore. When you need more than one page - a backup, an export, a migration - follow nextCursor instead of incrementing page:
  • Page numbers are computed with an offset, so rows can be skipped or repeated if subscribers are created or deleted while you are paging. A cursor walks a fixed sort key and is not affected.
  • Cursor requests skip the total-count query, so total and totalPages come back as null. Read the count from your first (cursorless) request.
  • With limit=1000, a 10,000-subscriber audience takes ten requests.

Searching for one address

A query that is a whole email address is treated as an identity lookup: it matches contacts whose email is that address (case-insensitively), or whose external ID is that address, and nothing else. Anything shorter - gmail.com, @example.com, ana - stays a substring search across email, external ID, first name, last name, and tags. The distinction matters on a large audience. A substring search has to examine every contact you have; an address lookup does not. If you only need one contact and you already know the address, prefer GET /v1/subscribers/{email}, which returns the full contact record directly.

Query Parameters

number
default:"1"
Page number. Cannot be combined with cursor.
number
default:"20"
Items per page (max 1000)
string
Cursor returned as pagination.nextCursor. Cannot be combined with page. Attribute-filtered requests return their own cursor, which is not interchangeable with the default-ordering cursor.
string
Pass false to skip the total-count query on page-numbered requests. Cursor requests always skip it.
string
Filter by status: active, unsubscribed, bounced, or all. Use all to disable status filtering.
string
Free-text search across email, first name, last name, and tags. A term that is a whole email address is matched exactly against the contact’s email or external ID instead - see Searching for one address.
string
Legacy alias for query. Follows the same matching rules.
string
Comma-separated tag names. A subscriber must have all provided tags.
string
Filter by a custom attribute using attributeName:value syntax, such as plan:pro or mrr:50. Use attributeName: only with empty-check operators.
string
default:"is"
Attribute operator. Direct cursor pagination supports inclusion operators: is, contains, gt, gte, lt, lte, and is_not_empty. For exclusion operators such as is_not, not_contains, or is_empty, create a saved segment and pass segmentId.
string
Subscriber list ID or exact list name. The API tries ID first, then exact name.
string
Filter by subscriber list ID.
string
Filter by exact subscriber list name when the ID is not known.
string
Filter by an existing segment ID
string
Only return contacts whose unsubscribedAt is on or after this ISO 8601 date or datetime. Bare dates use UTC midnight; datetimes must include Z or an explicit offset. Contacts with no opt-out date are excluded, which includes active contacts and imports with no known date.
string
Only return contacts whose unsubscribedAt is on or before this ISO 8601 date or datetime. Bare dates use UTC midnight; datetimes must include Z or an explicit offset.
Reconcile a window of opt-outs against another system:

Responses