Skip to main content
Scrape Instagram profile data and engagement metrics for influencer research and brand monitoring.

canvas.instagram.profiles()

Get follower counts, engagement rates, and recent post data from Instagram profiles.
const profiles = await canvas.instagram.profiles({
  handles: ["nike", "adidas", "underarmour"],
  postsLimit: 10,
  fields: ["followers", "engagementRate", "avgLikes", "bio"],
});

// Find high engagement accounts
const highEngagement = profiles.filter(p => p.engagementRate > 3);

Parameters

handles
string[]
required
Instagram usernames (without @) to scrape.
postsLimit
number
default:"20"
Recent posts to analyze for engagement metrics (max 200).
fields
string[]
Fields to return. Defaults to all. Options: followers, following, postsCount, fullName, bio, verified, business, externalUrl, profileUrl, recentPostCaption, recentPostLikes, recentPostComments, recentPostDate, recentPostType, recentPostUrl, avgLikes, avgComments, engagementRate, totalScrapedPosts

Returns

FieldTypeDescription
handlestringInstagram username
followersnumberFollower count
followingnumberFollowing count
biostringBiography text
verifiedbooleanVerified badge
engagementRatenumberEngagement rate %
avgLikesnumberAverage likes per post
avgCommentsnumberAverage comments per post
recentPostCaptionstringLatest post caption
recentPostLikesnumberLatest post likes

Example: Influencer Research

Score and rank potential influencer partners:
const profiles = await canvas.instagram.profiles({
  handles: ["influencer1", "influencer2", "influencer3"],
  postsLimit: 20,
});

// Score by engagement and reach
for (const profile of profiles) {
  let score = 0;
  if (profile.engagementRate > 5) score += 40;
  else if (profile.engagementRate > 3) score += 25;
  
  if (profile.followers > 100000) score += 30;
  else if (profile.followers > 10000) score += 20;
  
  if (profile.verified) score += 15;
  
  profile.score = score;
}

return profiles.sort((a, b) => b.score - a.score);