Skip to main content
Access LinkedIn profile data, posts, and engagement signals for social selling and research.
MethodDescription
canvas.linkedin.profiles()Scrape profile data from LinkedIn URLs
canvas.linkedin.posts()Get recent posts from profiles
canvas.linkedin.findUrls()Find LinkedIn URLs by name + company
canvas.linkedin.reactions()Get people who reacted to posts

canvas.linkedin.profiles()

Scrape detailed profile information from LinkedIn profile URLs.
const profiles = await canvas.linkedin.profiles({
  urls: ["https://linkedin.com/in/johndoe"],
  fields: ["headline", "jobTitle", "companyName", "topSkills"],
});

Parameters

urls
string[]
required
LinkedIn profile URLs to scrape.
fields
string[]
Fields to return. Defaults to all.

Returns

FieldTypeDescription
fullNamestringFull name
headlinestringProfile headline
aboutstringAbout section
jobTitlestringCurrent job title
companyNamestringCurrent company
companyIndustrystringCompany industry
companyWebsitestringCompany website
companySizestringCompany size
connectionsnumberConnection count
followersnumberFollower count
emailstringEmail (if public)
mobileNumberstringPhone (if public)
topSkillsstring[]Top skills
countrystringCountry
educationobject[]Education history

canvas.linkedin.posts()

Get recent posts from LinkedIn profiles.
const posts = await canvas.linkedin.posts({
  urls: profiles.map(p => p.linkedinUrl),
  postsPerProfile: 5,
  includeComments: true,
});

Parameters

urls
string[]
required
LinkedIn profile URLs to get posts from.
postsPerProfile
number
default:"20"
Posts to fetch per profile (max 100).
includeReposts
boolean
default:"false"
Include reposts/shares.
includeComments
boolean
default:"false"
Include top 10 comments per post.

Returns

FieldTypeDescription
postTextstringPost content
postLinkstringDirect link to post
postedAgostringWhen posted
numLikesnumberLike count
numCommentsnumberComment count
numSharesnumberShare count
isRepostbooleanWhether it’s a repost

canvas.linkedin.findUrls()

Find LinkedIn profile URLs for people by name and company using Fiber AI.
const withUrls = await canvas.linkedin.findUrls({
  people: contacts.map(c => ({
    firstName: c.first_name,
    lastName: c.last_name,
    company: c.company,
  })),
});

// Filter by confidence
const highConfidence = withUrls.filter(p => (p.confidence ?? 0) > 0.8);

Parameters

people
object[]
required
People to find URLs for. Each needs firstName, lastName, and company.

Returns

FieldTypeDescription
firstNamestringFirst name (from input)
lastNamestringLast name (from input)
companystringCompany name (from input)
linkedinUrlstringFound LinkedIn profile URL
confidencenumberMatch confidence score (0-1)
errorstringError message if lookup failed

canvas.linkedin.reactions()

Get people who reacted to LinkedIn posts. Great for finding engaged prospects.
const reactors = await canvas.linkedin.reactions({
  postUrls: ["https://linkedin.com/posts/competitor_announcement-123456"],
  reactionTypes: ["LIKE", "CELEBRATE"],
  limit: 100,
});

// Enrich these engaged prospects
const contacts = await canvas.contacts.enrich({ people: reactors });

Parameters

postUrls
string[]
required
LinkedIn post URLs to get reactions from.
reactionTypes
string[]
Filter by reaction type. Options: LIKE, CELEBRATE, SUPPORT, LOVE, INSIGHTFUL, FUNNY. Defaults to all types.
limit
number
default:"100"
Max total reactions to return.

Returns

FieldTypeDescription
fullNamestringPerson’s full name
profileUrlstringLinkedIn profile URL
headlinestringProfile headline
reactionTypestringType of reaction
jobTitlestringCurrent job title
companyNamestringCurrent company

Example: Content-Based Lead Gen

Find prospects who engage with competitor or industry content:
// Get posts from industry influencers
const posts = await canvas.linkedin.posts({
  urls: ["https://linkedin.com/in/industry-leader"],
  postsPerProfile: 10,
});

// Get reactors from top posts
const topPosts = posts.filter(p => p.numLikes > 100).slice(0, 3);

const allReactors = [];
for (const post of topPosts) {
  const reactors = await canvas.linkedin.reactions({
    postUrls: [post.postLink],
    limit: 50,
  });
  allReactors.push(...reactors);
}

// Dedupe by profile URL and return
const unique = [...new Map(allReactors.map(r => [r.profileUrl, r])).values()];
return unique;