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

canvas.instagram.profiles()

Get follower counts and recent post data from Instagram profiles.
const profiles = await canvas.instagram.profiles({
  usernames: ["nike", "adidas", "underarmour"],
  postsLimit: 10,
  fields: ["followersCount", "bio", "posts"],
});

// Find accounts with high follower counts
const popular = profiles.filter(p => (p.followersCount ?? 0) > 100000);

Parameters

usernames
string[]
required
Instagram usernames (without @) to scrape.
postsLimit
number
default:"20"
Number of recent posts to fetch per profile (max 200).
fields
string[]
Fields to return. Defaults to all. Options: username, fullName, bio, followersCount, followingCount, postsCount, profilePicUrl, isVerified, posts

Returns

FieldTypeDescription
usernamestringInstagram username
fullNamestringDisplay name
biostringBiography text
followersCountnumberFollower count
followingCountnumberFollowing count
postsCountnumberTotal posts
profilePicUrlstringProfile picture URL
isVerifiedbooleanVerified badge
postsInstagramPost[]Recent posts array

InstagramPost

Each post in the posts array contains:
FieldTypeDescription
idstringPost ID
captionstringPost caption
timestampstringWhen posted
likesCountnumberLike count
commentsCountnumberComment count
mediaTypestringIMAGE, VIDEO, or CAROUSEL
mediaUrlstringMedia URL
permalinkstringDirect link to post

Example: Influencer Research

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

// Score by reach and verification
for (const profile of profiles) {
  let score = 0;
  
  if ((profile.followersCount ?? 0) > 100000) score += 30;
  else if ((profile.followersCount ?? 0) > 10000) score += 20;
  
  if (profile.isVerified) score += 15;
  
  // Calculate avg engagement from posts
  if (profile.posts && profile.posts.length > 0) {
    const avgLikes = profile.posts.reduce((sum, p) => sum + (p.likesCount ?? 0), 0) / profile.posts.length;
    if (avgLikes > 5000) score += 25;
  }
  
  profile.score = score;
}

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