Company Research

Company Research

This guide walks through building a comprehensive picture of a target company using Voyager’s company, employee, and content endpoints.

Step 1: Find the Company

Search for the company to get its universal name (used in all subsequent calls):

curl -s "$BASE/api/search/companies?keywords=Notion" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER"

Note the universalName from the results (e.g., "notionhq").

The universalName is the string after /company/ in a LinkedIn company URL. For example, https://www.linkedin.com/company/notionhq has universal name notionhq.

Step 2: Get Company Profile

Company profile fetches are async jobs:

# Start the job
RESP=$(curl -s "$BASE/api/companies/notionhq" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER")
JOB_ID=$(echo "$RESP" | jq -r '.data.jobId')
# Poll for result
curl -s "$BASE/api/jobs/$JOB_ID" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER"

The result includes company name, industry, employee count, description, headquarters, and more.

Step 3: Get Company Posts

See what the company has been posting recently:

curl -s "$BASE/api/company/notionhq/posts?count=10" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER"

Step 4: Get Company Updates Feed

For a broader view of company activity:

curl -s "$BASE/api/company/NUMERIC_COMPANY_ID/updates?limit=10" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER"

The /updates endpoint requires a numeric company ID (from the company profile entityUrn), while /posts accepts the universal name string.

Step 5: Get Employees

Employee exports are async jobs:

# All employees
RESP=$(curl -s "$BASE/api/companies/notionhq/employees?limit=50" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER")
JOB_ID=$(echo "$RESP" | jq -r '.data.jobId')
# Filter by role
RESP=$(curl -s "$BASE/api/companies/notionhq/employees?limit=50&keywords=engineering" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER")

Poll the job for results:

curl -s "$BASE/api/jobs/$JOB_ID" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER"

Step 6: Find Specific Decision-Makers

Use people search with the company filter for targeted lookups:

curl -s "$BASE/api/search/people?company=Notion&keywords=Head+of+Engineering&count=5" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER"

Step 7: Batch Company Research

Research multiple companies at once:

# Batch company profiles (async job)
curl -s -X POST "$BASE/api/companies/read" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER" \
-H "Content-Type: application/json" \
-d '{"companies": [{"universalName": "stripe"}, {"universalName": "notionhq"}, {"universalName": "figma"}]}'
# Batch employee exports (async job)
curl -s -X POST "$BASE/api/companies/employees/read" \
-H "Authorization: Bearer $KEY" \
-H "X-User-Id: $USER" \
-H "Content-Type: application/json" \
-d '{"companies": [{"universalName": "stripe"}], "limit": 50, "keywords": "engineering"}'

Complete Research Script

export BASE=https://li.scaleabm.org
export KEY=voy_YOUR_API_KEY
export USER=your-username
COMPANY="notionhq"
# 1. Company profile
echo "--- Company Profile ---"
RESP=$(curl -s "$BASE/api/companies/$COMPANY" \
-H "Authorization: Bearer $KEY" -H "X-User-Id: $USER")
JOB_ID=$(echo "$RESP" | jq -r '.data.jobId')
sleep 5
curl -s "$BASE/api/jobs/$JOB_ID" \
-H "Authorization: Bearer $KEY" -H "X-User-Id: $USER" | jq '.data.job.result'
# 2. Recent posts
echo "--- Recent Posts ---"
curl -s "$BASE/api/company/$COMPANY/posts?count=5" \
-H "Authorization: Bearer $KEY" -H "X-User-Id: $USER" | jq '.data'
# 3. Engineering employees
echo "--- Engineering Team ---"
RESP=$(curl -s "$BASE/api/companies/$COMPANY/employees?limit=20&keywords=engineering" \
-H "Authorization: Bearer $KEY" -H "X-User-Id: $USER")
JOB_ID=$(echo "$RESP" | jq -r '.data.jobId')
sleep 10
curl -s "$BASE/api/jobs/$JOB_ID" \
-H "Authorization: Bearer $KEY" -H "X-User-Id: $USER" | jq '.data.job.result'
# 4. Leadership search
echo "--- Leadership ---"
curl -s "$BASE/api/search/people?company=Notion&keywords=VP+Director+Head&count=10" \
-H "Authorization: Bearer $KEY" -H "X-User-Id: $USER" | jq '.data.results[] | {name: .fullName, title: .headline}'

Error Handling

ScenarioResolution
Company returns 404Universal name may be incorrect — use search to find it
Employee export times outReduce limit or add keywords filter
Job stays pendingSome exports take 30-60 seconds for large companies

SalesNav Account Intelligence

If you have a SalesNav subscription, you get much richer company data:

# Account dossier -- competitive landscape, challenges, strengths
curl -s "$BASE/api/salesnav/companies/$COMPANY_ID/dossier" \
-H "Authorization: Bearer $KEY" -H "X-User-Id: $USER"
# Employee headcount trends (25 months of data)
curl -s "$BASE/api/salesnav/companies/$COMPANY_ID/insights" \
-H "Authorization: Bearer $KEY" -H "X-User-Id: $USER"
# Similar companies (prospect expansion)
curl -s "$BASE/api/salesnav/companies/$COMPANY_ID/similar" \
-H "Authorization: Bearer $KEY" -H "X-User-Id: $USER"
# Org chart / relationship map
curl -s "$BASE/api/salesnav/companies/$COMPANY_ID/relationship-map" \
-H "Authorization: Bearer $KEY" -H "X-User-Id: $USER"

The SalesNav company ID is numeric (e.g., 30583455), not the universal name. You can find it from search results or the SalesNav URL.

Full ABM Research Flow

1. Search companies → get universal name + SalesNav company ID
2. Get company profile → industry, size, description
3. Get dossier → competitive landscape, challenges (SalesNav)
4. Get employee insights → headcount growth trend (SalesNav)
5. Find similar companies → prospect expansion (SalesNav)
6. Search key employees → leadership, decision makers
7. Check relationship insights → warm paths to each person
8. Review their posts → what do they care about?
9. Craft personalized outreach based on signals