Prospecting Contacts
Search for contacts that match your Ideal Customer Profile using rich filter criteria.
Filter by contact attributes:
- Job title, seniority, department
- Location (city, state, country, continent)
- Existing data points (e.g. only contacts with a known work email)
- Signal activity (promotion, job change)
Filter by company attributes:
- Size, revenue, industry, technologies
- Location, intent topics, funding
Use options.maxContactsPerCompany (1–20) to cap how many contacts are returned per company; pagination.size still controls the page size.
Use the returned contact id values with Enrich Contacts to reveal emails and phones.
Billing: Charged per result via
api_search. If signals are requested, an additional charge applies per matched signal per result.
Persisting to a table: Pass
tableIdto also persist matching results into an existing table. This is additive - the primary response is unchanged, and atableWriteobject is added showing what happened on the table side. See Contacts Tables.
curl --request POST \
--url https://api.lusha.com/v3/contacts/prospecting \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"pagination": {
"page": 0,
"size": 100
},
"filters": {
"contacts": {
"include": {
"departments": [
"Sales"
],
"locations": [
{
"country": "United States"
}
],
"existingDataPoints": [
"work_email"
]
}
},
"companies": {
"include": {
"locations": [
{
"country": "United States"
}
],
"foundedYear": [
{
"min": 2000
}
],
"businessModel": [
"B2B"
],
"companyType": [
"Public Company"
],
"linkedinUrls": [
"https://www.linkedin.com/company/google"
],
"keywords": [
"fintech"
]
},
"exclude": {
"domains": [
"competitor.com"
],
"companyType": [
"Self Employed"
]
}
}
},
"tableId": "482910",
"options": {
"includePartialProfiles": true,
"excludeDnc": false,
"maxContactsPerCompany": 2
}
}
'import requests
url = "https://api.lusha.com/v3/contacts/prospecting"
payload = {
"pagination": {
"page": 0,
"size": 100
},
"filters": {
"contacts": { "include": {
"departments": ["Sales"],
"locations": [{ "country": "United States" }],
"existingDataPoints": ["work_email"]
} },
"companies": {
"include": {
"locations": [{ "country": "United States" }],
"foundedYear": [{ "min": 2000 }],
"businessModel": ["B2B"],
"companyType": ["Public Company"],
"linkedinUrls": ["https://www.linkedin.com/company/google"],
"keywords": ["fintech"]
},
"exclude": {
"domains": ["competitor.com"],
"companyType": ["Self Employed"]
}
}
},
"tableId": "482910",
"options": {
"includePartialProfiles": True,
"excludeDnc": False,
"maxContactsPerCompany": 2
}
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
pagination: {page: 0, size: 100},
filters: {
contacts: {
include: {
departments: ['Sales'],
locations: [{country: 'United States'}],
existingDataPoints: ['work_email']
}
},
companies: {
include: {
locations: [{country: 'United States'}],
foundedYear: [{min: 2000}],
businessModel: ['B2B'],
companyType: ['Public Company'],
linkedinUrls: ['https://www.linkedin.com/company/google'],
keywords: ['fintech']
},
exclude: {domains: ['competitor.com'], companyType: ['Self Employed']}
}
},
tableId: '482910',
options: {includePartialProfiles: true, excludeDnc: false, maxContactsPerCompany: 2}
})
};
fetch('https://api.lusha.com/v3/contacts/prospecting', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://api.lusha.com/v3/contacts/prospecting")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"pagination\": {\n \"page\": 0,\n \"size\": 100\n },\n \"filters\": {\n \"contacts\": {\n \"include\": {\n \"departments\": [\n \"Sales\"\n ],\n \"locations\": [\n {\n \"country\": \"United States\"\n }\n ],\n \"existingDataPoints\": [\n \"work_email\"\n ]\n }\n },\n \"companies\": {\n \"include\": {\n \"locations\": [\n {\n \"country\": \"United States\"\n }\n ],\n \"foundedYear\": [\n {\n \"min\": 2000\n }\n ],\n \"businessModel\": [\n \"B2B\"\n ],\n \"companyType\": [\n \"Public Company\"\n ],\n \"linkedinUrls\": [\n \"https://www.linkedin.com/company/google\"\n ],\n \"keywords\": [\n \"fintech\"\n ]\n },\n \"exclude\": {\n \"domains\": [\n \"competitor.com\"\n ],\n \"companyType\": [\n \"Self Employed\"\n ]\n }\n }\n },\n \"tableId\": \"482910\",\n \"options\": {\n \"includePartialProfiles\": true,\n \"excludeDnc\": false,\n \"maxContactsPerCompany\": 2\n }\n}")
.asString();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.lusha.com/v3/contacts/prospecting"
payload := strings.NewReader("{\n \"pagination\": {\n \"page\": 0,\n \"size\": 100\n },\n \"filters\": {\n \"contacts\": {\n \"include\": {\n \"departments\": [\n \"Sales\"\n ],\n \"locations\": [\n {\n \"country\": \"United States\"\n }\n ],\n \"existingDataPoints\": [\n \"work_email\"\n ]\n }\n },\n \"companies\": {\n \"include\": {\n \"locations\": [\n {\n \"country\": \"United States\"\n }\n ],\n \"foundedYear\": [\n {\n \"min\": 2000\n }\n ],\n \"businessModel\": [\n \"B2B\"\n ],\n \"companyType\": [\n \"Public Company\"\n ],\n \"linkedinUrls\": [\n \"https://www.linkedin.com/company/google\"\n ],\n \"keywords\": [\n \"fintech\"\n ]\n },\n \"exclude\": {\n \"domains\": [\n \"competitor.com\"\n ],\n \"companyType\": [\n \"Self Employed\"\n ]\n }\n }\n },\n \"tableId\": \"482910\",\n \"options\": {\n \"includePartialProfiles\": true,\n \"excludeDnc\": false,\n \"maxContactsPerCompany\": 2\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"requestId": "fa828378-7a8e-4e5d-9f72-0270e7f7ab51",
"pagination": {
"page": 0,
"size": 50,
"total": 670550,
"totalGuaranteed": true,
"totalDescription": "Exact contact count (up to 2 per company)"
},
"results": [
{
"id": "670138733",
"firstName": "Ting",
"lastName": "Tsou"
}
],
"tableWrite": {
"tableId": "482910",
"added": 48,
"alreadyPresent": 2,
"columnsCreated": [],
"rowsProcessed": 50,
"rowsCharged": 48,
"rowsAlreadyPaidInTable": 2
},
"billing": {
"creditsCharged": 2,
"resultsReturned": 50
}
}Authorizations
Your Lusha API key. You can find this in your Lusha dashboard under API settings.
Include this key in the api_key header for all requests.
Body
Response
Successful response
Show child attributes
Show child attributes
Pagination for Prospecting Contacts. Extends the standard pagination object with two optional fields describing the total count. Both keys are omitted when not returned.
Show child attributes
Show child attributes
Added to a Prospecting, Enrich, Signals, or Lookalike response when tableId is passed on the request. The primary response is unaffected even if the table write fails.
Show child attributes
Show child attributes
Credit usage summary for a V3 API request
Show child attributes
Show child attributes
Was this page helpful?
curl --request POST \
--url https://api.lusha.com/v3/contacts/prospecting \
--header 'Content-Type: application/json' \
--header 'api_key: <api-key>' \
--data '
{
"pagination": {
"page": 0,
"size": 100
},
"filters": {
"contacts": {
"include": {
"departments": [
"Sales"
],
"locations": [
{
"country": "United States"
}
],
"existingDataPoints": [
"work_email"
]
}
},
"companies": {
"include": {
"locations": [
{
"country": "United States"
}
],
"foundedYear": [
{
"min": 2000
}
],
"businessModel": [
"B2B"
],
"companyType": [
"Public Company"
],
"linkedinUrls": [
"https://www.linkedin.com/company/google"
],
"keywords": [
"fintech"
]
},
"exclude": {
"domains": [
"competitor.com"
],
"companyType": [
"Self Employed"
]
}
}
},
"tableId": "482910",
"options": {
"includePartialProfiles": true,
"excludeDnc": false,
"maxContactsPerCompany": 2
}
}
'import requests
url = "https://api.lusha.com/v3/contacts/prospecting"
payload = {
"pagination": {
"page": 0,
"size": 100
},
"filters": {
"contacts": { "include": {
"departments": ["Sales"],
"locations": [{ "country": "United States" }],
"existingDataPoints": ["work_email"]
} },
"companies": {
"include": {
"locations": [{ "country": "United States" }],
"foundedYear": [{ "min": 2000 }],
"businessModel": ["B2B"],
"companyType": ["Public Company"],
"linkedinUrls": ["https://www.linkedin.com/company/google"],
"keywords": ["fintech"]
},
"exclude": {
"domains": ["competitor.com"],
"companyType": ["Self Employed"]
}
}
},
"tableId": "482910",
"options": {
"includePartialProfiles": True,
"excludeDnc": False,
"maxContactsPerCompany": 2
}
}
headers = {
"api_key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {api_key: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
pagination: {page: 0, size: 100},
filters: {
contacts: {
include: {
departments: ['Sales'],
locations: [{country: 'United States'}],
existingDataPoints: ['work_email']
}
},
companies: {
include: {
locations: [{country: 'United States'}],
foundedYear: [{min: 2000}],
businessModel: ['B2B'],
companyType: ['Public Company'],
linkedinUrls: ['https://www.linkedin.com/company/google'],
keywords: ['fintech']
},
exclude: {domains: ['competitor.com'], companyType: ['Self Employed']}
}
},
tableId: '482910',
options: {includePartialProfiles: true, excludeDnc: false, maxContactsPerCompany: 2}
})
};
fetch('https://api.lusha.com/v3/contacts/prospecting', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://api.lusha.com/v3/contacts/prospecting")
.header("api_key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"pagination\": {\n \"page\": 0,\n \"size\": 100\n },\n \"filters\": {\n \"contacts\": {\n \"include\": {\n \"departments\": [\n \"Sales\"\n ],\n \"locations\": [\n {\n \"country\": \"United States\"\n }\n ],\n \"existingDataPoints\": [\n \"work_email\"\n ]\n }\n },\n \"companies\": {\n \"include\": {\n \"locations\": [\n {\n \"country\": \"United States\"\n }\n ],\n \"foundedYear\": [\n {\n \"min\": 2000\n }\n ],\n \"businessModel\": [\n \"B2B\"\n ],\n \"companyType\": [\n \"Public Company\"\n ],\n \"linkedinUrls\": [\n \"https://www.linkedin.com/company/google\"\n ],\n \"keywords\": [\n \"fintech\"\n ]\n },\n \"exclude\": {\n \"domains\": [\n \"competitor.com\"\n ],\n \"companyType\": [\n \"Self Employed\"\n ]\n }\n }\n },\n \"tableId\": \"482910\",\n \"options\": {\n \"includePartialProfiles\": true,\n \"excludeDnc\": false,\n \"maxContactsPerCompany\": 2\n }\n}")
.asString();package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.lusha.com/v3/contacts/prospecting"
payload := strings.NewReader("{\n \"pagination\": {\n \"page\": 0,\n \"size\": 100\n },\n \"filters\": {\n \"contacts\": {\n \"include\": {\n \"departments\": [\n \"Sales\"\n ],\n \"locations\": [\n {\n \"country\": \"United States\"\n }\n ],\n \"existingDataPoints\": [\n \"work_email\"\n ]\n }\n },\n \"companies\": {\n \"include\": {\n \"locations\": [\n {\n \"country\": \"United States\"\n }\n ],\n \"foundedYear\": [\n {\n \"min\": 2000\n }\n ],\n \"businessModel\": [\n \"B2B\"\n ],\n \"companyType\": [\n \"Public Company\"\n ],\n \"linkedinUrls\": [\n \"https://www.linkedin.com/company/google\"\n ],\n \"keywords\": [\n \"fintech\"\n ]\n },\n \"exclude\": {\n \"domains\": [\n \"competitor.com\"\n ],\n \"companyType\": [\n \"Self Employed\"\n ]\n }\n }\n },\n \"tableId\": \"482910\",\n \"options\": {\n \"includePartialProfiles\": true,\n \"excludeDnc\": false,\n \"maxContactsPerCompany\": 2\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("api_key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"requestId": "fa828378-7a8e-4e5d-9f72-0270e7f7ab51",
"pagination": {
"page": 0,
"size": 50,
"total": 670550,
"totalGuaranteed": true,
"totalDescription": "Exact contact count (up to 2 per company)"
},
"results": [
{
"id": "670138733",
"firstName": "Ting",
"lastName": "Tsou"
}
],
"tableWrite": {
"tableId": "482910",
"added": 48,
"alreadyPresent": 2,
"columnsCreated": [],
"rowsProcessed": 50,
"rowsCharged": 48,
"rowsAlreadyPaidInTable": 2
},
"billing": {
"creditsCharged": 2,
"resultsReturned": 50
}
}