---
title: "List all contacts"
method: GET
path: "/v3/contacts"
tags: ["Contacts"]
---

# List all contacts

`GET /v3/contacts`

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

Use this endpoint when you need to browse your contacts or look one up by its email or LinkedIn URL. Results are returned as a page controlled by the top and skip query parameters; omit both to get the first page. Pass email and/or linkedIn to narrow the results to contacts matching those exact identifiers. For richer, rule-based filtering use the filter endpoint instead.

## Query parameters

- `top` integer
- `skip` integer
- `email` string
- `linkedIn` string

## Response `200`

List of contacts retrieved successfully

- object
  - `items` object[]
    - `id` integer — Unique ID
    - `email` string, email — Primary email address
    - `domain` string — Email domain (derived from email)
    - `firstName` string — First name
    - `lastName` string — Last name
    - `phone` string — Phone number
    - `title` string — Job title
    - `company` string — Organization name
    - `companySize` 'empty' | 'selfEmployed' | 'ten' | 'fifty' | 'twoHundred' | 'fiveHundred' | 'oneThousand' | 'fiveThousand' | 'tenThousand' | 'overTenThousand' — Organization employee count range
    - `industry` string — Business sector
    - `city` string — City of residence
    - `state` string — State/province
    - `country` string — Country
    - `timeZoneId` string — Timezone identifier
    - `linkedInUrl` string, uri — LinkedIn profile URL
    - `linkedInSalesNavigatorUrl` string, uri — Sales Navigator URL
    - `linkedInRecruiterUrl` string, uri — Recruiter URL
    - `phoneStatus` 'pending' | 'invalid' | 'valid' | 'validationFailed' | 'notValidated' — Phone validation status
    - `notes` string — Additional information
    - `ownerUserId` integer — ID of the user who owns this contact
    - `accountId` integer, nullable — ID of the contact account this contact belongs to
    - `isOptedOut` boolean — Whether the contact has opted out of communications
    - `callStatus` 'none' | 'toCall' | 'called' — Contact-level call status. Set via `PATCH /v3/contacts/{id}` (`callStatus` field). Pass `none` to clear.
    - `meetingStatus` 'none' | 'meetingBooked' — Contact-level meeting status. Set via `PATCH /v3/contacts/{id}` (`meetingStatus` field). Pass `none` to clear.
    - `addingDate` string, date-time, nullable — Date the contact was added
    - `createdAt` string, date-time, nullable — Creation timestamp
    - `lastModifiedAt` string, date-time, nullable — Last modification timestamp
    - `customFields` object[] — User-defined fields
      - `key` string, required — Field identifier
      - `value` string, nullable — Field content
  - `hasMore` boolean — Indicates if there are more items to fetch

## Other responses

- `400` — Invalid pagination parameters or other business rejection
- `401` — Unauthorized. The response body is empty; check the `WWW-Authenticate` header for the expected scheme.
- `403` — User lacks required feature scope to view contacts
- `429` — Too Many Requests

---

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