POST https://api.lusha.com/v3/contacts/lookalike
Request body
Each entry in
seeds.contacts needs firstName, lastName, and at least one of companyDomain or companyName. Prefer ids (strings) over the legacy contactIds (numbers) when you already know a contact’s Lusha ID.
Paginating without duplicates
The endpoint uses adedupeSessionId to track which contacts have already been returned. Follow this pattern to retrieve more results across multiple calls.
1
First call - no dedupeSessionId
Send your seed contacts without a
dedupeSessionId. The server creates a new session and returns the first batch of lookalikes along with a dedupeSessionId you will use in the next call.2
Subsequent calls - pass the session ID
Include the
dedupeSessionId returned in the previous response. The server skips contacts it has already returned for this session.Sessions are retained for 30 days from the last activity (sliding window). After 30 days of inactivity the session expires and the next call starts a new one.
Example: first request
Example: get more results
Example response
dedupeSessionId and meta.hasMore - carry dedupeSessionId forward and check hasMore to decide whether to keep paging.
Results are lightweight previews (name, current company, job title, location). Pipe each id into Enrich Contacts to retrieve emails and phone numbers.
Excluding specific contacts
Pass anexclude object - shaped like seeds - to filter out contacts you already own or do not want to see, regardless of session state. The server applies your exclusions on top of session-level deduplication on every call.
Use cases
- Expand total addressable market - start from your top-performing contacts and discover similarly qualified prospects you have not yet reached.
- Fill pipeline gaps - when a segment goes cold, use lookalikes to quickly identify new prospects with a comparable profile.