Skip to content

Endpoints // Search

People lookalike

New

Find the people who look like one seed profile, given by Social URL or Reverse Contact person id.

POST/v2/search/people/lookalike

Introduction

The People Lookalike endpoint returns the people who look like one seed profile. You name the seed by its Social profile URL or by its Reverse Contact person id (prs_...), and the search is built from what the seed does today: its current function and sub-function, with the time it has spent in them when it is known, its current seniority and its location (country and city). The seed itself is never part of the results.

Every result is a complete profile, the same shape People search returns, with the same cursor pagination and the same price: 1 credit per profile delivered. Results are drawn from our cache-based search index. This endpoint never triggers a live fetch.

Use it when you know one good profile and want more people like it. To choose the criteria yourself, use People search.

Authorization

NameTypeRequiredDescription
apikeystringYesYour API key from the developer dashboard. Pass it via Authorization: Bearer YOUR_API_KEY header.

Request body

Provide exactly one seed: url or id. Sending both returns HTTP 422, because a lookalike is built from a single profile.

NameTypeRequiredDescription
urlstringConditionalPublic Social profile URL of the seed (e.g. https://social.com/in/janedoe). Required unless id is given.
idstringConditionalReverse Contact person id of the seed (e.g. prs_01jbd5vewyenebxgaz869ffe5t), as returned in the id field of any person response. Required unless url is given.
cursorstringNoOpaque cursor returned as metadata.nextCursor; request the next page
perPagenumberNoProfiles per page (1 to 100, default 25)

No filters: the search criteria come from the seed, so the request takes no search filter. Any other field, such as location or currentSeniority, returns HTTP 422 with error.code LOOKALIKE_FILTERS_NOT_SUPPORTED and the offending fields in error.details.fields, and costs 0 credits. A filter is refused rather than ignored, because an ignored filter would return results you did not ask for.

Seed checks: the seed must already be in our search index. A profile that is not indexed yet returns HTTP 404 and costs 0 credits: no lookalike can be built from it, so try another seed. An id that matches no profile returns HTTP 422 with error.code VALIDATION_ERROR, and a seed under an active data subject request (GDPR/CCPA) returns HTTP 451 with error.code DATA_SUBJECT_BLOCKED. Neither costs credits.

Pagination and credits

People lookalike uses cursor pagination, like People search. Each response returns up to perPage profiles (1 to 100, default 25) and a metadata.nextCursor value. To get the following page, send the same seed again with that value as cursor; nextCursor is null on the last page. The cursor is opaque: send it back unchanged, without parsing or altering it. There is no page parameter.

perPage above 100 returns HTTP 422 with error.code PAGINATION_LIMIT_EXCEEDED, and a perPage that is not a whole number returns HTTP 422 with error.code INVALID_PAGINATION.

People lookalike costs 1 credit per profile delivered. Compliance-blocked profiles are removed before the response and are not billed. A page that returns 25 profiles costs 25 credits, and a page that returns no profile costs 0 credits. Lower perPage to control how many credits a single request can spend.

Response structure

Note: This endpoint uses a nested envelope. The top-level V2 data field wraps an inner search payload that contains the actual results array (data.data) and the pagination info (data.metadata). See the example response for the exact shape.

FieldTypeDescription
successbooleantrue if the request was processed successfully
errornullAlways null on success
data.dataobject[]

Full profiles of the people who look like the seed, wrapped under data.data in the envelope. The seed is never among them. Empty array if no one matches. Each item is the same full profile shape as the Profile endpoint; the table below lists its main fields.

Show child attributes
FieldTypeDescription
idstringReverse Contact person id (prs_...). Send it back as id to use this profile as the next seed
publicIdstringSocial public identifier (the /in/xxx slug)
memberIdstring | nullUpstream member identifier when available
linkedinUrlstringFull Social profile URL
firstNamestring | nullFirst name
lastNamestring | nullLast name
headlinestring | nullProfile headline
summarystring | nullProfile summary
isOpenToWorkbooleanWhether the profile is flagged open to work
hasPremiumbooleanWhether the profile has Social Premium
hasVerificationBadgebooleanWhether the profile has a verification badge
photoUrlstring | nullProfile photo URL
creationDatestring | nullWhen the profile was created (ISO 8601)
followersCountnumber | nullFollower count
connectionsCountnumber | nullConnection count
currentPositionobject | nullCurrent job position (how it is chosen)
experiencearrayProfessional experiences, same shape as currentPosition
educationarrayEducation history
skillsstringSkills listed on the profile
languagesarraySpoken languages
certificationsarrayProfessional certifications
recommendationsarrayReceived recommendations
locationobject

Geographic location (null if unknown)

Show child attributes
FieldTypeDescription
citystring | nullCity
statestring | nullState or region
countrystring | nullCountry name
countryCodestring | nullISO country code (e.g. "US")
rawLocationstring | nullRaw location string as displayed on the profile
currentPositionobject

Current job position (null if no current position)

Show child attributes
FieldTypeDescription
titlestring | nullJob title
descriptionstring | nullPosition description
contractTypestring | nullContract type
companyNamestring | nullCompany name
companyLinkedinIdstring | nullCompany Social identifier
companyUrlstring | nullCompany Social URL
companyLocationstring | nullCompany location
companyLogoUrlstring | nullCompany logo URL
startEndDateobject | nullPeriod boundaries (DateRange)
data.metadataobject

Pagination metadata wrapped under data.metadata in the envelope.

Show child attributes
FieldTypeDescription
perPagenumberProfiles requested per page
countnumberProfiles returned in this page
nextCursorstring | nullOpaque cursor for the next page, null on the last page
quotasobject

Credits and rate limit usage after this request

Show child attributes
FieldTypeDescription
creditsConsumednumberCredits consumed by this request
workspaceobject

Workspace-level limits

Show child attributes
FieldTypeDescription
idstringYour workspace identifier
hasUnlimitedCreditsbooleanWhether workspace credits are unlimited
allowDailyOvercostbooleanWhether the workspace may exceed its daily cap
creditsobject

Credit balance

Show child attributes
FieldTypeDescription
totalnumberTotal credits in your plan
usednumberCredits consumed so far
leftnumberRemaining credits
dailyLimitobject

Daily request limit (null if not configured)

Show child attributes
FieldTypeDescription
limitnumberMaximum requests per day
usednumberRequests made today
leftnumberRemaining requests today
nextResetstringWhen the daily window resets (ISO 8601)
minuteRateLimitobject

Per-minute rate limit

Show child attributes
FieldTypeDescription
limitnumberMaximum requests per minute
usednumberRequests made in the current minute
leftnumberRemaining requests in the current minute
nextResetstringWhen the minute window resets (ISO 8601)
keyobject

API key-level limits (null when request is from dashboard)

Show child attributes
FieldTypeDescription
idstringAPI key identifier
dailyLimitobject

Daily limit for this key (null if not configured)

Show child attributes
FieldTypeDescription
limitnumberMaximum requests per day
usednumberRequests made today
leftnumberRemaining requests today
nextResetstringWhen the daily window resets (ISO 8601)
minuteRateLimitobject

Minute rate limit for this key

Show child attributes
FieldTypeDescription
limitnumberMaximum requests per minute
usednumberRequests made in the current minute
leftnumberRemaining requests in the current minute
nextResetstringWhen the minute window resets (ISO 8601)
metadataobject

Request tracking information (not to be confused with data.metadata which is pagination)

Show child attributes
FieldTypeDescription
requestIdstringUnique identifier for this request
executionTimeMsnumberTotal execution time in milliseconds

Code examples

Code Examples

curl -X POST https://api.reversecontact.com/v2/search/people/lookalike \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://social.com/in/janedoe",
    "perPage": 25
  }'

Example response

200 - Success

Example Response

{
  "success": true,
  "data": {
    "data": [
      {
        "id": "prs_01h2x3y4z5a6b7c8d9e0f1g2h3",
        "publicId": "janedoe",
        "memberId": "ACoAAB12345",
        "linkedinUrl": "https://www.social.com/in/janedoe",
        "firstName": "Jane",
        "lastName": "Doe",
        "headline": "VP of Marketing at Acme Corp | Demand Gen & Brand",
        "summary": "Experienced marketing leader with 15+ years driving growth for B2B SaaS companies.",
        "pronoun": "she/her",
        "isOpenToWork": false,
        "hasPremium": true,
        "hasVerificationBadge": true,
        "isInRemembrance": false,
        "photoUrl": "https://media.licdn.com/dms/image/v2/D5603AQ.../profile-photo.jpg",
        "backgroundUrl": null,
        "creationDate": "2009-03-15T00:00:00.000Z",
        "followersCount": 12480,
        "connectionsCount": 500,
        "location": {
          "city": "San Francisco",
          "state": "California",
          "country": "United States of America",
          "countryCode": "US",
          "rawLocation": "San Francisco Bay Area"
        },
        "currentPosition": {
          "title": "VP of Marketing",
          "description": "Leading a team of 25 marketers across demand gen, product marketing, and brand.",
          "contractType": "Full-time",
          "companyName": "Acme Corp",
          "companyLinkedinId": "12345678",
          "companyUrl": "https://www.social.com/company/acme-corp",
          "companyLocation": "San Francisco, CA",
          "companyLogoUrl": "https://media.licdn.com/dms/image/v2/C4D0BAQ.../logo.jpg",
          "startEndDate": {
            "start": "2021-06-01T00:00:00.000Z",
            "end": null
          }
        },
        "experience": [
          {
            "title": "VP of Marketing",
            "description": "Leading a team of 25 marketers across demand gen, product marketing, and brand.",
            "contractType": "Full-time",
            "companyName": "Acme Corp",
            "companyLinkedinId": "12345678",
            "companyUrl": "https://www.social.com/company/acme-corp",
            "companyLocation": "San Francisco, CA",
            "companyLogoUrl": "https://media.licdn.com/dms/image/v2/C4D0BAQ.../logo.jpg",
            "startEndDate": {
              "start": "2021-06-01T00:00:00.000Z",
              "end": null
            }
          },
          {
            "title": "Director of Marketing",
            "description": "Built the marketing function from scratch. Scaled from 0 to $5M ARR.",
            "contractType": "Full-time",
            "companyName": "Startup Inc",
            "companyLinkedinId": "98765432",
            "companyUrl": "https://www.social.com/company/startup-inc",
            "companyLocation": "Remote",
            "companyLogoUrl": null,
            "startEndDate": {
              "start": "2018-01-01T00:00:00.000Z",
              "end": "2021-05-31T00:00:00.000Z"
            }
          }
        ],
        "education": [
          {
            "degreeName": "MBA",
            "fieldOfStudy": "Marketing",
            "description": null,
            "grade": null,
            "schoolName": "Stanford Graduate School of Business",
            "schoolUrl": "https://www.social.com/school/stanford-gsb",
            "schoolLogoUrl": "https://media.licdn.com/dms/image/v2/C4D0BAQ.../logo.jpg",
            "startEndDate": {
              "start": "2012-09-01T00:00:00.000Z",
              "end": "2014-06-15T00:00:00.000Z"
            }
          }
        ],
        "skills": ["Marketing Strategy", "B2B SaaS", "Demand Generation", "Product Marketing"],
        "languages": [{ "language": "English", "proficiency": "Native or bilingual" }],
        "certifications": [],
        "recommendations": [],
        "testScores": []
      }
    ],
    "metadata": {
      "perPage": 25,
      "count": 1,
      "nextCursor": "cur_01j9x8r5n3a9c7e5g1b3d9f7"
    }
  },
  "error": null,
  "metadata": {
    "requestId": "req_l0o1k2a3l4i5",
    "executionTimeMs": 520
  },
  "quotas": {
    "creditsConsumed": 1,
    "workspace": {
      "id": "ws_abc123",
      "credits": {
        "total": 10000,
        "used": 4522,
        "left": 5478
      },
      "dailyLimit": null,
      "minuteRateLimit": {
        "limit": 60,
        "used": 5,
        "left": 55,
        "nextReset": "2026-09-14T14:16:00.000Z"
      },
      "hasUnlimitedCredits": false,
      "allowDailyOvercost": false
    },
    "key": {
      "id": "key_abc123",
      "dailyLimit": null,
      "minuteRateLimit": {
        "limit": 60,
        "used": 5,
        "left": 55,
        "nextReset": "2026-09-14T14:16:00.000Z"
      }
    }
  }
}