---
title: "Filter accounts"
method: POST
path: "/v3/contact-accounts/filter"
tags: ["Accounts"]
---

# Filter accounts

`POST /v3/contact-accounts/filter`

<small>_Requires the `contacts:read` scope (or a broader one that includes it)._</small>

Returns a paginated, filtered list of accounts using advanced filter criteria.

## Query parameters

- `top` integer
- `skip` integer

## Request body

- object — Request body for filtering contact accounts with advanced criteria
  - `search` string, nullable — Search term to filter accounts by name
  - `sortBy` string, nullable — Field name to sort by
  - `sortDirection` 'asc' | 'desc', nullable — Sort direction
  - `listId` integer, nullable — Filter by contact list ID
  - `filters` object[], nullable — Advanced filter conditions
    - `property` 'OwnerId' | 'Name' | 'Description' | 'DomainName' | 'DomainSecondary' | 'Industry' | 'Country' | 'State' | 'City' | 'LinkedInUrl' | 'TwitterUrl' | 'CreatedDate' | 'LastActivityDate' | 'CompanySize' | 'TimeZoneId' | 'NumericPhoneNumber' | 'LastActivityDateFrom' | 'LastActivityDateTo' | 'Stage' | 'NumberOfContacts' | 'Sequence', required — Field to filter on
    - `condition` 'Equals' | 'NotEquals' | 'In' | 'NotIn' | 'CollectionContains' | 'CollectionNotContains' | 'GreaterThan' | 'LowerThan' | 'GreaterEqualThan' | 'LowerEqualThan' | 'IsNull' | 'IsNotNull', required — Filter operation to apply
    - `values` unknown, required

## Response `200`

Paginated list of accounts matching filter criteria

- object
  - `items` object[]
    - `id` integer — Unique identifier of the contact account
    - `ownerUserId` integer — ID of the user who owns this contact account
    - `name` string — Contact account name
    - `description` string, nullable — Optional description of the contact account
    - `domainName` string, nullable — Primary domain name
    - `domainSecondary` string, nullable — Secondary domain name
    - `industry` string, nullable — Industry of the company
    - `companySize` 'Empty' | 'SelfEmployed' | '2-10' | '11-50' | '51-200' | '201-500' | '501-1000' | '1001-5000' | '5001-10000' | '10001+', nullable — Company size range
    - `country` string, nullable — Country of the company
    - `state` string, nullable — State or province
    - `city` string, nullable — City
    - `timeZoneId` string, nullable — Time zone identifier
    - `linkedInUrl` string, nullable — LinkedIn profile URL
    - `phone` string, nullable — Phone number
    - `twitterUrl` string, nullable — Twitter profile URL
    - `logoUrl` string, nullable — Company logo URL
    - `email` string, nullable — Contact email address
    - `stage` object, nullable — Current stage of the contact account
      - `id` integer — Stage identifier
      - `name` string — Stage name
      - `colorId` integer — Color identifier for the stage
    - `linkedProspectsCount` integer — Number of contacts linked to this account
    - `createdDate` string, date-time — Date when the account was created
    - `lastActivityDate` string, date-time — Date of the last activity on this account
  - `hasMore` boolean — Whether more items are available beyond the current page

## Other responses

- `400` — Filter body validation failure, or invalid pagination from the service layer.
- `401` — Unauthorized. The response body is empty; check the `WWW-Authenticate` header for the expected scheme.
- `403` — User lacks permission to view accounts
- `429` — Too Many Requests

---

[API](https://skmtc.dev/reply/apis/reply-api.md) · [All operations](https://skmtc.dev/reply/apis/reply-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/reply/reply-api/revisions/1c3d32eaf95e/schema)
