---
title: "People lookalike"
method: POST
path: "/v2/search/people/lookalike"
tags: ["Search"]
---

# People lookalike

`POST /v2/search/people/lookalike`

## Request

- Base URL: `https://api.reversecontact.com`
- URL: `https://api.reversecontact.com/v2/search/people/lookalike`
- Auth: HTTP bearer

Find the people who look like one seed profile, given by Social profile URL or Reverse Contact person id. The search is built from the seed: its current function and sub-function, seniority and location. The seed is never among the results. Returns full profiles as a People Search page: results at data.data and cursor metadata at data.metadata. Pass metadata.nextCursor back as cursor with the same seed for the next page. Search filters are refused with 422 LOOKALIKE_FILTERS_NOT_SUPPORTED and cost 0 credits. A seed not yet in the search index returns 404 and costs 0 credits. Credits: 1 per profile delivered. A page with no profile costs 0.

## Request body

- union: Provide exactly one seed, url or id. Search filters are refused: the criteria come from the seed.
  - object
    - `url` string, required: Public Social profile URL of the seed. Required unless id is given.
    - `id` string: Reverse Contact person id of the seed (prs_...), as returned in the id field of any person response. Required unless url is given.
    - `cursor` string: Opaque cursor returned in metadata.nextCursor. Send it with the same seed.
    - `perPage` integer: Results per page (1-100, default 25)
  - object
    - `url` string: Public Social profile URL of the seed. Required unless id is given.
    - `id` string, required: Reverse Contact person id of the seed (prs_...), as returned in the id field of any person response. Required unless url is given.
    - `cursor` string: Opaque cursor returned in metadata.nextCursor. Send it with the same seed.
    - `perPage` integer: Results per page (1-100, default 25)

## Response `200`

People who look like the seed

- object
  - `success` true, required
  - `data` SearchPeopleData, required: Nested envelope: results are at data.data and pagination at data.metadata (top-level data is this object).
    - `data` PersonFull[], required: Full profiles returned for this page
      - `id` string, required: Reverse Contact person id (prs_...)
      - `publicId` string, required: Social public slug
      - `memberId` string: Upstream member identifier when available
      - `linkedinUrl` string, required: Public Social profile URL
      - `firstName` string, nullable
      - `lastName` string, nullable
      - `headline` string, nullable
      - `summary` string, nullable
      - `pronoun` string, nullable
      - `isOpenToWork` boolean: Whether the profile is flagged open to work
      - `hasPremium` boolean: Whether the profile has Social Premium
      - `hasVerificationBadge` boolean: Whether the profile has a verification badge
      - `isInRemembrance` boolean: Whether the profile is in remembrance
      - `photoUrl` string, nullable
      - `backgroundUrl` string, nullable
      - `creationDate` string, nullable
      - `followersCount` integer, nullable
      - `connectionsCount` integer, nullable
      - `location` PersonLocation
        - `city` string, nullable
        - `state` string, nullable
        - `country` string, nullable
        - `countryCode` string, nullable
        - `rawLocation` string, nullable
      - `currentPosition` object, nullable
        - `title` string, nullable
        - `description` string, nullable
        - `contractType` string, nullable
        - `companyId` string, nullable: Reverse Contact company id (com_...)
        - `companyName` string, nullable
        - `companyLinkedinId` string, nullable
        - `companyUrl` string, nullable
        - `companyLocation` string, nullable
        - `companyLogoUrl` string, nullable
        - `startEndDate` object, nullable
          - `start` string, nullable: Start date (ISO 8601)
          - `end` string, nullable: End date (ISO 8601), null if current
      - `experience` object[]
        - `title` string, nullable
        - `description` string, nullable
        - `contractType` string, nullable
        - `companyId` string, nullable: Reverse Contact company id (com_...)
        - `companyName` string, nullable
        - `companyLinkedinId` string, nullable
        - `companyUrl` string, nullable
        - `companyLocation` string, nullable
        - `companyLogoUrl` string, nullable
        - `startEndDate` object, nullable
          - `start` string, nullable: Start date (ISO 8601)
          - `end` string, nullable: End date (ISO 8601), null if current
      - `education` object[]
        - `degreeName` string, nullable
        - `fieldOfStudy` string, nullable
        - `description` string, nullable
        - `grade` string, nullable
        - `schoolName` string, nullable
        - `schoolUrl` string, nullable
        - `schoolLogoUrl` string, nullable
        - `startEndDate` object, nullable
          - `start` string, nullable: Start date (ISO 8601)
          - `end` string, nullable: End date (ISO 8601), null if current
      - `skills` string[]
      - `languages` object[]
        - `language` string, nullable
        - `proficiency` string, nullable
      - `certifications` object[]
        - `name` string, nullable
        - `organizationName` string, nullable
        - `organizationUrl` string, nullable
        - `issuedDate` string, nullable
      - `recommendations` object[]
        - `caption` string, nullable
        - `description` string, nullable
        - `authorFullname` string, nullable
        - `authorUrl` string, nullable
      - `testScores` object[]
        - `testTitle` string, nullable
        - `score` string, nullable
        - `date` string, nullable
    - `metadata` object, required
      - `perPage` integer, required: Profiles requested per page
      - `count` integer, required: Profiles returned in this page
      - `nextCursor` string, nullable, required: Opaque cursor for the next page
  - `error` unknown, required
  - `quotas` V2Quotas, required
    - `creditsConsumed` number, required: Credits used for this request after pricing resolution
    - `workspace` object, required
      - `id` string, required: Workspace identifier
      - `credits` V2Credits, required
        - `total` number, required: Total credits in your plan
        - `used` number, required: Credits consumed so far
        - `left` number, required: Remaining credits
      - `hasUnlimitedCredits` boolean, required: Whether workspace credits are unlimited
      - `allowDailyOvercost` boolean, required: Whether the workspace may exceed its daily cap (Enterprise only)
      - `dailyLimit` V2LimitInfo
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
      - `minuteRateLimit` V2LimitInfo, required
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
    - `key` object, nullable, required
      - `id` string, required: API key identifier
      - `dailyLimit` V2LimitInfo
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
      - `minuteRateLimit` V2LimitInfo, required
        - `limit` integer, required: Maximum allowed in the window
        - `used` integer, required: Amount used in the window
        - `left` integer, required: Remaining in the window
        - `nextReset` string, required: When the window resets (ISO 8601)
      - `creditLimits` object, required: Credit limits set on this API key. Each is null when the key has no such limit.
        - `daily` V2KeyCreditLimit, required
          - `limit` number, required: Credits this key may spend in the period
          - `used` number, required: Credits this key spent in the period, this request included
          - `left` number, required: Credits this key may still spend in the period
          - `nextReset` string, nullable, required: When the period resets (ISO 8601): 00:00 UTC for the daily limit, the 1st of next month at 00:00 UTC for the monthly limit, null for the total limit
        - `monthly` V2KeyCreditLimit, required
          - `limit` number, required: Credits this key may spend in the period
          - `used` number, required: Credits this key spent in the period, this request included
          - `left` number, required: Credits this key may still spend in the period
          - `nextReset` string, nullable, required: When the period resets (ISO 8601): 00:00 UTC for the daily limit, the 1st of next month at 00:00 UTC for the monthly limit, null for the total limit
        - `total` V2KeyCreditLimit, required
          - `limit` number, required: Credits this key may spend in the period
          - `used` number, required: Credits this key spent in the period, this request included
          - `left` number, required: Credits this key may still spend in the period
          - `nextReset` string, nullable, required: When the period resets (ISO 8601): 00:00 UTC for the daily limit, the 1st of next month at 00:00 UTC for the monthly limit, null for the total limit
  - `metadata` V2Metadata, required
    - `requestId` string, required: Unique identifier for this request
    - `executionTimeMs` integer, required: Total execution time in milliseconds
    - `updatedAt` string: Last upstream update timestamp (ISO 8601). Present only when available.

## Other responses

- `400`: Invalid JSON body or endpoint-specific business validation
- `401`: Missing or invalid API key or OAuth access token
- `402`: No credits left. Purchase more to continue.
- `403`: Forbidden: the API key lacks permission for this endpoint, or reached its total credit limit (KEY_CREDIT_LIMIT_REACHED, no reset: raise or reset the limit)
- `404`: Data not found
- `422`: Schema or validation error, unresolved internal id, or disposable email domain
- `429`: Rate limit exceeded, or the API key reached its daily or monthly credit limit (KEY_CREDIT_LIMIT_REACHED). Wait error.details.retryAfter seconds, then retry. The response carries no quotas object.
- `451`: Data subject blocked. The profile has been removed per GDPR/CCPA data subject request.

---

[API](https://skmtc.dev/scrapin/apis/reverse-contact-api.md) - [All operations](https://skmtc.dev/scrapin/apis/reverse-contact-api/llms.txt) - [OpenAPI document](https://skmtc.dev/scrapin/apis/reverse-contact-api/revisions/7d02242af2a9?raw)
