Instagram Engagement Scraper avatar

Instagram Engagement Scraper

Pricing

from $40.00 / 1,000 processed usernames

Go to Apify Store
Instagram Engagement Scraper

Instagram Engagement Scraper

Turn any public Instagram username into ready-to-use creator insights: follower stats, feed and Reels engagement rates by views, average views, content mix, and coverage signals, one clean record per creator. Perfect for influencer vetting, campaign planning, and creator analytics at scale.

Pricing

from $40.00 / 1,000 processed usernames

Rating

0.0

(0)

Developer

SilentFlow

SilentFlow

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Share

Turn public Instagram usernames into engagement-ready creator insights. Profile, feed, and Reels performance in one clean record per creator, in seconds, not hours.

Give it a handle. Get back follower stats, real engagement rates measured the right way (feed by followers, Reels by views), the creator's content mix, and quality signals that tell you how much of the sample you can trust. No spreadsheets, no manual math, no exporting raw posts.

How it works

How it works

  1. You enter Instagram usernames. One or many, with or without the @.
  2. The scraper reads each public profile, recent feed posts, and Reels. Feed posts and Reels are measured separately, because mixing them into one number is meaningless.
  3. You get one structured record per creator, ready to export, sort, or feed into a dashboard.

โœจ Why teams choose this over other Instagram scrapers

Paying an influencer who looks big but converts nothing? Drowning in raw post exports you still have to crunch yourself? Comparing creators on numbers you do not fully trust?

  • ๐Ÿ’ฐ Pay per result, not per minute. No compute costs, proxies included. You pay for creators delivered, period.
  • ๐ŸŽฏ Engagement measured the right way. Feed posts are rated against followers, Reels against views. These are the correct denominators, so the rates actually mean something.
  • ๐Ÿงฎ Honest sample size. Each Reel is counted once, even though Instagram shows it in both the grid and the Reels tab. Other tools double-count it and inflate the numbers. Yours stay accurate.
  • ๐Ÿ“Š A deeper read on Reels. Up to 50 Reels and 75 feed posts sampled per creator, so the Reels engagement rate sits on real data, not a handful of clips.
  • ๐Ÿ” Know what you can trust. Coverage fields tell you exactly how much of the sample had usable view data before you cite a metric.
  • โš–๏ธ Compare any creator, any size. Interactions per 1,000 followers removes audience-size bias, so a 30K micro-creator and a 30M mega-creator sit on the same scale.
  • ๐Ÿงน One clean record per creator. Structured JSON that drops straight into a sheet, a dashboard, or an AI workflow.

๐ŸŽฏ What you can do with Instagram engagement data

TeamWhat they build
Influencer marketingVet creators on real engagement before sending a single outreach message
Brand / growthShortlist creators for a campaign and compare them on one consistent scorecard
AgenciesBuild client-ready creator reports without hand-pulling numbers from each profile
Talent managementTrack a roster's engagement trend over time and prove value to brands
Competitive researchWatch how rival brands' chosen creators perform and where their content skews
Data / RevOpsFeed standardized creator metrics into models, lead scores, or BI dashboards

๐Ÿ“ฅ Input parameters

FieldTypeRequiredDescription
usernamesarray of stringsYesOne or more public Instagram usernames. The @ is optional.

That is the whole input. One field, no setup.

{
"usernames": ["natgeo", "zachking", "nasa"]
}

๐Ÿ“Š Output data

One record per username. A successful creator returns three sections: creator, engagement, and coverage.

{
"creator": {
"id": "14805456",
"username": "zachking",
"fullName": "Zach King",
"followersCount": 29285783,
"followsCount": 412,
"verified": true,
"postsCount": 1300,
"profilePicUrl": "https://...",
"external_url": "https://youtu.be/..."
},
"engagement": {
"overall_interactions": 13620153,
"feed_avg_engagement": 0,
"feed_avg_engagement_rate_by_followers": 0,
"clips_avg_engagement": 272403.06,
"clips_avg_views": 10271482.4,
"clips_engagement_rate_by_views": 2.6521,
"avg_interactions_per_content": 272403.06,
"interactions_per_1k_followers": 465.06,
"posts_contribution_pct": 0,
"clips_contribution_pct": 100,
"engagement_skew_clips_over_feed": null
},
"coverage": {
"total_items": 50,
"feed_count": 0,
"clips_count": 50,
"feed_view_coverage": 0,
"clips_view_coverage": 1
}
}

If a username cannot be analyzed, you get a clear record instead of a silent gap:

{
"error": "private",
"message": "@example is private",
"next_reset": null,
"ran_at": "2026-06-21T04:41:31Z"
}

๐Ÿ—‚๏ธ Data fields

Creator

FieldWhat it tells you
usernameThe handle analyzed
fullNameDisplay name
verifiedWhether the account holds a verification badge
followersCountAudience size at run time
followsCountFollowing count, useful for follower-to-following ratio checks
postsCountTotal lifetime posts
profilePicUrlProfile picture URL
external_urlLink in bio, often a brand or personal site
idInstagram numeric account id

Engagement (all rates are percentages)

FieldWhat it tells you
overall_interactionsTotal likes plus comments across the sampled content
feed_avg_engagementAverage likes plus comments per feed post
feed_avg_engagement_rate_by_followersFeed engagement divided by followers, the industry-standard feed rate
clips_avg_engagementAverage likes plus comments per Reel
clips_avg_viewsAverage views per Reel
clips_engagement_rate_by_viewsReel engagement divided by views, the correct rate for Reels
avg_interactions_per_contentAverage interactions across all sampled content
interactions_per_1k_followersInteractions normalized per 1,000 followers, the best cross-creator comparison number
posts_contribution_pctShare of the sample made up of feed posts
clips_contribution_pctShare of the sample made up of Reels
engagement_skew_clips_over_feedReel engagement divided by feed engagement. Above 1 means Reels outperform feed

Coverage (data-quality signals)

FieldWhat it tells you
total_itemsUnique content pieces analyzed (feed plus Reels)
feed_countFeed posts analyzed
clips_countReels analyzed
feed_view_coverageShare of feed posts with usable view data. Often 0, which is normal for feed
clips_view_coverageShare of Reels with usable view data. 1 means full coverage

๐Ÿš€ Examples

Analyze one creator

{ "usernames": ["natgeo"] }

Score a shortlist for a campaign

{ "usernames": ["zachking", "natgeo", "nasa", "9gag"] }

Compare two competitors' brand creators

{ "usernames": ["nike", "adidas"] }

Check a micro-creator before outreach

{ "usernames": ["your_target_creator"] }

Batch a full vetting list

{ "usernames": ["creator1", "creator2", "creator3", "creator4", "creator5", "creator6"] }

๐Ÿค– Copy to your AI assistant

Paste this block into Claude, ChatGPT, or Cursor to give it full context about this scraper:

You have access to the Instagram Engagement Scraper on Apify: silentflow/instagram-engagement-scraper
Input schema:
- usernames (required, array of strings): public Instagram handles, @ optional
Output per creator (one record each), grouped in three objects:
creator: id, username, fullName, followersCount, followsCount, verified, postsCount, profilePicUrl, external_url
engagement (rates are percentages): overall_interactions, feed_avg_engagement, feed_avg_engagement_rate_by_followers, clips_avg_engagement, clips_avg_views, clips_engagement_rate_by_views, avg_interactions_per_content, interactions_per_1k_followers, posts_contribution_pct, clips_contribution_pct, engagement_skew_clips_over_feed
coverage: total_items, feed_count, clips_count, feed_view_coverage, clips_view_coverage
A username that cannot be analyzed returns: error, message, next_reset, ran_at.
Pay per result, proxies included. Use apify-client for Python or JavaScript.

๐Ÿ’ป Integrations

Build a creator vetting list in Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("silentflow/instagram-engagement-scraper").call(
run_input={"usernames": ["zachking", "natgeo", "nasa"]}
)
rows = []
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if "creator" not in item:
continue
c, e = item["creator"], item["engagement"]
rows.append((c["username"], c["followersCount"], e["interactions_per_1k_followers"]))
# Rank creators by engagement per 1,000 followers
rows.sort(key=lambda r: r[2], reverse=True)
for username, followers, score in rows:
print(f"{username:20} {followers:>12,} {score:>8.1f} / 1k")

Flag Reels-first creators in JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('silentflow/instagram-engagement-scraper').call({
usernames: ['zachking', 'natgeo'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const item of items) {
if (!item.creator) continue;
const skew = item.engagement.engagement_skew_clips_over_feed;
const verdict = skew && skew > 1.5 ? 'Reels-first' : 'feed-first or mixed';
console.log(`${item.creator.username}: ${verdict}`);
}

Export to CSV for the team

import csv
from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("silentflow/instagram-engagement-scraper").call(
run_input={"usernames": ["nike", "adidas", "puma"]}
)
with open("creators.csv", "w", newline="") as f:
writer = csv.writer(f)
writer.writerow(["username", "followers", "clips_ER_by_views", "interactions_per_1k"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
if "creator" not in item:
continue
c, e = item["creator"], item["engagement"]
writer.writerow([c["username"], c["followersCount"],
e["clips_engagement_rate_by_views"], e["interactions_per_1k_followers"]])

๐Ÿ“ˆ Performance

MetricValue
OutputOne record per username
Sample depthUp to 75 feed posts and 50 Reels per creator
Typical speedMost creators process in under a minute
ReliabilityHigh, proxies included
Input sizeFrom one username to a large batch

๐Ÿ’พ Data export

Results land in an Apify dataset. Export from the dataset tab as JSON, CSV, Excel, XML, or HTML, or pull them programmatically:

https://api.apify.com/v2/datasets/{DATASET_ID}/items?format=csv&token=YOUR_TOKEN

๐Ÿ’ก Tips for best results

  • Benchmark by creator tier. Typical feed engagement rates: Nano under 10K followers 3 to 6 percent, Micro 10K to 100K 1 to 3 percent, Macro 100K to 1M 0.5 to 1.5 percent, Mega 1M and up 0.1 to 0.5 percent. A rate well below the range can signal an inflated or passive audience.
  • For Reels, read clips_engagement_rate_by_views. Above 2 percent is generally strong. Check clips_view_coverage first; a low value means the rate sits on fewer Reels and deserves more caution.
  • Use interactions_per_1k_followers to compare across sizes. It removes the audience-size advantage, so creators of any size line up fairly.
  • Watch engagement_skew_clips_over_feed. Above 2 means a Reels-dominant creator, below 0.8 means feed-first. Brief them for the format they win at.
  • Send your highest-priority handles first when running a long list, so the creators you care about most come back at the top.

โ“ FAQ

What exactly does this scraper return? A profile snapshot, feed and Reels engagement metrics computed separately, aggregate volume and per-1k-follower numbers, the creator's content mix, and coverage-quality signals. One record per username.

Do I need an Instagram account or login? No. It reads publicly available profile and post data. No login, no API key.

How are feed and Reels measured differently? Feed engagement is rated against followers (the standard for grid posts). Reels are rated against views, because views are how Reels are distributed. Combining them into a single rate produces a meaningless number, so they are kept separate.

Why is my feed_view_coverage zero? That is expected. Instagram does not consistently expose view counts on feed posts, so the feed view coverage is usually zero. It does not affect the like-and-comment based feed metrics.

How many posts does it look at? Up to 75 recent feed posts and 50 recent Reels per creator. Metrics reflect this recent sample, not the account's entire history.

Can it analyze private accounts? No. Private accounts are not public, so they return a clear private record instead of metrics.

Can I analyze many creators at once? Yes. Pass a list of usernames and you get one record per creator. You only pay for usernames that are successfully processed.

Why might a creator show zero feed posts? Some creators post almost entirely Reels. When their recent content is all Reels, feed_count is zero and clips_count carries the sample. The content-mix fields make this visible.

Is the sample size accurate if a creator posts the same Reel to the grid and the Reels tab? Yes. Each piece of content is counted once. The same Reel appearing in both places is de-duplicated, so total_items reflects unique content.

This Actor extracts publicly available data from Instagram. It does not bypass any login, paywall, or CAPTCHA, and it does not access private accounts. Users are responsible for complying with Instagram's terms of service and applicable laws in their jurisdiction. The data returned is informational; verify accuracy for regulated use cases.

๐Ÿ“ฌ Support

Need something this scraper does not do yet? We ship features fast.

  • Feature requests go straight to our backlog
  • Enterprise needs? We handle custom integrations and high-volume plans
  • Pricing questions? Check the Monetization tab on the actor page

Check out our other scrapers: silentflow on Apify