For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
DashboardGet API Key
GuidesAPI ReferenceCommon Patterns
  • Getting Started
    • Welcome
    • Introduction
    • Quickstart
    • Authentication
  • Core Concepts
    • Sessions & Cookies
    • Profiles
    • Messaging
    • Posts & Engagement
    • Connections
    • Search
    • SalesNav
    • SalesNav Filters
  • Playbooks
    • Multi-Step Workflows
    • Query Patterns
  • Workflow Guides
    • Lead Discovery
    • Warm Outreach
    • Content Intelligence
    • Company Research
    • Job Market Intelligence
    • Webhooks
  • Integration
    • MCP Server
    • WebSocket Relay
DashboardGet API Key
On this page
  • Company Research
  • Step 1: Find the Company
  • Step 2: Get Company Profile
  • Step 3: Get Company Posts
  • Step 4: Get Company Updates Feed
  • Step 5: Get Employees
  • Step 6: Find Specific Decision-Makers
  • Step 7: Batch Company Research
  • Complete Research Script
  • Error Handling
  • SalesNav Account Intelligence
  • Full ABM Research Flow
  • Related
Workflow Guides

Company Research

Was this page helpful?
Previous

Job Market Intelligence

Next
Built with

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

Related

  • SalesNav — Full SalesNav API reference
  • Search — Finding companies by keyword
  • Profiles — Getting full profiles for employees
  • Async Jobs — Polling job results
  • Batch Operations — Multi-company research