curl --request POST \
--url https://app.tryspecter.com/api/v1/people/by-id/bulk \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
[
{
"linkedin_url": "https://www.linkedin.com/in/janedoe"
},
{
"linkedin_num_id": 123456789
}
]
'import requests
url = "https://app.tryspecter.com/api/v1/people/by-id/bulk"
payload = [{ "linkedin_url": "https://www.linkedin.com/in/janedoe" }, { "linkedin_num_id": 123456789 }]
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([
{linkedin_url: 'https://www.linkedin.com/in/janedoe'},
{linkedin_num_id: 123456789}
])
};
fetch('https://app.tryspecter.com/api/v1/people/by-id/bulk', 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://app.tryspecter.com/api/v1/people/by-id/bulk",
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([
[
'linkedin_url' => 'https://www.linkedin.com/in/janedoe'
],
[
'linkedin_num_id' => 123456789
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.tryspecter.com/api/v1/people/by-id/bulk"
payload := strings.NewReader("[\n {\n \"linkedin_url\": \"https://www.linkedin.com/in/janedoe\"\n },\n {\n \"linkedin_num_id\": 123456789\n }\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))
}HttpResponse<String> response = Unirest.post("https://app.tryspecter.com/api/v1/people/by-id/bulk")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("[\n {\n \"linkedin_url\": \"https://www.linkedin.com/in/janedoe\"\n },\n {\n \"linkedin_num_id\": 123456789\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tryspecter.com/api/v1/people/by-id/bulk")
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 {\n \"linkedin_url\": \"https://www.linkedin.com/in/janedoe\"\n },\n {\n \"linkedin_num_id\": 123456789\n }\n]"
response = http.request(request)
puts response.read_body[
{
"person": {
"person_id": "per_7f8d9e2a1b3c4d5e6f7g8h9i0",
"talent_signal_ids": [
"02d32673-f1ab-40a1-93c5-a3a36a10d342"
],
"profile_picture_url": "https://peopledb-public.s3.eu-west-2.amazonaws.com/assets/profile-pictures/per_7f8d9e2a1b3c4d5e6f7g8h9i0.jpg",
"first_name": "Sarah",
"last_name": "Chen",
"full_name": "Sarah Chen",
"linkedin_url": "https://www.linkedin.com/in/sarahchen9776",
"twitter_url": "https://twitter.com/sarahchen9776",
"about": "AI/ML researcher and entrepreneur with a focus on computer vision applications. Previously led ML teams at Google and founded an AI startup.",
"tagline": "AI Researcher | Ex-Google | Founder of VisionAI (Acquired by NVIDIA)",
"location": "San Francisco, California, United States, North America",
"region": "North America",
"highlights": [
"prior_exit",
"prior_vc_backed_experience",
"prior_vc_backed_founder",
"serial_founder"
],
"level_of_seniority": "Executive Level",
"years_of_experience": 12,
"education_level": "Ph.D.",
"experience": [
{
"company_name": "Google AI",
"linkedin_url": "linkedin.com/company/google",
"industries": [
"Information Technology",
"Software",
"Artificial Intelligence",
"Internet Services"
],
"title": "Senior Research Scientist",
"departments": [
"Senior Leadership",
"Engineering"
],
"start_date": "2020-03-01",
"is_current": true,
"job_order": 3,
"company_id": "5e3a7f2b0aa7a3270a55f2a8",
"domain": "ai.google.com",
"description": "Lead research initiatives in computer vision and deep learning. Developed novel architectures for image recognition that improved accuracy by 15%. Mentor junior researchers and collaborate with product teams to integrate ML models into Google products.",
"company_size": "10001+",
"industry": [
"Financial Services",
"Financial Technology"
],
"tech_verticals": [
[
"Blockchain, Crypto & Web3",
"Crypto Exchanges and Trading Infrastructure"
]
],
"end_date": null,
"location": "Mountain View, California, United States, United States",
"founded_year": 1998
}
],
"past_position_title": "Founder & CEO",
"past_position_company_name": "VisionAI",
"past_position_company_website": "visionai.com",
"current_tenure": 3,
"average_tenure": 18,
"education": [
{
"name": "Stanford University",
"linkedin_url": "linkedin.com/school/stanford-university",
"field_of_study": "Computer Science",
"degree_title": "Ph.D.",
"description": "Dissertation focused on computer vision and deep learning algorithms. Published 15 papers in top-tier ML conferences including NIPS and ICML. Teaching assistant for Advanced Machine Learning course.",
"start_date": "2008-01-01",
"end_date": "2013-01-01",
"location": "Stanford, California, United States, United States"
}
],
"languages": [
{
"name": "English",
"proficiency_level": "Native Or Bilingual Proficiency"
},
{
"name": "Mandarin Chinese",
"proficiency_level": "Limited Working Proficiency"
}
],
"skills": [
"Machine Learning",
"Computer Vision",
"Deep Learning",
"Python",
"TensorFlow",
"PyTorch"
],
"linkedin_followers": 8756,
"linkedin_connections": 3421,
"investor_signal_ids": [
"0340bac8-bcee-46a2-94bf-cf77e0c34253"
],
"linkedin_num_id": 9365023,
"linkedin_urn": "ACABCDEefghijklmnopqurfABCDefghijklnmop",
"github_url": "https://github.com/sarahchen9776",
"current_position_title": "Senior Research Scientist",
"current_position_company_name": "Google AI",
"current_position_company_website": "ai.google.com",
"last_updated": "2025-01-01 14:40:56"
},
"enrichment": {
"message": "Enrichment in progress",
"context": {}
}
}
]{
"errorCode": "API_KEY_MISSING",
"message": "No API Key was presented on the header X-API-KEY"
}{
"errorCode": "NOT_PERMITTED",
"message": "You do not have permission to access this resource."
}Bulk enrich people by ID
Resolve up to 50 people in one request — the bulk counterpart to Enrich people. Pass an array of 1–50 lookup objects, each identifying one person by LinkedIn URL, vanity ID, numeric ID, or URN.
found result. queued rows aren’t charged here — the eventual enrichment is billed by the async pipeline. Behaviour
- Provide exactly one identifier per lookup object.
- Results are returned in input order, so each row maps back to its lookup.
- Each row carries a
status:found(resolved, with thepersonpayload) orqueued(not found — an enrichment was started; poll later).
curl --request POST \
--url https://app.tryspecter.com/api/v1/people/by-id/bulk \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
[
{
"linkedin_url": "https://www.linkedin.com/in/janedoe"
},
{
"linkedin_num_id": 123456789
}
]
'import requests
url = "https://app.tryspecter.com/api/v1/people/by-id/bulk"
payload = [{ "linkedin_url": "https://www.linkedin.com/in/janedoe" }, { "linkedin_num_id": 123456789 }]
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([
{linkedin_url: 'https://www.linkedin.com/in/janedoe'},
{linkedin_num_id: 123456789}
])
};
fetch('https://app.tryspecter.com/api/v1/people/by-id/bulk', 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://app.tryspecter.com/api/v1/people/by-id/bulk",
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([
[
'linkedin_url' => 'https://www.linkedin.com/in/janedoe'
],
[
'linkedin_num_id' => 123456789
]
]),
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;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.tryspecter.com/api/v1/people/by-id/bulk"
payload := strings.NewReader("[\n {\n \"linkedin_url\": \"https://www.linkedin.com/in/janedoe\"\n },\n {\n \"linkedin_num_id\": 123456789\n }\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))
}HttpResponse<String> response = Unirest.post("https://app.tryspecter.com/api/v1/people/by-id/bulk")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("[\n {\n \"linkedin_url\": \"https://www.linkedin.com/in/janedoe\"\n },\n {\n \"linkedin_num_id\": 123456789\n }\n]")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.tryspecter.com/api/v1/people/by-id/bulk")
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 {\n \"linkedin_url\": \"https://www.linkedin.com/in/janedoe\"\n },\n {\n \"linkedin_num_id\": 123456789\n }\n]"
response = http.request(request)
puts response.read_body[
{
"person": {
"person_id": "per_7f8d9e2a1b3c4d5e6f7g8h9i0",
"talent_signal_ids": [
"02d32673-f1ab-40a1-93c5-a3a36a10d342"
],
"profile_picture_url": "https://peopledb-public.s3.eu-west-2.amazonaws.com/assets/profile-pictures/per_7f8d9e2a1b3c4d5e6f7g8h9i0.jpg",
"first_name": "Sarah",
"last_name": "Chen",
"full_name": "Sarah Chen",
"linkedin_url": "https://www.linkedin.com/in/sarahchen9776",
"twitter_url": "https://twitter.com/sarahchen9776",
"about": "AI/ML researcher and entrepreneur with a focus on computer vision applications. Previously led ML teams at Google and founded an AI startup.",
"tagline": "AI Researcher | Ex-Google | Founder of VisionAI (Acquired by NVIDIA)",
"location": "San Francisco, California, United States, North America",
"region": "North America",
"highlights": [
"prior_exit",
"prior_vc_backed_experience",
"prior_vc_backed_founder",
"serial_founder"
],
"level_of_seniority": "Executive Level",
"years_of_experience": 12,
"education_level": "Ph.D.",
"experience": [
{
"company_name": "Google AI",
"linkedin_url": "linkedin.com/company/google",
"industries": [
"Information Technology",
"Software",
"Artificial Intelligence",
"Internet Services"
],
"title": "Senior Research Scientist",
"departments": [
"Senior Leadership",
"Engineering"
],
"start_date": "2020-03-01",
"is_current": true,
"job_order": 3,
"company_id": "5e3a7f2b0aa7a3270a55f2a8",
"domain": "ai.google.com",
"description": "Lead research initiatives in computer vision and deep learning. Developed novel architectures for image recognition that improved accuracy by 15%. Mentor junior researchers and collaborate with product teams to integrate ML models into Google products.",
"company_size": "10001+",
"industry": [
"Financial Services",
"Financial Technology"
],
"tech_verticals": [
[
"Blockchain, Crypto & Web3",
"Crypto Exchanges and Trading Infrastructure"
]
],
"end_date": null,
"location": "Mountain View, California, United States, United States",
"founded_year": 1998
}
],
"past_position_title": "Founder & CEO",
"past_position_company_name": "VisionAI",
"past_position_company_website": "visionai.com",
"current_tenure": 3,
"average_tenure": 18,
"education": [
{
"name": "Stanford University",
"linkedin_url": "linkedin.com/school/stanford-university",
"field_of_study": "Computer Science",
"degree_title": "Ph.D.",
"description": "Dissertation focused on computer vision and deep learning algorithms. Published 15 papers in top-tier ML conferences including NIPS and ICML. Teaching assistant for Advanced Machine Learning course.",
"start_date": "2008-01-01",
"end_date": "2013-01-01",
"location": "Stanford, California, United States, United States"
}
],
"languages": [
{
"name": "English",
"proficiency_level": "Native Or Bilingual Proficiency"
},
{
"name": "Mandarin Chinese",
"proficiency_level": "Limited Working Proficiency"
}
],
"skills": [
"Machine Learning",
"Computer Vision",
"Deep Learning",
"Python",
"TensorFlow",
"PyTorch"
],
"linkedin_followers": 8756,
"linkedin_connections": 3421,
"investor_signal_ids": [
"0340bac8-bcee-46a2-94bf-cf77e0c34253"
],
"linkedin_num_id": 9365023,
"linkedin_urn": "ACABCDEefghijklmnopqurfABCDefghijklnmop",
"github_url": "https://github.com/sarahchen9776",
"current_position_title": "Senior Research Scientist",
"current_position_company_name": "Google AI",
"current_position_company_website": "ai.google.com",
"last_updated": "2025-01-01 14:40:56"
},
"enrichment": {
"message": "Enrichment in progress",
"context": {}
}
}
]{
"errorCode": "API_KEY_MISSING",
"message": "No API Key was presented on the header X-API-KEY"
}{
"errorCode": "NOT_PERMITTED",
"message": "You do not have permission to access this resource."
}Authorizations
Body
1 - 50 elementsThe person's LinkedIn profile URL. Accepts http/https, with or without www.
"https://www.linkedin.com/in/janedoe"
The person's LinkedIn vanity ID — the slug at the end of their profile URL (e.g. john-doe-123abc in linkedin.com/in/john-doe-123abc).
"janedoe"
The person's LinkedIn numeric member ID.
123456789
The person's LinkedIn URN — a stable, non-changing reference found in many datasets.
"ACoAAAxxxxxxxx"
Response
One row per lookup, in input order. found rows carry the resolved person; queued rows carry the enrichment request context.
found when resolved, queued when an async enrichment was started for an unknown person.
found, queued The resolved person. Present when status is found.
Show child attributes
Show child attributes
Enrichment request context. Present when status is queued.
Show child attributes
Show child attributes
Was this page helpful?