# Contact Lookalikes

Returns contact lookalikes based on seed contacts.

Endpoint: (POST) https://api.lusha.com/v3/lookalike/contacts


  #### How It Works


First Request (Start a New Run):
- Do not send dedupeSessionId
- Server generates one and returns it in the response
- Use returned dedupeSessionId for subsequent "get more" requests

Subsequent Requests ("Get More"):
- Send the returned dedupeSessionId to fetch more results without duplicates
- Server dedupes against all contacts previously returned for the dedupeSessionId
- User-provided exclude.* is applied on every request and combined with server-side dedupe
- Session history retained for 30 days from last activity (sliding window)
---

Endpoint: POST /v3/lookalike/contacts
Security: ApiKeyAuth

## Request fields (application/json):

  - `dedupeSessionId` (string)
    Example: "58adaa77-7a6e-4c9b-8c2d-820a6538e613"

  - `seeds` (object,null, required)

  - `seeds.linkedinUrls` (array)
    Example: ["https://www.linkedin.com/in/johndoe"]

  - `seeds.contacts` (array)

  - `seeds.contacts.firstName` (string, required)
    Example: "John"

  - `seeds.contacts.lastName` (string, required)
    Example: "Doe"

  - `seeds.contacts.companyDomain` (string)
    Example: "acme.com"

  - `seeds.contacts.companyName` (string)
    Example: "Acme Inc"

  - `seeds.emails` (array)
    Example: ["john@acme.com"]

  - `seeds.contactIds` (array)
    Example: [1234,4567]

  - `exclude` (object,null)

  - `limit` (integer)
    Example: 25

## Response 200 fields (application/json):

  - `dedupeSessionId` (string,null, required)
    Example: "58adaa77-7a6e-4c9b-8c2d-820a6538e613"

  - `results` (array, required)

  - `results.contactId` (string)
    Example: "9659196"

  - `results.firstName` (string,null)
    Example: "Sarah"

  - `results.lastName` (string,null)
    Example: "Johnson"

  - `results.socialLinks` (object)

  - `results.socialLinks.linkedin` (string,null)
    Example: "https://www.linkedin.com/in/sarahjohnson"

  - `results.company` (object)

  - `results.company.companyId` (string)
    Example: "8605368"

  - `results.company.name` (string,null)
    Example: "Marriott International"

  - `results.company.domain` (string,null)
    Example: "marriott.com"

  - `results.jobTitle` (object)

  - `results.jobTitle.title` (string,null)
    Example: "VP of Sales"

  - `results.jobTitle.departments` (array)
    Example: ["Sales"]

  - `results.jobTitle.seniority` (string,null)
    Example: "Director"

  - `results.location` (object)

  - `results.location.country` (string,null)
    Example: "United States"

  - `results.location.state` (string,null)
    Example: "Maryland"

  - `results.location.city` (string,null)
    Example: "Bethesda"

  - `meta` (object, required)

  - `meta.returned` (integer, required)
    Example: 25

  - `meta.hasMore` (boolean, required)
    Example: true

  - `creditsCharged` (integer)
    Example: 3

## Response 400 fields (application/json):

  - `statusCode` (integer, required)
    HTTP status code
    Example: 400

  - `message` (string, required)
    Error message
    Example: "Validation failed"

  - `errors` (array)
    Detailed error messages (optional, only for validation errors)
    Example: ["entityType must be one of: contact, company"]

## Response 410 fields (application/json):

  - `code` (string, required)
    Example: "DEDUPE_SESSION_INVALID"

  - `message` (string, required)
    Example: "The provided dedupeSessionId is invalid or expired. Generate a new request without dedupeSessionId to start a fresh run."


## Response 402 fields
