Search and enrich
Discover and enrich profiles and companies from Sales Navigator search URLs.
https://api.up2data.ai/api/open-refresh/searchDiscover and enrich profiles and companies directly from one or more Sales Navigator search URLs, without needing to know the LinkedIn URLs upfront - the same enriched Profile and Company data you get from Open Refresh.
Lead/people search links (/sales/search/people) support up to 2,500 results per link; company/account search links (/sales/search/company) support up to 1,000. If a link's limit is omitted, the maximum for that URL type is used.
A single request can mix people and company search links:
{
"name": "Mixed Search",
"salesNavigatorLinks": [
{"url": "https://www.linkedin.com/sales/search/people?query=...", "limit": 1000},
{"url": "https://www.linkedin.com/sales/search/company?query=...", "limit": 500}
],
"priority": 2
}Credits are reserved upfront per link and refunded automatically once processing completes - see the Credits guide for the full calculation and the search rate.
Credits are reserved at the time of the request. Make sure you have sufficient balance before submitting. Refunds for unused credits happen automatically once processing completes.
Set withFollowersAndConnections to also collect connectionsCount and followersCount for every profile the search discovers. This applies to lead searches only - on company search links the flag is ignored and the base rate applies. The credits are charged when you enqueue, against the link's limit rather than the delivered results. Without the flag, neither field is guaranteed - treat both as absent.
#Request
| Field | Type | Notes |
|---|---|---|
namerequired | string | Name for the enrichment job. |
salesNavigatorLinksrequired | object[] | Sales Navigator search URLs. |
salesNavigatorLinks[].urlrequired | string | A Sales Navigator search URL. |
salesNavigatorLinks[].limit | number | Optional. Defaults to the per-URL-type maximum (2,500 for people links, 1,000 for company links) when omitted. |
priorityrequired | number | 1 = High, 2 = Normal, 3 = Low. |
withFollowersAndConnections | boolean | Optional, defaults to false. Lead searches only. |
webhookTags | string[] | Optional, defaults to every webhook on the team. Send [] to switch callbacks off - see the Webhooks guide. |
#Call it
curl -X POST "https://api.up2data.ai/api/open-refresh/search" \
-H "Authorization: YOUR_ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Sales Nav Search",
"salesNavigatorLinks": [
{
"url": "https://www.linkedin.com/sales/search/people?query=...",
"limit": 500
}
],
"priority": 2,
"withFollowersAndConnections": true
}'import requests
url = "https://api.up2data.ai/api/open-refresh/search"
headers = {
"Authorization": "YOUR_ACCESS_TOKEN",
"Content-Type": "application/json",
}
payload = {
"name": "Sales Nav Search",
"salesNavigatorLinks": [
{
"url": "https://www.linkedin.com/sales/search/people?query=...",
"limit": 500
}
],
"priority": 2,
"withFollowersAndConnections": True
}
response = requests.post(url, headers=headers, json=payload)
print(response.json())const url = "https://api.up2data.ai/api/open-refresh/search";
const headers = {
"Authorization": "YOUR_ACCESS_TOKEN",
"Content-Type": "application/json",
};
const body = {
"name": "Sales Nav Search",
"salesNavigatorLinks": [
{
"url": "https://www.linkedin.com/sales/search/people?query=...",
"limit": 500
}
],
"priority": 2,
"withFollowersAndConnections": true
};
const response = await fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
});
const data = await response.json();
console.log(data);package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
url := "https://api.up2data.ai/api/open-refresh/search"
body := bytes.NewBufferString(`{
"name": "Sales Nav Search",
"salesNavigatorLinks": [
{
"url": "https://www.linkedin.com/sales/search/people?query=...",
"limit": 500
}
],
"priority": 2,
"withFollowersAndConnections": true
}`)
req, err := http.NewRequest("POST", url, body)
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "YOUR_ACCESS_TOKEN")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
respBody, _ := io.ReadAll(resp.Body)
fmt.Println(string(respBody))
}#Response
{
"message": "Sales Navigator Enrichment successfully requested",
"queueIds": ["507f1f77bcf86cd799439011"],
"webhooks": [
{
"_id": "6512c1a4f1b2c3d4e5f60789",
"name": "Production",
"url": "https://api.example.com/hooks/up2data"
}
]
}#Webhook payload
{
"queueId": "507f1f77bcf86cd799439011",
"name": "Sales Nav Search",
"url": "https://www.linkedin.com/in/janedoe",
"type": "Profile",
"status": 200,
"_id": "8f14e45fceea167a5a36dedd4bea254b",
"totalResults": 1840,
"result": { ... }
}#Errors
| Status | Type | When |
|---|---|---|
| 400 | No webhook matches webhookTags | One or more webhookTags do not match any webhook on the team. |
See the Errors guide for every error type this version can return.