Skip to main content
POST https://api.lusha.com/prospecting/contact/search is step 2 of the 3-step prospecting flow. You pass a set of filters that describe your Ideal Customer Profile and receive back a paginated list of matching contacts, each with a contactId. No credits are consumed at this step - credits are charged when you enrich the results in step 3. Before building your request, use the Contact Filters endpoints to look up the valid values for each field.

Request body

Send a JSON body with a filters object. Filters are split into contacts and companies, each with include and exclude sections. All filter fields are optional - include only the ones relevant to your ICP.

Common filter fields

Signal filtering (premium feature)

You can narrow results to contacts at key career moments by filtering on signal types.
Signal filtering is a premium feature. Credits are charged for each signal type that returns results.
Add a signal object under filters.contacts.include to match contacts who have recently experienced a specific event:
The allowed contact signal values are allSignals, promotion, and companyChange.

DNC filtering (Scale feature)

excludeDnc is a Scale plan feature. Passing this parameter on an unsupported plan returns a 403 error.
Set "excludeDnc": true at the top level of the request body to filter out contacts whose phone numbers are all marked Do Not Call:
When excludeDnc is enabled:
  • Contacts with at least one callable phone number remain in results.
  • Only callable phone numbers are shown - DNC numbers are hidden.
  • Contacts whose phones are all DNC are excluded entirely.

Example request

Example response

The requestId and each contact’s contactId are what you pass to the Enrich Contacts endpoint to retrieve full records. See the full API reference for the complete response schema, including all has* availability flags.
Use the Contact Filters endpoints to fetch valid values for seniority, departments, locations, and existing_data_points before building your search request.