curl --request POST \
--url https://api.lemlist.com/api/database/people \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"filters": [
{
"filterId": "country",
"in": [
"France"
],
"out": [
"India"
]
}
],
"page": 1,
"size": 25
}
'import requests
url = "https://api.lemlist.com/api/database/people"
payload = {
"filters": [
{
"filterId": "country",
"in": ["France"],
"out": ["India"]
}
],
"page": 1,
"size": 25
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
filters: [{filterId: 'country', in: ['France'], out: ['India']}],
page: 1,
size: 25
})
};
fetch('https://api.lemlist.com/api/database/people', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));require 'uri'
require 'net/http'
url = URI("https://api.lemlist.com/api/database/people")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filters\": [\n {\n \"filterId\": \"country\",\n \"in\": [\n \"France\"\n ],\n \"out\": [\n \"India\"\n ]\n }\n ],\n \"page\": 1,\n \"size\": 25\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lemlist.com/api/database/people",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filters' => [
[
'filterId' => 'country',
'in' => [
'France'
],
'out' => [
'India'
]
]
],
'page' => 1,
'size' => 25
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"results": [
{
"lead_id": 434482354,
"canonical_shorthand_name": "alexdoe",
"connections_count": 500,
"country": "France",
"full_name": "Alex Doe",
"education": [],
"experience_count": 3,
"experiences": [
{
"company_shorthand_name": "lemlist",
"company_id": 11750398,
"company_name": "lemlist",
"company_website_url": "https://www.lemlist.com",
"company_linkedin_url": "https://www.linkedin.com/company/lemlist",
"company_employee_count": 151,
"company_size": "51-200",
"company_domain": "lemlist.com",
"company_industry": "Technology, Information and Media",
"title": "Account Executive",
"title_normalized": "Account Executive",
"date_from": "September 2025",
"duration": "1 month",
"location": "Ville de Paris, Île-de-France, France",
"current_exp_bucket": "Less than 6 months"
}
],
"interests": [],
"languages": [
{
"language": "Français",
"proficiency": "Native or bilingual proficiency"
},
{
"language": "Anglais",
"proficiency": "Professional working proficiency"
}
],
"lead_linkedin_url": "https://www.linkedin.com/in/alex-doe",
"linkedin_short": "alex-doe",
"skills": [],
"summary": "Passionate about helping sales teams book more meetings @lemlist",
"headline": "Helping RevOps scale outbound @lemlist",
"lead_quality_score": 3,
"department": "Sales",
"connections_count_bucket": "500+",
"years_of_exp_bucket": "2 to 5 years",
"location": "Paris, Ile-de-France, France",
"state": "Ile-de-France",
"current_exp_company_name": "lemlist",
"_score": 21.294434,
"_id": "434482354"
}
],
"total": 91,
"took": 24,
"page": 1,
"size": 1,
"search": "lsh_Lra0u9F7WXn3XKzB9",
"limitation": 1999,
"team": "tea_8QvkOiBfPdb2ZRhHi"
}"Bad team""The authentication you supplied is incorrect"Search people database
Searches the people database using filters, keywords, and pagination.
curl --request POST \
--url https://api.lemlist.com/api/database/people \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--data '
{
"filters": [
{
"filterId": "country",
"in": [
"France"
],
"out": [
"India"
]
}
],
"page": 1,
"size": 25
}
'import requests
url = "https://api.lemlist.com/api/database/people"
payload = {
"filters": [
{
"filterId": "country",
"in": ["France"],
"out": ["India"]
}
],
"page": 1,
"size": 25
}
headers = {
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Basic <encoded-value>', 'Content-Type': 'application/json'},
body: JSON.stringify({
filters: [{filterId: 'country', in: ['France'], out: ['India']}],
page: 1,
size: 25
})
};
fetch('https://api.lemlist.com/api/database/people', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));require 'uri'
require 'net/http'
url = URI("https://api.lemlist.com/api/database/people")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"filters\": [\n {\n \"filterId\": \"country\",\n \"in\": [\n \"France\"\n ],\n \"out\": [\n \"India\"\n ]\n }\n ],\n \"page\": 1,\n \"size\": 25\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.lemlist.com/api/database/people",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'filters' => [
[
'filterId' => 'country',
'in' => [
'France'
],
'out' => [
'India'
]
]
],
'page' => 1,
'size' => 25
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}{
"results": [
{
"lead_id": 434482354,
"canonical_shorthand_name": "alexdoe",
"connections_count": 500,
"country": "France",
"full_name": "Alex Doe",
"education": [],
"experience_count": 3,
"experiences": [
{
"company_shorthand_name": "lemlist",
"company_id": 11750398,
"company_name": "lemlist",
"company_website_url": "https://www.lemlist.com",
"company_linkedin_url": "https://www.linkedin.com/company/lemlist",
"company_employee_count": 151,
"company_size": "51-200",
"company_domain": "lemlist.com",
"company_industry": "Technology, Information and Media",
"title": "Account Executive",
"title_normalized": "Account Executive",
"date_from": "September 2025",
"duration": "1 month",
"location": "Ville de Paris, Île-de-France, France",
"current_exp_bucket": "Less than 6 months"
}
],
"interests": [],
"languages": [
{
"language": "Français",
"proficiency": "Native or bilingual proficiency"
},
{
"language": "Anglais",
"proficiency": "Professional working proficiency"
}
],
"lead_linkedin_url": "https://www.linkedin.com/in/alex-doe",
"linkedin_short": "alex-doe",
"skills": [],
"summary": "Passionate about helping sales teams book more meetings @lemlist",
"headline": "Helping RevOps scale outbound @lemlist",
"lead_quality_score": 3,
"department": "Sales",
"connections_count_bucket": "500+",
"years_of_exp_bucket": "2 to 5 years",
"location": "Paris, Ile-de-France, France",
"state": "Ile-de-France",
"current_exp_company_name": "lemlist",
"_score": 21.294434,
"_id": "434482354"
}
],
"total": 91,
"took": 24,
"page": 1,
"size": 1,
"search": "lsh_Lra0u9F7WXn3XKzB9",
"limitation": 1999,
"team": "tea_8QvkOiBfPdb2ZRhHi"
}"Bad team""The authentication you supplied is incorrect"Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Body
Search criteria. Provide one or more filters and optionally control pagination with page/size
Array of filters (required)
Show child attributes
Show child attributes
Page (optional)
x >= 1Size of the results, number between 1 and 100 (optional)
1 <= x <= 100Array of properties to exclude from the results (optional)
Free-text query across common people fields (e.g., name, title, company, location)
Response
Success
Results array
Show child attributes
Show child attributes
Total number of results
Duration of the elastic-search query in milliseconds
Current page number
Size of the results (asked through parameters)
Unique identifier of the current search
Remaining calls for the POST People database and POST Companies database (search is limited to a number of queries every 24 hours)
Unique identifier of the current team
Was this page helpful?