curl --request GET \
--url https://openapi.enginy.ai/v1/social-selling/engagers \
--header 'x-api-key: <api-key>'import requests
url = "https://openapi.enginy.ai/v1/social-selling/engagers"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://openapi.enginy.ai/v1/social-selling/engagers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://openapi.enginy.ai/v1/social-selling/engagers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://openapi.enginy.ai/v1/social-selling/engagers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://openapi.enginy.ai/v1/social-selling/engagers")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/social-selling/engagers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"prospectId": 123,
"contactId": 123,
"companyId": 123,
"fullName": "<string>",
"headline": "<string>",
"company": "<string>",
"linkedinProfileUrl": "<string>",
"contactStatus": "NEW",
"engagementScore": 123,
"reactionsInRange": 123,
"commentsInRange": 123,
"interactionsInRange": 123,
"identitiesInRange": 123,
"totalInteractions": 123,
"firstInteractionAt": "<string>",
"lastInteractionAt": "<string>",
"contactAppUrl": "<string>"
}
],
"meta": {
"page": 123,
"pageSize": 123,
"total": 123
}
}List Social Selling engagers
List the people (engagers) who reacted to or commented on LinkedIn posts the caller’s Social Selling identities published in a date range — the Prospects page of Social Selling. Each row has the engager’s profile, whether they are already an Enginy contact (contactStatus: NEW, IN_CRM, CONTACTED; contactId), their interactions on the range’s posts and their lifetime engagement score. The rows and the in-range counts cover the caller’s identities only. engagementScore and totalInteractions count every identity of the workspace, including identities the caller cannot see, as on the Prospects page. firstInteractionAt/lastInteractionAt are when an Enginy sync first/last detected the person on any tracked post of the workspace, not when they engaged. Filter by contact status, interaction kind, company or minimum (workspace-wide) score; sort and page server-side. Blocklisted people and the workspace’s own identities never appear. prospectId is what the engager export tools take. Defaults to posts of the last 90 days. Read-only.
Responses include direct Enginy app URLs when available. Engagers already in the CRM include a contactAppUrl that opens the contact in Enginy. MCP agents should return those URLs to users whenever they are present in the response.
Required scope:
SOCIAL_SELLING_READRate limit: 100 requests per minute
curl --request GET \
--url https://openapi.enginy.ai/v1/social-selling/engagers \
--header 'x-api-key: <api-key>'import requests
url = "https://openapi.enginy.ai/v1/social-selling/engagers"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://openapi.enginy.ai/v1/social-selling/engagers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://openapi.enginy.ai/v1/social-selling/engagers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://openapi.enginy.ai/v1/social-selling/engagers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://openapi.enginy.ai/v1/social-selling/engagers")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://openapi.enginy.ai/v1/social-selling/engagers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"prospectId": 123,
"contactId": 123,
"companyId": 123,
"fullName": "<string>",
"headline": "<string>",
"company": "<string>",
"linkedinProfileUrl": "<string>",
"contactStatus": "NEW",
"engagementScore": 123,
"reactionsInRange": 123,
"commentsInRange": 123,
"interactionsInRange": 123,
"identitiesInRange": 123,
"totalInteractions": 123,
"firstInteractionAt": "<string>",
"lastInteractionAt": "<string>",
"contactAppUrl": "<string>"
}
],
"meta": {
"page": 123,
"pageSize": 123,
"total": 123
}
}Authorizations
Query Parameters
First publication day (UTC) of the posts engaged with. Defaults to 89 days before dateTo.
^\d{4}-\d{2}-\d{2}$"2026-09-01"
Last publication day (UTC, inclusive). Defaults to today. At most 366 days in total.
^\d{4}-\d{2}-\d{2}$"2026-09-01"
List of identity ids whose posts count (REST also accepts a comma-separated value). Defaults to every identity the caller may see; ids outside that scope are ignored.
1"12,34"
List of contact statuses to keep (REST also accepts a comma-separated value): NEW (not in Enginy), IN_CRM (an Enginy contact not contacted yet), CONTACTED.
1NEW, IN_CRM, CONTACTED "NEW,IN_CRM"
reacted / commented: only engagers with a reaction / comment on those posts.
all, reacted, commented Case-insensitive part of the engager’s current company name.
1 - 200Keep engagers whose lifetime engagementScore is at least this. That score counts every identity of the workspace, including identities the caller cannot see.
x >= 0Highest first. engagementScore is the workspace-wide lifetime score; interactions/reactions/comments count the range’s posts of the caller’s identities only.
engagementScore, interactions, reactions, comments x >= 11 <= x <= 100