Skip to main content
Before building a Prospecting Contacts request, use the Filters API to retrieve the exact values Lusha accepts. Passing unrecognized values causes searches to return no results, so fetching valid options first is the recommended approach.
V3 change: contact filters are no longer one endpoint per filter type. V3 collapses discovery and lookup into two generic endpoints - the same two endpoints work for every filter type; the filterType you pass tells the API which dimension you want.

The two-step pattern

1

Discover filter types

Call GET /v3/contacts/prospecting/filters. It returns every contact filter type and a requiresQuery flag telling you whether that type needs a search term.
2

Fetch values for the filter type you need

Call GET /v3/contacts/prospecting/filters/{filterType} with the filterType from step 1. If requiresQuery was true, also pass a query string (2–256 characters).
3

Pass the values into your search request

Nest the selected values under filters.contacts.include in POST /v3/contacts/prospecting:

Which filter types need a query

departments, seniority, existingDataPoints, and countries return their entire value set in one call - there’s nothing to search for. locations is the exception: because the location taxonomy is too large to return in full, you search it with a free-text query (for example, "San Francisco") and get back matching location objects.
departments, seniority, existingDataPoints, and countries rarely change. Cache their values instead of calling the discovery or values endpoints before every search.

Next steps

Contact Filter Types

Full reference for the discovery endpoint.

Contact Filter Values

Full reference for the values endpoint, including response shapes per filter type.