curl --request GET \
--url https://api.goextrovert.com/client/v2/prospects \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.goextrovert.com/client/v2/prospects"
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://api.goextrovert.com/client/v2/prospects', 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://api.goextrovert.com/client/v2/prospects",
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://api.goextrovert.com/client/v2/prospects"
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://api.goextrovert.com/client/v2/prospects")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goextrovert.com/client/v2/prospects")
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{
"status": "success",
"data": {
"users": [
{
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"updatedAt": "2025-06-30T14:02:07.456Z",
"createdAt": "2025-06-30T14:02:07.456Z",
"lastPostsFetchStatus": "<string>",
"isDeleted": true,
"isImportant": true,
"type": "<string>",
"linkedInProfile": {
"id": "<string>",
"updatedAt": "2025-06-30T14:02:07.456Z",
"createdAt": "2025-06-30T14:02:07.456Z",
"name": "<string>",
"headline": "<string>",
"linkedInUrl": "<string>",
"avatarUrl": "<string>"
},
"list": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>",
"description": "<string>"
},
"lastNewPostsObtainFinishDate": "2025-06-30T14:02:07.456Z",
"notes": "<string>",
"parentTargetUser": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"notes": "<string>",
"linkedInProfile": {
"id": "<string>",
"updatedAt": "2025-06-30T14:02:07.456Z",
"createdAt": "2025-06-30T14:02:07.456Z",
"name": "<string>",
"headline": "<string>",
"linkedInUrl": "<string>",
"avatarUrl": "<string>"
}
},
"statistics": {
"totalPostsCount": 123,
"answeredPostsCount": 123,
"pendingPostsAnswersCount": 123,
"postsLikesCount": 123,
"weeklyPostFrequency": 123,
"indirectPostsLikesCount": 123,
"indirectAnsweredPostsCount": 123,
"indirectPendingResponseCommentsCount": 123,
"lastNewSuccessPostsTotalCount": 123,
"totalIndirectPostActivitiesCount": 123,
"weeklyIndirectPostActivityFrequency": 123,
"totalAnsweredPostsCount": 123,
"oldestPostDate": "2025-06-30T14:02:07.456Z",
"newestPostDate": "2025-06-30T14:02:07.456Z",
"oldestPostAnswerDate": "2025-06-30T14:02:07.456Z",
"newestPostAnswerDate": "2025-06-30T14:02:07.456Z",
"lastNewSuccessPostsObtainFinishDate": "2025-06-30T14:02:07.456Z",
"indirectOldestResponseCommentDate": "2025-06-30T14:02:07.456Z",
"indirectNewestResponseCommentDate": "2025-06-30T14:02:07.456Z",
"newestPostReactionDate": "2025-06-30T14:02:07.456Z",
"totalOldestResponseCommentDate": "2025-06-30T14:02:07.456Z",
"totalNewestResponseCommentDate": "2025-06-30T14:02:07.456Z"
},
"campaign": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>",
"description": "<string>"
},
"sharedBy": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>",
"description": "<string>"
},
"user": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>",
"description": "<string>"
},
"userConnection": {
"id": "<string>",
"updatedAt": "2025-06-30T14:02:07.456Z",
"createdAt": "2025-06-30T14:02:07.456Z",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prospectLinkedInProfileId": "<string>",
"status": "<string>",
"wasConnectionRequestSuccessfulAttemptMade": true,
"connectionRequestWithdrawCount": 0,
"isConnectionRequestWithdrawQueued": true,
"connectedDate": "2025-06-30T14:02:07.456Z",
"connectionRequestSuccessfulAttemptMadeDate": "2025-06-30T14:02:07.456Z",
"latestDmHistoryMessageDate": "2025-06-30T14:02:07.456Z",
"connectionRequestWithdrawnAt": "2025-06-30T14:02:07.456Z"
}
}
],
"pagination": {
"limit": 4503599627370495,
"offset": 4503599627370495,
"total": 4503599627370495
}
},
"message": "Operation completed successfully"
}{
"status": "error",
"data": null,
"message": "An error occurred while processing the request"
}List Prospects
Returns visible prospects with their campaign/list bindings and optional pagination information. Use listId to scope to a single list, or pass broader filter arrays for campaign-wide prospect management. This endpoint returns existing prospects only — it does not add them. To add new LinkedIn profiles, add their URLs to a prospect list (create-list or add-users-to-list).
curl --request GET \
--url https://api.goextrovert.com/client/v2/prospects \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.goextrovert.com/client/v2/prospects"
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://api.goextrovert.com/client/v2/prospects', 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://api.goextrovert.com/client/v2/prospects",
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://api.goextrovert.com/client/v2/prospects"
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://api.goextrovert.com/client/v2/prospects")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goextrovert.com/client/v2/prospects")
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{
"status": "success",
"data": {
"users": [
{
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"updatedAt": "2025-06-30T14:02:07.456Z",
"createdAt": "2025-06-30T14:02:07.456Z",
"lastPostsFetchStatus": "<string>",
"isDeleted": true,
"isImportant": true,
"type": "<string>",
"linkedInProfile": {
"id": "<string>",
"updatedAt": "2025-06-30T14:02:07.456Z",
"createdAt": "2025-06-30T14:02:07.456Z",
"name": "<string>",
"headline": "<string>",
"linkedInUrl": "<string>",
"avatarUrl": "<string>"
},
"list": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>",
"description": "<string>"
},
"lastNewPostsObtainFinishDate": "2025-06-30T14:02:07.456Z",
"notes": "<string>",
"parentTargetUser": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"type": "<string>",
"notes": "<string>",
"linkedInProfile": {
"id": "<string>",
"updatedAt": "2025-06-30T14:02:07.456Z",
"createdAt": "2025-06-30T14:02:07.456Z",
"name": "<string>",
"headline": "<string>",
"linkedInUrl": "<string>",
"avatarUrl": "<string>"
}
},
"statistics": {
"totalPostsCount": 123,
"answeredPostsCount": 123,
"pendingPostsAnswersCount": 123,
"postsLikesCount": 123,
"weeklyPostFrequency": 123,
"indirectPostsLikesCount": 123,
"indirectAnsweredPostsCount": 123,
"indirectPendingResponseCommentsCount": 123,
"lastNewSuccessPostsTotalCount": 123,
"totalIndirectPostActivitiesCount": 123,
"weeklyIndirectPostActivityFrequency": 123,
"totalAnsweredPostsCount": 123,
"oldestPostDate": "2025-06-30T14:02:07.456Z",
"newestPostDate": "2025-06-30T14:02:07.456Z",
"oldestPostAnswerDate": "2025-06-30T14:02:07.456Z",
"newestPostAnswerDate": "2025-06-30T14:02:07.456Z",
"lastNewSuccessPostsObtainFinishDate": "2025-06-30T14:02:07.456Z",
"indirectOldestResponseCommentDate": "2025-06-30T14:02:07.456Z",
"indirectNewestResponseCommentDate": "2025-06-30T14:02:07.456Z",
"newestPostReactionDate": "2025-06-30T14:02:07.456Z",
"totalOldestResponseCommentDate": "2025-06-30T14:02:07.456Z",
"totalNewestResponseCommentDate": "2025-06-30T14:02:07.456Z"
},
"campaign": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>",
"description": "<string>"
},
"sharedBy": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>",
"description": "<string>"
},
"user": {
"id": "8d256aa6-9b12-49a7-93ee-bf41634b5b60",
"name": "<string>",
"description": "<string>"
},
"userConnection": {
"id": "<string>",
"updatedAt": "2025-06-30T14:02:07.456Z",
"createdAt": "2025-06-30T14:02:07.456Z",
"userId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prospectLinkedInProfileId": "<string>",
"status": "<string>",
"wasConnectionRequestSuccessfulAttemptMade": true,
"connectionRequestWithdrawCount": 0,
"isConnectionRequestWithdrawQueued": true,
"connectedDate": "2025-06-30T14:02:07.456Z",
"connectionRequestSuccessfulAttemptMadeDate": "2025-06-30T14:02:07.456Z",
"latestDmHistoryMessageDate": "2025-06-30T14:02:07.456Z",
"connectionRequestWithdrawnAt": "2025-06-30T14:02:07.456Z"
}
}
],
"pagination": {
"limit": 4503599627370495,
"offset": 4503599627370495,
"total": 4503599627370495
}
},
"message": "Operation completed successfully"
}{
"status": "error",
"data": null,
"message": "An error occurred while processing the request"
}Authorizations
API Key for authentication
Query Parameters
Optional single-list shortcut. When present, it replaces listsIds with [listId]; it does not override campaignsIds, search, importance, frequency, or touch-point filters.
Campaign IDs to filter within the accessible Prospects scope. Omit or pass [] for no campaign restriction; non-empty campaign and list filters intersect with the other active filters.
1000Optional filter to only show important or non-important prospects.
Filter the stored direct-post weekly frequency estimate: MORE_THAN_TWICE_PER_WEEK >2; ONE_TO_TWO_TIMES_PER_WEEK 1–2 inclusive; ONE_TO_THREE_TIMES_PER_MONTH 0.25–0.99 inclusive; LESS_THAN_ONCE_PER_MONTH <0.25. This is based on fetched activity, not a live or calendar-month LinkedIn count.
MORE_THAN_TWICE_PER_WEEK, ONE_TO_TWO_TIMES_PER_WEEK, ONE_TO_THREE_TIMES_PER_MONTH, LESS_THAN_ONCE_PER_MONTH List IDs to filter by; omit or pass [] for no list restriction. If listId is supplied, it replaces this array with [listId], rather than intersecting with it. Other active filters still apply.
1000Sort field: prospectName = stored LinkedIn full name; campaignName = campaign name; postFrequency = direct weekly post frequency; totalComments = published direct comments only; lastComment = stored direct comment timestamp (may include POSTING); lastPostCheck = last successful post-fetch finish. Omit for name ascending.
prospectName, campaignName, postFrequency, totalComments, lastComment, lastPostCheck ASC sorts the chosen field ascending; DESC sorts it descending. If omitted, lastComment and lastPostCheck default to DESC and other explicit fields to ASC. If sortBy is omitted, the backend uses name ASC even if sortOrder is supplied.
ASC, DESC Case-insensitive stored LinkedIn full-name search after whitespace normalization; % and _ remain SQL LIKE wildcards. Does not search headline, company or profile URL. An empty normalized term adds no search restriction. A non-empty term currently replaces the default successful-enrichment predicate.
OR-filter on published or already POSTING direct-plus-indirect comments, not likes, DMs or connection requests. Omitting it or passing [] disables this filter. COMMENTED_1_TIME through COMMENTED_5_TIMES mean exactly 1 through 5; COMMENTED_6_AND_MORE_TIMES means 6 or more.
Comment touch-point bucket: COMMENTED_1_TIME through COMMENTED_5_TIMES = exactly 1 through 5 published or POSTING direct-plus-indirect comments; COMMENTED_6_AND_MORE_TIMES = at least 6.
NOT_COMMENTED, COMMENTED_1_TIME, COMMENTED_2_TIMES, COMMENTED_3_TIMES, COMMENTED_4_TIMES, COMMENTED_5_TIMES, COMMENTED_6_AND_MORE_TIMES Optional positive integer page size, at most 1000; omitted uses the backend default of 5. This is pagination, not a total-results cap. Pass it explicitly and use the returned pagination to read further pages.
x <= 1000Optional zero-based offset in the same filtered result; omitted starts at 0. Keep the same filters and ordering when advancing pages. The public maximum is 2147483647.
0 <= x <= 2147483647