Reverse email lookup
Start from a professional email address and find the profile of the person behind it. Costs 10 credits per profile found.
The bulk endpoint takes up to 50 emails per call. See the rate limits.
Look up one email
https://app.icypeas.com/api/reverse-email-lookupAuthorizationstringrequiredYour API key, as is (no
Bearerprefix).Content-TypestringrequiredAlways
application/json.
emailstringrequiredA professional email address
- cURL
- JavaScript
- Python
- PHP
- PowerShell
- JSON body
curl -X POST "https://app.icypeas.com/api/reverse-email-lookup" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-d '{
"email": "pierre.landoin@icypeas.com"
}'
const response = await fetch("https://app.icypeas.com/api/reverse-email-lookup", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "YOUR_API_KEY",
},
body: JSON.stringify({
"email": "pierre.landoin@icypeas.com"
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
"https://app.icypeas.com/api/reverse-email-lookup",
headers={"Authorization": "YOUR_API_KEY"},
json={
"email": "pierre.landoin@icypeas.com",
},
)
print(response.json())
<?php
$body = <<<'JSON'
{
"email": "pierre.landoin@icypeas.com"
}
JSON;
$ch = curl_init("https://app.icypeas.com/api/reverse-email-lookup");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $body,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Authorization: YOUR_API_KEY",
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
$headers = @{
"Authorization" = "YOUR_API_KEY"
"Content-Type" = "application/json"
}
$body = @'
{
"email": "pierre.landoin@icypeas.com"
}
'@
$response = Invoke-RestMethod -Method POST -Uri "https://app.icypeas.com/api/reverse-email-lookup" -Headers $headers -Body $body
$response | ConvertTo-Json -Depth 10
Paste this in the Body field of Make, Zapier, n8n or Postman.
{
"email": "pierre.landoin@icypeas.com"
}
200SuccessResponse when your input is compliant and a profile URL has been found
{
"success": true,
"results": "https://www.linkedin.com/in/pierre-baptiste-landoin-icypeas",
"searchId": "RUiDo5sBptEgZPBRAC7O",
"status": "FOUND"
}
successbooleantrue means that your search succeeded (no error was raised on our side)
searchIdstringThe id of the search item (if you need to fetch the result later using the dedicated route)
statusstringFOUND because the profile URL was found
resultstringThe profile URL
200SuccessResponse when your input is compliant but the profile URL cannot be found
{
"success": true,
"results": "",
"searchId": "RUiDo5sBptEgZPBRAC8O",
"status": "NOT_FOUND"
}
successbooleantrue means that your search succeeded (no error was raised on our side)
searchIdstringThe id of the search item (if you need to fetch the result later using the dedicated route)
statusstringNOT_FOUND because nothing was found
resultstringAn empty string, because nothing was found
200Validation errorResponse when there are validation errors
The request reached Icypeas but some fields are wrong. The response lists every problem in validationErrors. See how to read and fix errors.
{
"validationErrors": [
{
"expected": "email",
"type": "required",
"field": "email",
"message": "validation_required"
}
],
"success": false
}
| Type | Fields | When it happens |
|---|---|---|
requiredvalidation_required | email | Error sent when the field is missing |
stringEmptyvalidation_string_empty | email | Error sent when the field is empty |
emailvalidation_email | email | Error sent when the field is not an email address |
UnpaidSubscriptionErrorunpaid_subscription_error | user | Error sent when you have a pending payment and your subscription is therefore not paid |
InsufficientCreditsinsufficient_credits | user | Error sent when you do not have enough credits to run the search |
401UnauthorizedResponse when we could not authenticate you.
{
"message": "Unauthorized access.",
"error": "UnauthorizedAccessError",
"status": 401,
"code": "unauthorized_access_error"
}
messagestringHuman-readable message.
errorstringError name
statusnumberHTTP error code
codestringError code
429Too many requestsError received when rate limit is exceeded
{
"message": "You have exceeded the max number of requests per minute.",
"error": "RateLimitExceededError",
"status": 429,
"code": "rate_limit_exceeded_error"
}
messagestringHuman-readable message.
errorstringError name
statusnumberHTTP error code
codestringError code
Look up to 50 emails
https://app.icypeas.com/api/reverse-email-lookupsAuthorizationstringrequiredYour API key, as is (no
Bearerprefix).Content-TypestringrequiredAlways
application/json.
dataarrayrequiredAn array of professional email addresses. Minimum of 2 addresses, maximum of 50 addresses
Rule: should be valid email addresses
- cURL
- JavaScript
- Python
- PHP
- PowerShell
- JSON body
curl -X POST "https://app.icypeas.com/api/reverse-email-lookups" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_API_KEY" \
-d '{
"data": [
"pierre.landoin@icypeas.com",
"magnus@icypeas.com"
]
}'
const response = await fetch("https://app.icypeas.com/api/reverse-email-lookups", {
method: "POST",
headers: {
"Content-Type": "application/json",
Authorization: "YOUR_API_KEY",
},
body: JSON.stringify({
"data": [
"pierre.landoin@icypeas.com",
"magnus@icypeas.com"
]
}),
});
const data = await response.json();
console.log(data);
import requests
response = requests.post(
"https://app.icypeas.com/api/reverse-email-lookups",
headers={"Authorization": "YOUR_API_KEY"},
json={
"data": ["pierre.landoin@icypeas.com", "magnus@icypeas.com"],
},
)
print(response.json())
<?php
$body = <<<'JSON'
{
"data": [
"pierre.landoin@icypeas.com",
"magnus@icypeas.com"
]
}
JSON;
$ch = curl_init("https://app.icypeas.com/api/reverse-email-lookups");
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => $body,
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Authorization: YOUR_API_KEY",
],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
print_r($response);
$headers = @{
"Authorization" = "YOUR_API_KEY"
"Content-Type" = "application/json"
}
$body = @'
{
"data": [
"pierre.landoin@icypeas.com",
"magnus@icypeas.com"
]
}
'@
$response = Invoke-RestMethod -Method POST -Uri "https://app.icypeas.com/api/reverse-email-lookups" -Headers $headers -Body $body
$response | ConvertTo-Json -Depth 10
Paste this in the Body field of Make, Zapier, n8n or Postman.
{
"data": [
"pierre.landoin@icypeas.com",
"magnus@icypeas.com"
]
}
200SuccessResponse when your input is compliant
{
"success": true,
"data": [
{
"searchId": "RUiDo5sBptEgZPBRAC7O",
"status": "FOUND",
"result": "https://www.linkedin.com/in/pierre-baptiste-landoin-icypeas"
},
{
"searchId": "RDiDo5sBptEgZPBRAC81",
"status": "NOT_FOUND",
"result": ""
}
]
}
successbooleantrue means that your search succeeded (no error was raised on our side)
dataarray of objectsShow item properties (3)
searchIdstringThe id of the search item (if you need to fetch the result later using the dedicated route)
statusstringFOUND if the profile URL was found. NOT_FOUND otherwise
resultstringThe profile URL (if FOUND). An empty string otherwise
200Validation errorResponse when there are validation errors
The request reached Icypeas but some fields are wrong. The response lists every problem in validationErrors. See how to read and fix errors.
{
"validationErrors": [
{
"expected": "email",
"type": "required",
"field": "email",
"message": "validation_required"
}
],
"success": false
}
| Type | Fields | When it happens |
|---|---|---|
arrayEmptyThe 'data' field must not be an empty array. | data | Error sent when the data array is empty |
arrayLengthThe 'data' field must contain 2 >= value <= 50 items. | data | Error sent when the data does not contain at least 2 emails and at most 50 emails |
EmailArrayemail_array | data | Error sent when the data array does not contain valid email addresses |
UnpaidSubscriptionErrorunpaid_subscription_error | | Error sent when you have a pending payment and your subscription is therefore not paid |
InsufficientCreditsinsufficient_credits | | Error sent when you do not have enough credits to run the search |
401UnauthorizedResponse when we could not authenticate you.
{
"message": "Unauthorized access.",
"error": "UnauthorizedAccessError",
"status": 401,
"code": "unauthorized_access_error"
}
messagestringHuman-readable message.
errorstringError name
statusnumberHTTP error code
codestringError code
429Too many requestsError received when rate limit is exceeded
{
"message": "You have exceeded the max number of requests per minute.",
"error": "RateLimitExceededError",
"status": 429,
"code": "rate_limit_exceeded_error"
}
messagestringHuman-readable message.
errorstringError name
statusnumberHTTP error code
codestringError code