Skip to main content
GET
/
contacts
Get Many Contacts
curl --request GET \
  --url https://api.lemlist.com/api/contacts \
  --header 'Authorization: Basic <encoded-value>'
[
  {
    "_id": "ctc_xW8Ou6C03Csv8vatp",
    "teamId": "tea_8QvkOiBfPdb2ZRhHi",
    "fullName": "John Doe",
    "email": "support@lemlist.com",
    "fields": {
      "firstName": "John",
      "jobTitle": "Growth Engineer",
      "lastName": "Doe",
      "industry": "Technology",
      "isActiveInCampaigns": false,
      "lastCampaign": "NEW TO DELETE",
      "lastLeadMarkedAsInterestedDate": "2025-10-28T02:12:31.971Z",
      "leadStatus": "Marked as not Interested by api"
    },
    "campaigns": [
      {
        "campaignId": "cam_bSn8EORHQxbWPjHvu",
        "campaignState": "running",
        "leadState": "review",
        "leadId": "lea_fiDpiGV585wy3Oii2"
      }
    ],
    "ownerId": "usr_ahfFktBBHUIxbVG5P",
    "createdAt": "2025-10-28T00:40:37.917Z",
    "createdBy": "usr_ahfFktBBHUIxbVG5P",
    "unsubscribed": false
  },
  {
    "_id": "ctc_a9RxJNa7pmMd85H9b",
    "teamId": "tea_8QvkOiBfPdb2ZRhHi",
    "fullName": "Casey",
    "email": "riley@example.com",
    "fields": {
      "firstName": "Casey",
      "isActiveInCampaigns": false
    },
    "campaigns": [
      {
        "campaignId": "cam_jwm7THjgGFE3ylR85",
        "campaignState": "running",
        "leadState": "done",
        "leadId": "lea_XKjAytuJhBKZhxhWh"
      },
      {
        "campaignId": "cam_eF4DlNERV0CW1TwRd",
        "campaignState": "running",
        "leadState": "done",
        "leadId": "lea_fJcS9D3UtEqZcDcAG"
      },
      {
        "campaignId": "cam_UBbMt30jHq0vNJKJr",
        "campaignState": "running",
        "leadState": "done",
        "leadId": "lea_GlaMfjxlUYuwEDL0w"
      },
      {
        "campaignId": "cam_pijDVnytN5S7frriD",
        "campaignState": "running",
        "leadState": "review",
        "leadId": "lea_Bs9aMGCcjdzTDvixY"
      }
    ],
    "ownerId": "usr_Emu1g29BMtBixhMSP",
    "createdAt": "2024-10-01T09:00:13.831Z",
    "createdBy": "usr_Emu1g29BMtBixhMSP",
    "unsubscribed": true
  }
]

Query modes

This endpoint supports two query modes:
ModeParametersResponse format
By IDs/emailsidsOrEmailsArray of contacts
Search/filtersearch, email, listId, and/or notInAnyCampaignPaginated object with data, total, limit, offset

Filtering by contact list

Use the listId parameter to retrieve contacts belonging to a specific list. Get valid list IDs from GET /contacts/lists. You can combine listId with search or email to further narrow results within a list.

Filtering contacts not in any campaign

Use notInAnyCampaign=true to find contacts that are not part of any campaign (orphan contacts). This can be used alone or combined with other filters like search, email, or listId.

Authorizations

Authorization
string
header
required

Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.

Query Parameters

idsOrEmails
string

A comma separated string of either valid contact IDs (MongoDB ObjectId) or valid email addresses. Optional — when omitted, returns the paginated list of all contacts of the team.

Search contacts by name or other text fields. Must be at least 2 characters.

email
string<email>

Search contacts by exact email address.

listId
string

Filter contacts by contact list ID (clt_xxx format). Can be combined with search or email, or used alone to list all contacts in a list. Get valid IDs from GET /contacts/lists.

Pattern: ^clt_[a-zA-Z0-9]+$
notInAnyCampaign
boolean

When set to true, only returns contacts that are not part of any campaign (orphan contacts). Can be used alone or combined with other filters such as search, email, or listId.

companyId
string

Filter contacts by attached company ID (cpn_xxx format). Use this when you already know the lemlist company id (for example after fetching GET /companies?crmSyncStatus=unique_index_error_company). Mutually exclusive with companyDomain, companyLinkedinUrl, and companySalesnavUrl.

Pattern: ^cpn_[a-zA-Z0-9]+$
companyDomain
string

Filter contacts by their company's website domain. Resolved to a companyId against the Companies collection. If no company matches, the endpoint returns an empty list (total: 0). Mutually exclusive with the other company* filters.

companyLinkedinUrl
string

Filter contacts by their company's LinkedIn URL. Resolved to a companyId against the Companies collection. If no company matches, the endpoint returns an empty list (total: 0). Mutually exclusive with the other company* filters.

companySalesnavUrl
string

Filter contacts by their company's LinkedIn Sales Navigator URL. Resolved to a companyId against the Companies collection. If no company matches, the endpoint returns an empty list (total: 0). Mutually exclusive with the other company* filters.

limit
integer
default:100

Maximum number of contacts to return (1–500). Defaults to 100.

Required range: 1 <= x <= 500
offset
integer
default:0

Number of contacts to skip for pagination. Defaults to 0.

Required range: x >= 0

Response

Success. When using idsOrEmails, returns an array of contacts. Otherwise, returns a paginated object with data, total, limit, and offset.

A contact record in your CRM. Not to be confused with a lead which is a contact specifically added to a campaign.

_id
string

Unique contact identifier

teamId
string

Team identifier the contact belongs to

fullName
string

Contact's calculated full name

email
string<email>

Contact's primary email address

fields
object

Custom fields associated with the contact

campaigns
object[]

List of campaigns the contact is associated with

ownerId
string

ID of the user who owns this contact

createdAt
string<date-time>

Contact creation timestamp

createdBy
string

ID of the user who created the contact

unsubscribed
boolean

Whether the contact is globally unsubscribed. When true, no outreach will be sent to this contact.