Personal emails lookup
curl --request POST \
--url https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/ \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"person_id": 123,
"linkedin_public_identifier": "<string>"
}
'import requests
url = "https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/"
payload = {
"person_id": 123,
"linkedin_public_identifier": "<string>"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({person_id: 123, linkedin_public_identifier: '<string>'})
};
fetch('https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({person_id: 123, linkedin_public_identifier: '<string>'})
};
fetch('https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/"
payload := strings.NewReader("{\n \"person_id\": 123,\n \"linkedin_public_identifier\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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))
}require 'uri'
require 'net/http'
url = URI("https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"person_id\": 123,\n \"linkedin_public_identifier\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/",
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([
'person_id' => 123,
'linkedin_public_identifier' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"person_id\": 123,\n \"linkedin_public_identifier\": \"<string>\"\n}")
.asString();[
{
"email": "jsmith@example.com",
"email_type": "<string>",
"validation_status": "valid"
}
]{
"detail": "Authentication credentials were not provided."
}Personal email lookup API
Retrieve personal email addresses for a person identified by LinkedIn handle or Forager ID.
POST
https://api-v2.forager.ai
/
api
/
{account_id}
/
datastorage
/
person_contacts_lookup
/
personal_emails
/
Personal emails lookup
curl --request POST \
--url https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/ \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"person_id": 123,
"linkedin_public_identifier": "<string>"
}
'import requests
url = "https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/"
payload = {
"person_id": 123,
"linkedin_public_identifier": "<string>"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({person_id: 123, linkedin_public_identifier: '<string>'})
};
fetch('https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({person_id: 123, linkedin_public_identifier: '<string>'})
};
fetch('https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/"
payload := strings.NewReader("{\n \"person_id\": 123,\n \"linkedin_public_identifier\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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))
}require 'uri'
require 'net/http'
url = URI("https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"person_id\": 123,\n \"linkedin_public_identifier\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/",
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([
'person_id' => 123,
'linkedin_public_identifier' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}HttpResponse<String> response = Unirest.post("https://api-v2.forager.ai/api/{account_id}/datastorage/person_contacts_lookup/personal_emails/")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"person_id\": 123,\n \"linkedin_public_identifier\": \"<string>\"\n}")
.asString();[
{
"email": "jsmith@example.com",
"email_type": "<string>",
"validation_status": "valid"
}
]{
"detail": "Authentication credentials were not provided."
}When to use this endpoint
You have a known person and need a personal (consumer webmail) address rather than a work address, for example for recruiting outreach. Not charged when no address is returned.Example request
cURL
curl -X POST "https://api-v2.forager.ai/api/$FORAGER_ACCOUNT_ID/datastorage/person_contacts_lookup/personal_emails/" \
-H "X-API-KEY: $FORAGER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"person_id": 48213
}'
FORAGER_API_KEY and FORAGER_ACCOUNT_ID as in the quickstart.
Example response
200 (illustrative values)
[
{
"email": "jane.doe@example.com",
"email_type": "personal",
"validation_status": "valid"
}
]
Credits
A lookup costs 5 credits when at least one address is returned. A200 with an empty body is not charged. See API credits and pricing for how credits are charged and how to check what you spent.Authorizations
Path Parameters
Body
application/jsonapplication/x-www-form-urlencodedmultipart/form-data
Last modified on November 1, 2026